Roderick Colenbrander : wined3d: Pass the proper DeviceName to ChangeDisplaySettings.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Aug 14 07:12:53 CDT 2007


Module: wine
Branch: master
Commit: 6b177c44e10d7c1495de2de2ca605e03a8a11d05
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=6b177c44e10d7c1495de2de2ca605e03a8a11d05

Author: Roderick Colenbrander <thunderbird2k at gmx.net>
Date:   Mon Aug 13 16:47:17 2007 +0200

wined3d: Pass the proper DeviceName to ChangeDisplaySettings.

---

 dlls/wined3d/device.c          |    3 +--
 dlls/wined3d/directx.c         |    8 ++++++++
 dlls/wined3d/wined3d_private.h |    1 +
 3 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index b0c0b20..11679af 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -1343,8 +1343,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateAdditionalSwapChain(IWineD3DDevic
         devmode.dmBitsPerPel = (bpp >= 24) ? 32 : bpp; /* Stupid XVidMode cannot change bpp */
         devmode.dmPelsWidth  = pPresentationParameters->BackBufferWidth;
         devmode.dmPelsHeight = pPresentationParameters->BackBufferHeight;
-        MultiByteToWideChar(CP_ACP, 0, "Gamers CG", -1, devmode.dmDeviceName, CCHDEVICENAME);
-        ChangeDisplaySettingsExW(devmode.dmDeviceName, &devmode, object->win_handle, CDS_FULLSCREEN, NULL);
+        ChangeDisplaySettingsExW(This->adapter->DeviceName, &devmode, NULL, CDS_FULLSCREEN, NULL);
 
         /* For GetDisplayMode */
         This->ddraw_width = devmode.dmPelsWidth;
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 13fcf51..563c714 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -2479,6 +2479,8 @@ BOOL InitAdapters(void) {
     /* For now only one default adapter */
     {
         int attribute;
+        DISPLAY_DEVICEW DisplayDevice;
+
         TRACE("Initializing default adapter\n");
         Adapters[0].monitorPoint.x = -1;
         Adapters[0].monitorPoint.y = -1;
@@ -2499,6 +2501,12 @@ BOOL InitAdapters(void) {
         Adapters[0].driver = "Display";
         Adapters[0].description = "Direct3D HAL";
 
+        /* Initialize the Adapter's DeviceName which is required for ChangeDisplaySettings and friends */
+        DisplayDevice.cb = sizeof(DisplayDevice);
+        EnumDisplayDevicesW(NULL, 0 /* Adapter 0 = iDevNum 0 */, &DisplayDevice, 0);
+        TRACE("DeviceName: %s\n", debugstr_w(DisplayDevice.DeviceName));
+        strcpyW(Adapters[0].DeviceName, DisplayDevice.DeviceName);
+
         if (WineD3D_CreateFakeGLContext()) {
             int iPixelFormat;
             int attribs[8];
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 3ceb767..159844e 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -588,6 +588,7 @@ struct WineD3DAdapter
     WineD3D_GL_Info         gl_info;
     const char              *driver;
     const char              *description;
+    WCHAR                   DeviceName[CCHDEVICENAME]; /* DeviceName for use with e.g. ChangeDisplaySettings */
     int                     nCfgs;
     WineD3D_PixelFormat     *cfgs;
 };




More information about the wine-cvs mailing list