From 20074ac855a96b310f4e54d8a4fc70ef8e1b696e Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Fri, 26 Jan 2018 12:44:50 +0100 Subject: [PATCH] mshtml: Avoid using a global display DC. Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard --- dlls/mshtml/htmlscreen.c | 8 +++++--- dlls/mshtml/main.c | 18 ------------------ dlls/mshtml/mshtml_private.h | 1 - 3 files changed, 5 insertions(+), 22 deletions(-) diff --git a/dlls/mshtml/htmlscreen.c b/dlls/mshtml/htmlscreen.c index 2ddaad23185..5c52e4c4374 100644 --- a/dlls/mshtml/htmlscreen.c +++ b/dlls/mshtml/htmlscreen.c @@ -123,10 +123,12 @@ static HRESULT WINAPI HTMLScreen_Invoke(IHTMLScreen *iface, DISPID dispIdMember, static HRESULT WINAPI HTMLScreen_get_colorDepth(IHTMLScreen *iface, LONG *p) { HTMLScreen *This = impl_from_IHTMLScreen(iface); + HDC hdc = GetDC(0); TRACE("(%p)->(%p)\n", This, p); - *p = GetDeviceCaps(get_display_dc(), BITSPIXEL); + *p = GetDeviceCaps(hdc, BITSPIXEL); + ReleaseDC(0, hdc); return S_OK; } @@ -150,7 +152,7 @@ static HRESULT WINAPI HTMLScreen_get_width(IHTMLScreen *iface, LONG *p) TRACE("(%p)->(%p)\n", This, p); - *p = GetDeviceCaps(get_display_dc(), HORZRES); + *p = GetSystemMetrics(SM_CXSCREEN); return S_OK; } @@ -160,7 +162,7 @@ static HRESULT WINAPI HTMLScreen_get_height(IHTMLScreen *iface, LONG *p) TRACE("(%p)->(%p)\n", This, p); - *p = GetDeviceCaps(get_display_dc(), VERTRES); + *p = GetSystemMetrics(SM_CYSCREEN); return S_OK; } diff --git a/dlls/mshtml/main.c b/dlls/mshtml/main.c index af716d16806..0227cccf349 100644 --- a/dlls/mshtml/main.c +++ b/dlls/mshtml/main.c @@ -51,7 +51,6 @@ HINSTANCE hInst; DWORD mshtml_tls = TLS_OUT_OF_INDEXES; static HINSTANCE shdoclc = NULL; -static HDC display_dc; static WCHAR *status_strings[IDS_STATUS_LAST-IDS_STATUS_FIRST+1]; static IMultiLanguage2 *mlang; @@ -140,8 +139,6 @@ static void process_detach(void) FreeLibrary(shdoclc); if(mshtml_tls != TLS_OUT_OF_INDEXES) TlsFree(mshtml_tls); - if(display_dc) - DeleteObject(display_dc); if(mlang) IMultiLanguage2_Release(mlang); @@ -210,21 +207,6 @@ HINSTANCE get_shdoclc(void) return shdoclc = LoadLibraryExW(wszShdoclc, NULL, LOAD_LIBRARY_AS_DATAFILE); } -HDC get_display_dc(void) -{ - static const WCHAR displayW[] = {'D','I','S','P','L','A','Y',0}; - - if(!display_dc) { - HDC hdc; - - hdc = CreateICW(displayW, NULL, NULL, NULL); - if(InterlockedCompareExchangePointer((void**)&display_dc, hdc, NULL)) - DeleteObject(hdc); - } - - return display_dc; -} - BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID reserved) { switch(fdwReason) { diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index aef82cd18b5..51a1addaf26 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -1348,7 +1348,6 @@ extern void *call_thiscall_func; UINT cp_from_charset_string(BSTR) DECLSPEC_HIDDEN; BSTR charset_string_from_cp(UINT) DECLSPEC_HIDDEN; -HDC get_display_dc(void) DECLSPEC_HIDDEN; HINSTANCE get_shdoclc(void) DECLSPEC_HIDDEN; void set_statustext(HTMLDocumentObj*,INT,LPCWSTR) DECLSPEC_HIDDEN; -- 2.11.4.GIT