]> git.cworth.org Git - apitrace/blobdiff - glws_wgl.cpp
Use the process ID as process name when /proc/self/exe can't be read.
[apitrace] / glws_wgl.cpp
index bc4dd27132b97025945ff4edce94b94209ce105d..9e8f1e036432a81298b135004c835e790a1e773f 100644 (file)
@@ -61,8 +61,8 @@ public:
     PIXELFORMATDESCRIPTOR pfd;
     int iPixelFormat;
 
-    WglDrawable(const Visual *vis) :
-        Drawable(vis)
+    WglDrawable(const Visual *vis, int width, int height) :
+        Drawable(vis, width, height)
     {
         static bool first = TRUE;
         RECT rect;
@@ -81,9 +81,9 @@ public:
         }
 
         dwExStyle = 0;
-        dwStyle = WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_VISIBLE | WS_OVERLAPPEDWINDOW;
+        dwStyle = WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW;
 
-        int x = 0, y = 0, width = 256, height = 256;
+        int x = 0, y = 0;
 
         rect.left = x;
         rect.top = y;
@@ -107,10 +107,11 @@ public:
         hDC = GetDC(hWnd);
    
         memset(&pfd, 0, sizeof pfd);
-        pfd.cColorBits = 3;
+        pfd.cColorBits = 4;
         pfd.cRedBits = 1;
         pfd.cGreenBits = 1;
         pfd.cBlueBits = 1;
+        pfd.cAlphaBits = 1;
         pfd.cDepthBits = 1;
         pfd.cStencilBits = 1;
         pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL;
@@ -134,7 +135,7 @@ public:
     }
     
     void
-    resize(unsigned w, unsigned h) {
+    resize(int w, int h) {
         Drawable::resize(w, h);
         RECT rClient, rWindow;
         GetClientRect(hWnd, &rClient);
@@ -144,6 +145,14 @@ public:
         SetWindowPos(hWnd, NULL, rWindow.left, rWindow.top, w, h, SWP_NOMOVE);
     }
 
+    void show(void) {
+        if (!visible) {
+            ShowWindow(hWnd, SW_SHOW);
+
+            Drawable::show();
+        }
+    }
+
     void swapBuffers(void) {
         SwapBuffers(hDC);
     }
@@ -154,10 +163,12 @@ class WglContext : public Context
 {
 public:
     HGLRC hglrc;
-    
-    WglContext(const Visual *vis) :
+    WglContext *shareContext;
+
+    WglContext(const Visual *vis, WglContext *share) :
         Context(vis),
-        hglrc(0)
+        hglrc(0),
+        shareContext(share)
     {}
 
     ~WglContext() {
@@ -181,15 +192,15 @@ public:
     }
     
     Drawable *
-    createDrawable(const Visual *visual)
+    createDrawable(const Visual *visual, int width, int height)
     {
-        return new WglDrawable(visual);
+        return new WglDrawable(visual, width, height);
     }
 
     Context *
-    createContext(const Visual *visual)
+    createContext(const Visual *visual, Context *shareContext)
     {
-        return new WglContext(visual);
+        return new WglContext(visual, dynamic_cast<WglContext *>(shareContext));
     }
 
     bool
@@ -206,6 +217,10 @@ public:
                 if (!wglContext->hglrc) {
                     return false;
                 }
+                if (wglContext->shareContext) {
+                    wglShareLists(wglContext->shareContext->hglrc,
+                                  wglContext->hglrc);
+                }
             }
 
             return wglMakeCurrent(wglDrawable->hDC, wglContext->hglrc);