Issue 47.
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);
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)
# 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) {'
glFlush();
}
- frame_complete(call.no);
+ frame_complete(call);
}
}
if (drawable && context) {
glFlush();
if (!double_buffer) {
- frame_complete(call.no);
+ frame_complete(call);
}
}
}
static void retrace_glXSwapBuffers(Trace::Call &call) {
- frame_complete(call.no);
+ frame_complete(call);
if (double_buffer) {
drawable->swapBuffers();
} else {
if (drawable && context) {
glFlush();
if (!double_buffer) {
- frame_complete(call.no);
+ frame_complete(call);
}
}
return;
}
- if (width <= glretrace::drawable->width &&
+ if (drawable->visible &&
+ width <= glretrace::drawable->width &&
height <= glretrace::drawable->height) {
return;
}
}
-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);
}
}
if (drawable && context) {
glFlush();
if (!double_buffer) {
- frame_complete(call.no);
+ frame_complete(call);
}
}
}
static void retrace_wglSwapBuffers(Trace::Call &call) {
- frame_complete(call.no);
+ frame_complete(call);
if (double_buffer) {
drawable->swapBuffers();
} else {