From d733548fb4043b5d0d7643f20279f7e37c0cee79 Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Wed, 25 Feb 2015 13:24:13 +0000 Subject: [PATCH] [DESK.CPL] - Don't convert the selected wallpaper if it is already a bitmap. Patch by Ricardo Hanke. CORE-8802 #resolve svn path=/trunk/; revision=66451 --- reactos/dll/cpl/desk/CMakeLists.txt | 1 + reactos/dll/cpl/desk/background.c | 10 ++++++++++ reactos/dll/cpl/desk/guid.c | 14 ++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 reactos/dll/cpl/desk/guid.c diff --git a/reactos/dll/cpl/desk/CMakeLists.txt b/reactos/dll/cpl/desk/CMakeLists.txt index 41f5a5e68b7..ffa2cea0733 100644 --- a/reactos/dll/cpl/desk/CMakeLists.txt +++ b/reactos/dll/cpl/desk/CMakeLists.txt @@ -25,6 +25,7 @@ list(APPEND SOURCE add_library(desk SHARED ${SOURCE} + guid.c desk.rc ${CMAKE_CURRENT_BINARY_DIR}/desk.def) diff --git a/reactos/dll/cpl/desk/background.c b/reactos/dll/cpl/desk/background.c index ae660bde120..b46bcf3f678 100644 --- a/reactos/dll/cpl/desk/background.c +++ b/reactos/dll/cpl/desk/background.c @@ -913,6 +913,7 @@ SetWallpaper(PDATA pData) TCHAR szWallpaper[MAX_PATH]; GpImage *image; CLSID encoderClsid; + GUID guidFormat; size_t length = 0; GpStatus status; @@ -956,6 +957,15 @@ SetWallpaper(PDATA pData) return; } + GdipGetImageRawFormat(image, &guidFormat); + if (IsEqualGUID(&guidFormat, &ImageFormatBMP)) + { + GdipDisposeImage(image); + RegCloseKey(regKey); + SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, pData->backgroundItems[pData->backgroundSelection].szFilename, SPIF_UPDATEINIFILE); + return; + } + if (FAILED(GdipGetEncoderClsid(L"image/bmp", &encoderClsid))) { GdipDisposeImage(image); diff --git a/reactos/dll/cpl/desk/guid.c b/reactos/dll/cpl/desk/guid.c new file mode 100644 index 00000000000..90adf666482 --- /dev/null +++ b/reactos/dll/cpl/desk/guid.c @@ -0,0 +1,14 @@ +/* DO NOT USE THE PRECOMPILED HEADER FOR THIS FILE! */ + +#define WIN32_NO_STATuS +#define _INC_WINDOWS +#define COM_NO_WINDOWS_H + +#include +#include +#include +#include +#include +#include + +/* NO CODE HERE, THIS IS JUST REQUIRED FOR THE GUID DEFINITIONS */