]> git.cworth.org Git - apitrace/commitdiff
Retrace glXCreateNewContext & glXMakeContextCurrent.
authorJosé Fonseca <jose.r.fonseca@gmail.com>
Fri, 6 May 2011 19:42:49 +0000 (20:42 +0100)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Fri, 6 May 2011 19:42:49 +0000 (20:42 +0100)
glretrace_glx.cpp

index 682995e664517e2b601777de45beae97728a31f6..74022e769305e6f6deb7235831f6f2619a411da2 100644 (file)
@@ -169,9 +169,29 @@ static void retrace_glXQueryDrawable(Trace::Call &call) {
 }
 
 static void retrace_glXCreateNewContext(Trace::Call &call) {
+    retrace_glXCreateContext(call);
 }
 
 static void retrace_glXMakeContextCurrent(Trace::Call &call) {
+    if (drawable && context) {
+        glFlush();
+        if (!double_buffer) {
+            frame_complete(call.no);
+        }
+    }
+
+    glws::Drawable *new_drawable = getDrawable(static_cast<unsigned long>(call.arg(1)));
+    glws::Context *new_context = context_map[call.arg(3).toPointer()];
+
+    bool result = ws->makeCurrent(new_drawable, new_context);
+
+    if (new_drawable && new_context && result) {
+        drawable = new_drawable;
+        context = new_context;
+    } else {
+        drawable = NULL;
+        context = NULL;
+    }
 }
 
 static void retrace_glXGetCurrentReadDrawable(Trace::Call &call) {