changeset 25933:9b395b94d6a7

Hack: Create a child window for Windows OpenGL with -wid, since (esp. nVidia) drivers have problems drawing in other processes' windows.
author reimar
date Sat, 09 Feb 2008 14:14:35 +0000
parents f85dc2a992c3
children f0e227951c06
files libvo/w32_common.c
diffstat 1 files changed, 10 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/libvo/w32_common.c	Sat Feb 09 13:13:02 2008 +0000
+++ b/libvo/w32_common.c	Sat Feb 09 14:14:35 2008 +0000
@@ -156,11 +156,9 @@
     }
     if (WinID >= 0) {
         RECT r;
-        GetClientRect(vo_window, &r);
+        GetClientRect(WinID, &r);
         if (r.right != vo_dwidth || r.bottom != vo_dheight)
-            event_flags |= VO_EVENT_RESIZE;
-        vo_dwidth = r.right;
-        vo_dheight = r.bottom;
+            MoveWindow(vo_window, 0, 0, r.right, r.bottom, FALSE);
     }
     
     return event_flags;
@@ -372,8 +370,14 @@
   }
 
     if (WinID >= 0)
-      vo_window = (HWND)WinID;
-    else {
+    {
+        RECT r;
+        GetClientRect(WinID, &r);
+        vo_dwidth = r.right; vo_dheight = r.bottom;
+        vo_window = CreateWindowEx(0, classname, classname,
+                     WS_CHILD | WS_VISIBLE,
+                     0, 0, vo_dwidth, vo_dheight, WinID, 0, hInstance, 0);
+    } else
     vo_window = CreateWindowEx(0, classname, classname,
                   vo_border ? (WS_OVERLAPPEDWINDOW | WS_SIZEBOX) : WS_POPUP,
                   CW_USEDEFAULT, 0, 100, 100, 0, 0, hInstance, 0);
@@ -381,7 +385,6 @@
         mp_msg(MSGT_VO, MSGL_ERR, "vo: win32: unable to create window!\n");
         return 0;
     }
-    }
 
     myMonitorFromWindow = NULL;
     myGetMonitorInfo = NULL;
@@ -421,7 +424,6 @@
     resetMode();
     ShowCursor(1);
     vo_depthonscreen = 0;
-    if (WinID < 0)
     DestroyWindow(vo_window);
     vo_window = 0;
     UnregisterClass(classname, 0);