X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=glws_glx.cpp;h=95cdab078951eef107b8936d8a56fa34f3df58b4;hb=f562f318ddee6da2041696887e2195fc3c96d740;hp=62bbb06e74c77905686708d1f6c7da088b0d24da;hpb=9b36190d367a32d7d72234f763df23968f00b1e8;p=apitrace diff --git a/glws_glx.cpp b/glws_glx.cpp index 62bbb06..95cdab0 100644 --- a/glws_glx.cpp +++ b/glws_glx.cpp @@ -26,9 +26,12 @@ #include #include -#include "glimports.hpp" #include "glws.hpp" +#include +#include +#include + namespace glws { @@ -135,9 +138,6 @@ public: display, window, name, name, None, (char **)NULL, 0, &sizehints); - XMapWindow(display, window); - - waitForEvent(window, Expose); glXWaitX(); } @@ -158,11 +158,30 @@ public: XResizeWindow(display, window, w, h); + // Tell the window manager to respect the requested size + XSizeHints *size_hints; + size_hints = XAllocSizeHints(); + size_hints->max_width = size_hints->min_width = w; + size_hints->max_height = size_hints->min_height = h; + size_hints->flags = PMinSize | PMaxSize; + XSetWMNormalHints(display, window, size_hints); + XFree(size_hints); + waitForEvent(window, ConfigureNotify); glXWaitX(); } + void show(void) { + if (!visible) { + XMapWindow(display, window); + + waitForEvent(window, Expose); + + Drawable::show(); + } + } + void swapBuffers(void) { glXSwapBuffers(display, window); }