diff --git a/patches/explorer-Video_Registry_Key/0001-explorer-Create-CurrentControlSet-Control-Video-regi.patch b/patches/explorer-Video_Registry_Key/0001-explorer-Create-CurrentControlSet-Control-Video-regi.patch new file mode 100644 index 00000000..793960c4 --- /dev/null +++ b/patches/explorer-Video_Registry_Key/0001-explorer-Create-CurrentControlSet-Control-Video-regi.patch @@ -0,0 +1,63 @@ +From cccf1b75e810985c817d34329878f497d853d3ac Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Sat, 9 Jan 2016 16:57:49 +0100 +Subject: explorer: Create CurrentControlSet\Control\Video registry key as + non-volatile. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Michael Müller +--- + dlls/advapi32/tests/registry.c | 7 +++++++ + programs/explorer/desktop.c | 9 +++++++++ + 2 files changed, 16 insertions(+) + +diff --git a/dlls/advapi32/tests/registry.c b/dlls/advapi32/tests/registry.c +index ef5d989..6387697 100644 +--- a/dlls/advapi32/tests/registry.c ++++ b/dlls/advapi32/tests/registry.c +@@ -1340,6 +1340,13 @@ static void test_reg_create_key(void) + RegDeleteKeyA(hkey1, ""); + RegCloseKey(hkey1); + ++ /* System\CurrentControlSet\Control\Video should be non-volatile */ ++ ret = RegCreateKeyExA(HKEY_LOCAL_MACHINE, "System\\CurrentControlSet\\Control\\Video\\Wine", ++ 0, NULL, 0, KEY_NOTIFY, NULL, &hkey1, NULL); ++ ok(ret == ERROR_SUCCESS, "RegCreateKeyExA failed with error %d\n", ret); ++ RegDeleteKeyA(hkey1, ""); ++ RegCloseKey(hkey1); ++ + /* WOW64 flags - open an existing key */ + hkey1 = NULL; + ret = RegCreateKeyExA(HKEY_LOCAL_MACHINE, "Software", 0, NULL, 0, KEY_READ|KEY_WOW64_32KEY, NULL, &hkey1, NULL); +diff --git a/programs/explorer/desktop.c b/programs/explorer/desktop.c +index 2b8502b..85cb4bc 100644 +--- a/programs/explorer/desktop.c ++++ b/programs/explorer/desktop.c +@@ -775,6 +775,11 @@ static BOOL get_default_enable_shell( const WCHAR *name ) + + static HMODULE load_graphics_driver( const WCHAR *driver, const GUID *guid ) + { ++ static const WCHAR video_keyW[] = { ++ 'S','y','s','t','e','m','\\', ++ 'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\', ++ 'C','o','n','t','r','o','l','\\', ++ 'V','i','d','e','o',0}; + static const WCHAR device_keyW[] = { + 'S','y','s','t','e','m','\\', + 'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\', +@@ -838,6 +843,10 @@ static HMODULE load_graphics_driver( const WCHAR *driver, const GUID *guid ) + TRACE( "display %s driver %s\n", debugstr_guid(guid), debugstr_w(buffer) ); + } + ++ /* create video key first without REG_OPTION_VOLATILE attribute */ ++ if (!RegCreateKeyExW( HKEY_LOCAL_MACHINE, video_keyW, 0, NULL, 0, KEY_SET_VALUE, NULL, &hkey, NULL )) ++ RegCloseKey( hkey ); ++ + sprintfW( key, device_keyW, guid->Data1, guid->Data2, guid->Data3, + guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3], + guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7] ); +-- +2.6.4 + diff --git a/patches/explorer-Video_Registry_Key/definition b/patches/explorer-Video_Registry_Key/definition new file mode 100644 index 00000000..ad1396b7 --- /dev/null +++ b/patches/explorer-Video_Registry_Key/definition @@ -0,0 +1 @@ +Fixes: Registry key System\CurrentControlSet\Control\Video should be non-volatile diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 3021bc5c..73e925d3 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -135,6 +135,7 @@ patch_enable_all () enable_dxdiagn_GetChildContainer_Leaf_Nodes="$1" enable_dxgi_MakeWindowAssociation="$1" enable_dxva2_Video_Decoder="$1" + enable_explorer_Video_Registry_Key="$1" enable_fonts_Missing_Fonts="$1" enable_gdi32_Lazy_Font_Initialization="$1" enable_gdi32_MultiMonitor="$1" @@ -521,6 +522,9 @@ patch_enable () dxva2-Video_Decoder) enable_dxva2_Video_Decoder="$2" ;; + explorer-Video_Registry_Key) + enable_explorer_Video_Registry_Key="$2" + ;; fonts-Missing_Fonts) enable_fonts_Missing_Fonts="$2" ;; @@ -3131,6 +3135,18 @@ if test "$enable_dxva2_Video_Decoder" -eq 1; then ) >> "$patchlist" fi +# Patchset explorer-Video_Registry_Key +# | +# | Modified files: +# | * dlls/advapi32/tests/registry.c, programs/explorer/desktop.c +# | +if test "$enable_explorer_Video_Registry_Key" -eq 1; then + patch_apply explorer-Video_Registry_Key/0001-explorer-Create-CurrentControlSet-Control-Video-regi.patch + ( + echo '+ { "Michael Müller", "explorer: Create CurrentControlSet\\\\Control\\\\Video registry key as non-volatile.", 1 },'; + ) >> "$patchlist" +fi + # Patchset fonts-Missing_Fonts # | # | This patchset fixes the following Wine bugs: