]> git.cworth.org Git - apitrace/commitdiff
Don't show windows until they are first resized.
authorJosé Fonseca <jose.r.fonseca@gmail.com>
Fri, 20 May 2011 22:54:13 +0000 (23:54 +0100)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Fri, 20 May 2011 22:54:13 +0000 (23:54 +0100)
glretrace.py
glws.hpp
glws_glx.cpp
glws_wgl.cpp

index b497b443f5cfbbcba5d177c555776be8ae4cc1cc..979e0e1839650904e6b2d1faddc635563a2da91f 100644 (file)
@@ -142,6 +142,9 @@ class GlRetracer(Retracer):
             print '        if (drawable_width  > (int)glretrace::drawable->width ||'
             print '            drawable_height > (int)glretrace::drawable->height) {'
             print '            glretrace::drawable->resize(drawable_width, drawable_height);'
+            print '            if (!glretrace::drawable->visible) {'
+            print '                glretrace::drawable->show();'
+            print '            }'
             print '            glScissor(0, 0, drawable_width, drawable_height);'
             print '        }'
             print '    }'
index 3d3c83d4982bf2ea2a265ce90b1b7c52ec90008d..05654200f7d966d9f443b696a13c8ab8ffde68f6 100644 (file)
--- a/glws.hpp
+++ b/glws.hpp
@@ -53,11 +53,13 @@ public:
     const Visual *visual;
     int width;
     int height;
+    bool visible;
 
     Drawable(const Visual *vis, int w, int h) :
         visual(vis),
         width(w),
-        height(h)
+        height(h),
+        visible(false)
     {}
 
     virtual ~Drawable() {}
@@ -68,6 +70,11 @@ public:
         height = h;
     }
 
+    virtual void
+    show(void) {
+        visible = true;
+    }
+
     virtual void swapBuffers(void) = 0;
 };
 
index 564af90ee3e0ef61006b2a4c829b7b5b098eaaf9..30de2f45b8ba8fa0b1b3cbdcd009346a85504c4b 100644 (file)
@@ -138,9 +138,6 @@ public:
             display, window, name, name,
             None, (char **)NULL, 0, &sizehints);
 
-        XMapWindow(display, window);
-
-        waitForEvent(window, Expose);
         glXWaitX();
     }
 
@@ -175,6 +172,16 @@ public:
         glXWaitX();
     }
 
+    void show(void) {
+        if (!visible) {
+            XMapWindow(display, window);
+
+            waitForEvent(window, Expose);
+
+            Drawable::show();
+        }
+    }
+
     void swapBuffers(void) {
         glXSwapBuffers(display, window);
     }
index 94390da221f3b8b13eed1d74622da2d09cedb06d..9e8f1e036432a81298b135004c835e790a1e773f 100644 (file)
@@ -81,7 +81,7 @@ public:
         }
 
         dwExStyle = 0;
-        dwStyle = WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_VISIBLE | WS_OVERLAPPEDWINDOW;
+        dwStyle = WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW;
 
         int x = 0, y = 0;
 
@@ -145,6 +145,14 @@ public:
         SetWindowPos(hWnd, NULL, rWindow.left, rWindow.top, w, h, SWP_NOMOVE);
     }
 
+    void show(void) {
+        if (!visible) {
+            ShowWindow(hWnd, SW_SHOW);
+
+            Drawable::show();
+        }
+    }
+
     void swapBuffers(void) {
         SwapBuffers(hDC);
     }