]> git.cworth.org Git - apitrace/commitdiff
Emit a warning when the window size cannot be inferred.
authorJosé Fonseca <jose.r.fonseca@gmail.com>
Tue, 25 Oct 2011 08:56:15 +0000 (09:56 +0100)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Tue, 25 Oct 2011 08:57:20 +0000 (09:57 +0100)
Issue 47.

glretrace.hpp
glretrace.py
glretrace_cgl.cpp
glretrace_glx.cpp
glretrace_main.cpp
glretrace_wgl.cpp

index 3a44f2c4fdb9dadb24885cbec492eeea203ca76f..b9d0f1a217a183d05207acbdc267bd116250aa5f 100644 (file)
@@ -68,7 +68,7 @@ extern const retrace::Entry glx_callbacks[];
 extern const retrace::Entry wgl_callbacks[];
 
 void snapshot(unsigned call_no);
-void frame_complete(unsigned call_no);
+void frame_complete(Trace::Call &call);
 
 void updateDrawable(int width, int height);
 
index e80fedbaf852565e2c7c820c92744f054b47094c..ea307a609f2fa400f302cce1ada087a9f859ca04 100644 (file)
@@ -209,7 +209,7 @@ class GlRetracer(Retracer):
             print '        glretrace::snapshot(call.no - 1);'
             print '    }'
         if function.name == 'glFrameTerminatorGREMEDY':
-            print '    glretrace::frame_complete(call.no);'
+            print '    glretrace::frame_complete(call);'
             return
 
         Retracer.retrace_function_body(self, function)
@@ -217,7 +217,7 @@ class GlRetracer(Retracer):
         # Post-snapshots
         if function.name in ('glFlush', 'glFinish'):
             print '    if (!glretrace::double_buffer) {'
-            print '        glretrace::frame_complete(call.no);'
+            print '        glretrace::frame_complete(call);'
             print '    }'
         if is_draw_array or is_draw_elements or is_misc_draw:
             print '    if (glretrace::snapshot_frequency == glretrace::FREQUENCY_DRAW) {'
index cfa9d20097757d12389960733c4fe5c63357bc56..d5238a8a7ec2e841045510cf694aa3cfb0a984f2 100644 (file)
@@ -107,7 +107,7 @@ static void retrace_CGLFlushDrawable(Trace::Call &call) {
             glFlush();
         }
 
-        frame_complete(call.no);
+        frame_complete(call);
     }
 }
 
index 8e2e4692afb33fc3eaadb296859e7d9108661811..7f635ee8dd321974fb361054af4040b035106d88 100644 (file)
@@ -95,7 +95,7 @@ static void retrace_glXMakeCurrent(Trace::Call &call) {
     if (drawable && context) {
         glFlush();
         if (!double_buffer) {
-            frame_complete(call.no);
+            frame_complete(call);
         }
     }
 
@@ -122,7 +122,7 @@ static void retrace_glXDestroyContext(Trace::Call &call) {
 }
 
 static void retrace_glXSwapBuffers(Trace::Call &call) {
-    frame_complete(call.no);
+    frame_complete(call);
     if (double_buffer) {
         drawable->swapBuffers();
     } else {
@@ -149,7 +149,7 @@ static void retrace_glXMakeContextCurrent(Trace::Call &call) {
     if (drawable && context) {
         glFlush();
         if (!double_buffer) {
-            frame_complete(call.no);
+            frame_complete(call);
         }
     }
 
index 4e4b8aee8da4cbf942dc4ac8ca1dd3ddb6805d2d..89ead9d5261b37d8a0658031b422f796c0e68d30 100644 (file)
@@ -110,7 +110,8 @@ updateDrawable(int width, int height) {
         return;
     }
 
-    if (width  <= glretrace::drawable->width &&
+    if (drawable->visible &&
+        width  <= glretrace::drawable->width &&
         height <= glretrace::drawable->height) {
         return;
     }
@@ -178,12 +179,20 @@ void snapshot(unsigned call_no) {
 }
 
 
-void frame_complete(unsigned call_no) {
+void frame_complete(Trace::Call &call) {
     ++frame;
 
+    if (!drawable) {
+        return;
+    }
+
+    if (!drawable->visible) {
+        retrace::warning(call) << "could not infer drawable size (glViewport never called)\n";
+    }
+
     if (snapshot_frequency == FREQUENCY_FRAME ||
         snapshot_frequency == FREQUENCY_FRAMEBUFFER) {
-        snapshot(call_no);
+        snapshot(call.no);
     }
 }
 
index 8f6a6243431673aa41dcf9c6ae9a104fff320ec1..34b48d013ccda904d2938b0dab52306f24880d00 100644 (file)
@@ -67,7 +67,7 @@ static void retrace_wglMakeCurrent(Trace::Call &call) {
     if (drawable && context) {
         glFlush();
         if (!double_buffer) {
-            frame_complete(call.no);
+            frame_complete(call);
         }
     }
     
@@ -98,7 +98,7 @@ static void retrace_wglSetPixelFormat(Trace::Call &call) {
 }
 
 static void retrace_wglSwapBuffers(Trace::Call &call) {
-    frame_complete(call.no);
+    frame_complete(call);
     if (double_buffer) {
         drawable->swapBuffers();
     } else {