From: José Fonseca Date: Tue, 25 Oct 2011 08:56:15 +0000 (+0100) Subject: Emit a warning when the window size cannot be inferred. X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=4c86574b8c9f589be08ec544db5250544dc9e287;p=apitrace Emit a warning when the window size cannot be inferred. Issue 47. --- diff --git a/glretrace.hpp b/glretrace.hpp index 3a44f2c..b9d0f1a 100644 --- a/glretrace.hpp +++ b/glretrace.hpp @@ -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); diff --git a/glretrace.py b/glretrace.py index e80fedb..ea307a6 100644 --- a/glretrace.py +++ b/glretrace.py @@ -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) {' diff --git a/glretrace_cgl.cpp b/glretrace_cgl.cpp index cfa9d20..d5238a8 100644 --- a/glretrace_cgl.cpp +++ b/glretrace_cgl.cpp @@ -107,7 +107,7 @@ static void retrace_CGLFlushDrawable(Trace::Call &call) { glFlush(); } - frame_complete(call.no); + frame_complete(call); } } diff --git a/glretrace_glx.cpp b/glretrace_glx.cpp index 8e2e469..7f635ee 100644 --- a/glretrace_glx.cpp +++ b/glretrace_glx.cpp @@ -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); } } diff --git a/glretrace_main.cpp b/glretrace_main.cpp index 4e4b8ae..89ead9d 100644 --- a/glretrace_main.cpp +++ b/glretrace_main.cpp @@ -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); } } diff --git a/glretrace_wgl.cpp b/glretrace_wgl.cpp index 8f6a624..34b48d0 100644 --- a/glretrace_wgl.cpp +++ b/glretrace_wgl.cpp @@ -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 {