Alexandre Julliard : explorer: Allow to specify the name of the graphics driver in the /desktop option.

Alexandre Julliard julliard at winehq.org
Wed Oct 30 13:11:03 CDT 2013


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Oct 30 09:47:08 2013 +0100

explorer: Allow to specify the name of the graphics driver in the /desktop option.

---

 programs/explorer/desktop.c |   32 ++++++++++++++++++++------------
 1 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/programs/explorer/desktop.c b/programs/explorer/desktop.c
index 35c3168..c3abe6d 100644
--- a/programs/explorer/desktop.c
+++ b/programs/explorer/desktop.c
@@ -638,7 +638,7 @@ static BOOL get_default_desktop_size( const WCHAR *name, unsigned int *width, un
     return found;
 }
 
-static HMODULE load_graphics_driver( const GUID *guid )
+static HMODULE load_graphics_driver( const WCHAR *driver, const GUID *guid )
 {
     static const WCHAR device_keyW[] = {
         'S','y','s','t','e','m','\\',
@@ -660,15 +660,19 @@ static HMODULE load_graphics_driver( const GUID *guid )
     HKEY hkey;
     char error[80];
 
-    strcpyW( buffer, default_driver );
-
-    /* @@ Wine registry key: HKCU\Software\Wine\Drivers */
-    if (!RegOpenKeyW( HKEY_CURRENT_USER, driversW, &hkey ))
+    if (!driver)
     {
-        DWORD count = sizeof(buffer);
-        RegQueryValueExW( hkey, graphicsW, 0, NULL, (LPBYTE)buffer, &count );
-        RegCloseKey( hkey );
+        strcpyW( buffer, default_driver );
+
+        /* @@ Wine registry key: HKCU\Software\Wine\Drivers */
+        if (!RegOpenKeyW( HKEY_CURRENT_USER, driversW, &hkey ))
+        {
+            DWORD count = sizeof(buffer);
+            RegQueryValueExW( hkey, graphicsW, 0, NULL, (LPBYTE)buffer, &count );
+            RegCloseKey( hkey );
+        }
     }
+    else lstrcpynW( buffer, driver, sizeof(buffer)/sizeof(WCHAR) );
 
     name = buffer;
     while (name)
@@ -773,7 +777,7 @@ void manage_desktop( WCHAR *arg )
     HWND hwnd, msg_hwnd;
     HMODULE graphics_driver;
     unsigned int width, height;
-    WCHAR *cmdline = NULL;
+    WCHAR *cmdline = NULL, *driver = NULL;
     WCHAR *p = arg;
     const WCHAR *name = NULL;
 
@@ -787,12 +791,16 @@ void manage_desktop( WCHAR *arg )
     }
 
     /* parse the desktop option */
-    /* the option is of the form /desktop=name[,widthxheight] */
+    /* the option is of the form /desktop=name[,widthxheight[,driver]] */
     if (*arg == '=' || *arg == ',')
     {
         arg++;
         name = arg;
-        if ((p = strchrW( arg, ',' ))) *p++ = 0;
+        if ((p = strchrW( arg, ',' )))
+        {
+            *p++ = 0;
+            if ((driver = strchrW( p, ',' ))) *driver++ = 0;
+        }
         if (!p || !parse_size( p, &width, &height ))
             get_default_desktop_size( name, &width, &height );
     }
@@ -813,7 +821,7 @@ void manage_desktop( WCHAR *arg )
 
     UuidCreate( &guid );
     TRACE( "display guid %s\n", debugstr_guid(&guid) );
-    graphics_driver = load_graphics_driver( &guid );
+    graphics_driver = load_graphics_driver( driver, &guid );
 
     /* create the desktop window */
     hwnd = CreateWindowExW( 0, DESKTOP_CLASS_ATOM, NULL,




More information about the wine-cvs mailing list