]> git.cworth.org Git - apitrace/commitdiff
Don't show pbuffers in windows.
authorJosé Fonseca <jose.r.fonseca@gmail.com>
Mon, 22 Oct 2012 17:55:52 +0000 (18:55 +0100)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Thu, 25 Oct 2012 11:20:26 +0000 (12:20 +0100)
They are often very numerous, making it hard to see the final rendering.

retrace/glretrace.hpp
retrace/glretrace_glx.cpp
retrace/glretrace_wgl.cpp
retrace/glretrace_ws.cpp
retrace/glws.hpp
retrace/glws_cocoa.mm
retrace/glws_egl_xlib.cpp
retrace/glws_glx.cpp
retrace/glws_wgl.cpp

index 87ced60bf345f7bff893d51f92d4357735b718bc..6ee241d015e7abb709003f85014606244885800e 100644 (file)
@@ -78,6 +78,9 @@ createDrawable(glws::Profile profile);
 glws::Drawable *
 createDrawable(void);
 
+glws::Drawable *
+createPbuffer(int width, int height);
+
 Context *
 createContext(Context *shareContext, glws::Profile profile);
 
index cea892f54d97760d37b67932fd87bba257ca0d80..4ab3d676c189f4984fbc0bb1b6c329c4037e5d86 100644 (file)
@@ -139,11 +139,8 @@ static void retrace_glXCreatePbuffer(trace::Call &call) {
 
     unsigned long long orig_drawable = call.ret->toUInt();
 
-    glws::Drawable *drawable = glretrace::createDrawable();
+    glws::Drawable *drawable = glretrace::createPbuffer(width, height);
     
-    drawable->resize(width, height);
-    drawable->show();
-
     drawable_map[orig_drawable] = drawable;
 }
 
index 639f419218dd5f5bd41a34ccf1d1065af76b0234..8fc9fe667ace5f4cd16f2f8d6b1b4df5cb47fae5 100644 (file)
@@ -182,10 +182,7 @@ static void retrace_wglCreatePbufferARB(trace::Call &call) {
     int iHeight = call.arg(3).toUInt();
 
     unsigned long long orig_pbuffer = call.ret->toUIntPtr();
-    glws::Drawable *drawable = glretrace::createDrawable();
-
-    drawable->resize(iWidth, iHeight);
-    drawable->show();
+    glws::Drawable *drawable = glretrace::createPbuffer(iWidth, iHeight);
 
     pbuffer_map[orig_pbuffer] = drawable;
 }
index aeaadb77be0af415295df5ca39bfa1ef563d2c41..c49b47228c9bddf5d503851dd88e9e51186e8596 100644 (file)
@@ -68,9 +68,9 @@ getDefaultProfile(void)
 }
 
 
