}
static void retrace_wglSwapBuffers(trace::Call &call) {
+ glws::Drawable *drawable = getDrawable(call.arg(0).toUIntPtr());
+
frame_complete(call);
if (retrace::doubleBuffer) {
- currentDrawable->swapBuffers();
+ if (drawable) {
+ drawable->swapBuffers();
+ } else if (currentContext) {
+ currentContext->drawable->swapBuffers();
+ }
} else {
glFlush();
}
Context *new_context = glretrace::createContext(share_context);
if (new_context) {
if (currentContext == old_context) {
- glretrace::makeCurrent(call, currentDrawable, new_context);
+ glretrace::makeCurrent(call, currentContext->drawable, new_context);
}
context_map[hglrc2] = new_context;