]> git.cworth.org Git - apitrace/blobdiff - glretrace_glx.cpp
Move tracers to wrappers subdirectory.
[apitrace] / glretrace_glx.cpp
index 1cfd591c171e71c5d20ba9caf78daab5f1dddeb3..7342908a7cd93f73a63668c783e1097544c55cd6 100644 (file)
@@ -47,7 +47,7 @@ getDrawable(unsigned long drawable_id) {
     DrawableMap::const_iterator it;
     it = drawable_map.find(drawable_id);
     if (it == drawable_map.end()) {
-        return (drawable_map[drawable_id] = ws->createDrawable(visual));
+        return (drawable_map[drawable_id] = glws::createDrawable(visual[glretrace::defaultProfile]));
     }
 
     return it->second;
@@ -62,29 +62,29 @@ getContext(unsigned long long context_ptr) {
     ContextMap::const_iterator it;
     it = context_map.find(context_ptr);
     if (it == context_map.end()) {
-        return (context_map[context_ptr] = ws->createContext(visual, NULL));
+        return (context_map[context_ptr] = glws::createContext(visual[glretrace::defaultProfile], NULL, glretrace::defaultProfile));
     }
 
     return it->second;
 }
 
-static void retrace_glXCreateContext(Trace::Call &call) {
+static void retrace_glXCreateContext(trace::Call &call) {
     unsigned long long orig_context = call.ret->toUIntPtr();
     glws::Context *share_context = getContext(call.arg(2).toUIntPtr());
 
-    glws::Context *context = ws->createContext(glretrace::visual, share_context);
+    glws::Context *context = glws::createContext(glretrace::visual[glretrace::defaultProfile], share_context, glretrace::defaultProfile);
     context_map[orig_context] = context;
 }
 
-static void retrace_glXCreateContextAttribsARB(Trace::Call &call) {
+static void retrace_glXCreateContextAttribsARB(trace::Call &call) {
     unsigned long long orig_context = call.ret->toUIntPtr();
     glws::Context *share_context = getContext(call.arg(2).toUIntPtr());
 
-    glws::Context *context = ws->createContext(glretrace::visual, share_context);
+    glws::Context *context = glws::createContext(glretrace::visual[glretrace::defaultProfile], share_context, glretrace::defaultProfile);
     context_map[orig_context] = context;
 }
 
-static void retrace_glXMakeCurrent(Trace::Call &call) {
+static void retrace_glXMakeCurrent(trace::Call &call) {
     glws::Drawable *new_drawable = getDrawable(call.arg(1).toUInt());
     glws::Context *new_context = getContext(call.arg(2).toUIntPtr());
 
@@ -95,11 +95,11 @@ static void retrace_glXMakeCurrent(Trace::Call &call) {
     if (drawable && context) {
         glFlush();
         if (!double_buffer) {
-            frame_complete(call.no);
+            frame_complete(call);
         }
     }
 
-    bool result = ws->makeCurrent(new_drawable, new_context);
+    bool result = glws::makeCurrent(new_drawable, new_context);
 
     if (new_drawable && new_context && result) {
         drawable = new_drawable;
@@ -110,8 +110,19 @@ static void retrace_glXMakeCurrent(Trace::Call &call) {
     }
 }
 
-static void retrace_glXSwapBuffers(Trace::Call &call) {
-    frame_complete(call.no);
+
+static void retrace_glXDestroyContext(trace::Call &call) {
+    glws::Context *context = getContext(call.arg(1).toUIntPtr());
+
+    if (!context) {
+        return;
+    }
+
+    delete context;
+}
+
+static void retrace_glXSwapBuffers(trace::Call &call) {
+    frame_complete(call);
     if (double_buffer) {
         drawable->swapBuffers();
     } else {
@@ -119,15 +130,15 @@ static void retrace_glXSwapBuffers(Trace::Call &call) {
     }
 }
 
-static void retrace_glXCreateNewContext(Trace::Call &call) {
+static void retrace_glXCreateNewContext(trace::Call &call) {
     unsigned long long orig_context = call.ret->toUIntPtr();
     glws::Context *share_context = getContext(call.arg(3).toUIntPtr());
 
-    glws::Context *context = ws->createContext(glretrace::visual, share_context);
+    glws::Context *context = glws::createContext(glretrace::visual[glretrace::defaultProfile], share_context, glretrace::defaultProfile);
     context_map[orig_context] = context;
 }
 
-static void retrace_glXMakeContextCurrent(Trace::Call &call) {
+static void retrace_glXMakeContextCurrent(trace::Call &call) {
     glws::Drawable *new_drawable = getDrawable(call.arg(1).toUInt());
     glws::Context *new_context = getContext(call.arg(3).toUIntPtr());
 
@@ -138,11 +149,11 @@ static void retrace_glXMakeContextCurrent(Trace::Call &call) {
     if (drawable && context) {
         glFlush();
         if (!double_buffer) {
-            frame_complete(call.no);
+            frame_complete(call);
         }
     }
 
-    bool result = ws->makeCurrent(new_drawable, new_context);
+    bool result = glws::makeCurrent(new_drawable, new_context);
 
     if (new_drawable && new_context && result) {
         drawable = new_drawable;
@@ -153,7 +164,7 @@ static void retrace_glXMakeContextCurrent(Trace::Call &call) {
     }
 }
 
-static const retrace::Entry callbacks[] = {
+const retrace::Entry glretrace::glx_callbacks[] = {
     //{"glXBindChannelToWindowSGIX", &retrace_glXBindChannelToWindowSGIX},
     //{"glXBindSwapBarrierNV", &retrace_glXBindSwapBarrierNV},
     //{"glXBindSwapBarrierSGIX", &retrace_glXBindSwapBarrierSGIX},
@@ -177,7 +188,7 @@ static const retrace::Entry callbacks[] = {
     //{"glXCreatePixmap", &retrace_glXCreatePixmap},
     //{"glXCreateWindow", &retrace_glXCreateWindow},
     //{"glXCushionSGI", &retrace_glXCushionSGI},
-    //{"glXDestroyContext", &retrace_glXDestroyContext},
+    {"glXDestroyContext", &retrace_glXDestroyContext},
     //{"glXDestroyGLXPbufferSGIX", &retrace_glXDestroyGLXPbufferSGIX},
     //{"glXDestroyGLXPixmap", &retrace_glXDestroyGLXPixmap},
     //{"glXDestroyPbuffer", &retrace_glXDestroyPbuffer},
@@ -236,17 +247,14 @@ static const retrace::Entry callbacks[] = {
     //{"glXSet3DfxModeMESA", &retrace_glXSet3DfxModeMESA},
     //{"glXSwapBuffersMscOML", &retrace_glXSwapBuffersMscOML},
     {"glXSwapBuffers", &retrace_glXSwapBuffers},
-    //{"glXSwapIntervalEXT", &retrace_glXSwapIntervalEXT},
-    //{"glXSwapIntervalSGI", &retrace_glXSwapIntervalSGI},
+    {"glXSwapIntervalEXT", &retrace::ignore},
+    {"glXSwapIntervalSGI", &retrace::ignore},
     //{"glXUseXFont", &retrace_glXUseXFont},
     {"glXWaitForMscOML", &retrace::ignore},
     {"glXWaitForSbcOML", &retrace::ignore},
     {"glXWaitGL", &retrace::ignore},
     {"glXWaitVideoSyncSGI", &retrace::ignore},
     {"glXWaitX", &retrace::ignore},
+    {NULL, NULL},
 };
 
-void glretrace::retrace_call_glx(Trace::Call &call) {
-    retrace::dispatch(call, callbacks, sizeof(callbacks)/sizeof(callbacks[0]));
-}
-