-glws::Drawable *
-createDrawable(glws::Profile profile) {
-    glws::Drawable *draw = glws::createDrawable(getVisual(profile));
+static glws::Drawable *
+createDrawableHelper(glws::Profile profile, int width = 32, int height = 32, bool pbuffer = false) {
+    glws::Drawable *draw = glws::createDrawable(getVisual(profile), width, height, pbuffer);
     if (!draw) {
         std::cerr << "error: failed to create OpenGL drawable\n";
         exit(1);
@@ -81,9 +81,21 @@ createDrawable(glws::Profile profile) {
 }
 
 
+glws::Drawable *
+createDrawable(glws::Profile profile) {
+    return createDrawableHelper(profile);
+}
+
+
 glws::Drawable *
 createDrawable(void) {
-    return glretrace::createDrawable(getDefaultProfile());
+    return createDrawable(getDefaultProfile());
+}
+
+
+glws::Drawable *
+createPbuffer(int width, int height) {
+    return createDrawableHelper(getDefaultProfile(), width, height, true);
 }
 
 
@@ -170,6 +182,10 @@ updateDrawable(int width, int height) {
     glws::Drawable *currentDrawable = currentContext->drawable;
     assert(currentDrawable);
 
+    if (currentDrawable->pbuffer) {
+        return;
+    }
+
     if (currentDrawable->visible &&
         width  <= currentDrawable->width &&
         height <= currentDrawable->height) {
index 9557c0c71b65eb0d792852b905a792e3879c08bf..c76e19321706a5c8a02fca80dfcce7774ad2ce6f 100644 (file)
@@ -31,6 +31,8 @@
 #define _GLWS_HPP_
 
 
+#include <assert.h>
+
 #include <vector>
 #include <set>
 #include <string>
@@ -100,12 +102,14 @@ public:
     const Visual *visual;
     int width;
     int height;
+    bool pbuffer;
     bool visible;
 
-    Drawable(const Visual *vis, int w, int h) :
+    Drawable(const Visual *vis, int w, int h, bool pb) :
         visual(vis),
         width(w),
         height(h),
+        pbuffer(pb),
         visible(false)
     {}
 
@@ -119,6 +123,7 @@ public:
 
     virtual void
     show(void) {
+        assert(!pbuffer);
         visible = true;
     }
 
@@ -157,7 +162,7 @@ Visual *
 createVisual(bool doubleBuffer = false, Profile profile = PROFILE_COMPAT);
 
 Drawable *
-createDrawable(const Visual *visual, int width = 32, int height = 32);
+createDrawable(const Visual *visual, int width, int height, bool pbuffer = false);
 
 Context *
 createContext(const Visual *visual, Context *shareContext = 0, Profile profile = PROFILE_COMPAT, bool debug = false);
index 5081d04ede5e6b75f62cb588c7bb400c65be4501..3dcbc0a1b135b87676ed6094146165ab09585bd9 100644 (file)
@@ -75,8 +75,8 @@ public:
     NSWindow *window;
     NSOpenGLContext *currentContext;
 
-    CocoaDrawable(const Visual *vis, int w, int h) :
-        Drawable(vis, w, h),
+    CocoaDrawable(const Visual *vis, int w, int h, bool pbuffer) :
+        Drawable(vis, w, h, pbuffer),
         currentContext(nil)
     {
         NSOpenGLPixelFormat *pixelFormat = static_cast<const CocoaVisual *>(visual)->pixelFormat;
@@ -215,9 +215,9 @@ createVisual(bool doubleBuffer, Profile profile) {
 }
 
 Drawable *
-createDrawable(const Visual *visual, int width, int height)
+createDrawable(const Visual *visual, int width, int height, bool pbuffer)
 {
-    return new CocoaDrawable(visual, width, height);
+    return new CocoaDrawable(visual, width, height, pbuffer);
 }
 
 Context *
index 58824c29b2b897765e0af4c8fe36753e907ef79e..5aacdfed2b5bea5c0b738b907711d936610a93f8 100644 (file)
@@ -92,8 +92,9 @@ public:
     EGLSurface surface;
     EGLint api;
 
-    EglDrawable(const Visual *vis, int w, int h) :
-        Drawable(vis, w, h), api(EGL_OPENGL_ES_API)
+    EglDrawable(const Visual *vis, int w, int h, bool pbuffer) :
+        Drawable(vis, w, h, pbuffer),
+        api(EGL_OPENGL_ES_API)
     {
         XVisualInfo *visinfo = static_cast<const EglVisual *>(visual)->visinfo;
 
@@ -393,9 +394,9 @@ createVisual(bool doubleBuffer, Profile profile) {
 }
 
 Drawable *
-createDrawable(const Visual *visual, int width, int height)
+createDrawable(const Visual *visual, int width, int height, bool pbuffer)
 {
-    return new EglDrawable(visual, width, height);
+    return new EglDrawable(visual, width, height, pbuffer);
 }
 
 Context *
index 575776e7cb3645c91b27bef8ecd268aa253f4dea..b6175304d29dd1ff8557027a8dab800d4f3373e0 100644 (file)
@@ -104,8 +104,8 @@ class GlxDrawable : public Drawable
 public:
     Window window;
 
-    GlxDrawable(const Visual *vis, int w, int h) :
-        Drawable(vis, w, h)
+    GlxDrawable(const Visual *vis, int w, int h, bool pbuffer) :
+        Drawable(vis, w, h, pbuffer)
     {
         XVisualInfo *visinfo = static_cast<const GlxVisual *>(visual)->visinfo;
 
@@ -313,9 +313,9 @@ createVisual(bool doubleBuffer, Profile profile) {
 }
 
 Drawable *
-createDrawable(const Visual *visual, int width, int height)
+createDrawable(const Visual *visual, int width, int height, bool pbuffer)
 {
-    return new GlxDrawable(visual, width, height);
+    return new GlxDrawable(visual, width, height, pbuffer);
 }
 
 Context *
index c6e4a3fb39b1935e3c29a2a806fdcf007250f211..b4fd922fc1412f0180b0d611ee8d00f3f13cb408 100644 (file)
@@ -100,8 +100,8 @@ public:
     PIXELFORMATDESCRIPTOR pfd;
     int iPixelFormat;
 
-    WglDrawable(const Visual *vis, int width, int height) :
-        Drawable(vis, width, height)
+    WglDrawable(const Visual *vis, int width, int height, bool pbuffer) :
+        Drawable(vis, width, height, pbuffer)
     {
         static bool first = TRUE;
         RECT rect;
@@ -287,9 +287,9 @@ createVisual(bool doubleBuffer, Profile profile) {
 }
 
 Drawable *
-createDrawable(const Visual *visual, int width, int height)
+createDrawable(const Visual *visual, int width, int height, bool pbuffer)
 {
-    return new WglDrawable(visual, width, height);
+    return new WglDrawable(visual, width, height, pbuffer);
 }
 
 Context *