[Bug 17073] Star Trek Generations fails to display

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Nov 24 16:56:49 CST 2013


http://bugs.winehq.org/show_bug.cgi?id=17073

--- Comment #11 from AdeC <adec2010 at hotmail.co.uk> 2013-11-24 16:56:49 CST ---
I have found what changes were made to a version of wine that helps make this
game work.
If it's any help to anybody :)

--- dlls/wined3d/swapchain_gdi.c.1.2        2010-07-16 17:05:45.000000000 +0200
+++ dlls/wined3d/swapchain_gdi.c        2010-10-27 19:39:04.000000000 +0200
@@ -101,7 +101,7 @@ void x11_copy_to_screen(IWineD3DSwapChai

         hSurfaceDC = front->hDC;

-        hDisplayWnd = This->win_handle;
+        hDisplayWnd = GetDesktopWindow();
         hDisplayDC = GetDCEx(hDisplayWnd, 0, DCX_CLIPSIBLINGS|DCX_CACHE);
         if(rc) {
             TRACE(" copying rect (%d,%d)->(%d,%d), offset (%d,%d)\n",
--- dlls/ddraw/main.c.1.2        2010-07-16 17:05:45.000000000 +0200
+++ dlls/ddraw/main.c        2010-10-27 19:46:22.000000000 +0200
@@ -53,7 +53,7 @@ static typeof(WineDirect3DCreate) *pWine
 WINE_DEFAULT_DEBUG_CHANNEL(ddraw);

 /* The configured default surface */
-WINED3DSURFTYPE DefaultSurfaceType = SURFACE_UNKNOWN;
+WINED3DSURFTYPE DefaultSurfaceType = SURFACE_GDI;

 /* DDraw list and critical section */
 static struct list global_ddraw_list = LIST_INIT(global_ddraw_list);
@@ -766,6 +766,13 @@ static inline DWORD get_config_key(HKEY 
     return ERROR_FILE_NOT_FOUND;
 }

+void print_gdi_surface_warning()
+{
+    FIXME("This is a hacked ddraw defaulting to GDI even when opengl surfaces
would be used!\n");
+    FIXME("The normal way to default to GDI surfaces is to set
\"HKEY_CURRENT_USER\\Software\\Wine\\Direct3D\" to \"gdi\"\n");
+    FIXME("If that works for you then you shouldn't use this hack.\n");
+}
+
 /***********************************************************************
  * DllMain (DDRAW.0)
  *
@@ -839,14 +846,16 @@ DllMain(HINSTANCE hInstDLL,
                 }
                 else if (!strcmp(buffer,"opengl"))
                 {
-                    TRACE("Defaulting to opengl surfaces\n");
-                    DefaultSurfaceType = SURFACE_OPENGL;
+                    TRACE("Not defaulting to opengl surfaces, in spite of the
registry setting\n");
+                    print_gdi_surface_warning();
                 }
                 else
                 {
                     ERR("Unknown default surface type. Supported are:\n gdi,
opengl\n");
+                    print_gdi_surface_warning();
                 }
             }
+            print_gdi_surface_warning();
         }

         /* On Windows one can force the refresh rate that DirectDraw uses by
--- dlls/ddraw/ddraw.c.1.2        2010-07-16 17:05:45.000000000 +0200
+++ dlls/ddraw/ddraw.c        2010-10-27 19:48:54.000000000 +0200
@@ -479,7 +479,8 @@ IDirectDrawImpl_SetCooperativeLevel(IDir
             !(This->devicewindow) &&
             (hwnd != window) )
         {
-            HRESULT hr =
IWineD3DDevice_AcquireFocusWindow(This->wineD3DDevice, hwnd);
+            HRESULT hr =
IWineD3DDevice_AcquireFocusWindow(This->wineD3DDevice, GetDesktopWindow());
+            FIXME("This is a hacked ddraw drawing to the desktop window
instead of the window the app requested!\n");
             if (FAILED(hr))
             {
                 ERR("Failed to acquire focus window, hr %#x.\n", hr);

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list