# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1573283901 0 # Node ID 28809bf1795749c6f358c223512f6a0142d057f9 # Parent 0cce5fed45943e5c85376eed1ea90126c9eac3eb Win: Switch to using _wcsicmp() from CompareStringOrdinal() for increased compatibility. Remove debug messages from the new IE code. Add _free_window_memory() to cleanup browsers. diff -r 0cce5fed4594 -r 28809bf17957 win/browser.c --- a/win/browser.c Sat Nov 09 06:33:08 2019 +0000 +++ b/win/browser.c Sat Nov 09 07:18:21 2019 +0000 @@ -37,6 +37,7 @@ #define UTF8toWide(a) _myUTF8toWide(a, a ? _alloca(MultiByteToWideChar(CP_UTF8, 0, a, -1, NULL, 0) * sizeof(WCHAR)) : NULL) #define WideToUTF8(a) _myWideToUTF8(a, a ? _alloca(WideCharToMultiByte(CP_UTF8, 0, a, -1, NULL, 0, NULL, NULL)) : NULL) LRESULT CALLBACK _wndproc(HWND hWnd, UINT msg, WPARAM mp1, LPARAM mp2); +BOOL CALLBACK _free_window_memory(HWND handle, LPARAM lParam); // This is used by DisplayHTMLStr(). It can be global because we never change it. static const SAFEARRAYBOUND ArrayBound = {1, 0}; @@ -1841,9 +1842,7 @@ // Get IWebBrowser2' IConnectionPointContainer sub-object. We do this by calling // IWebBrowser2' QueryInterface, and pass it the standard GUID for an // IConnectionPointContainer VTable - if ((hr = webBrowser2->lpVtbl->QueryInterface(webBrowser2, &IID_IConnectionPointContainer, &container))) - dw_debug("QueryInterface error: Can't get IConnectionPointContainer object"); - else + if (!(hr = webBrowser2->lpVtbl->QueryInterface(webBrowser2, &IID_IConnectionPointContainer, &container))) { // Get IWebBrowser2' IConnectionPoint sub-object for specifically giving // IWebBRowser2 our DWEventHandler. We do this by calling IConnectionPointContainer's @@ -1854,9 +1853,7 @@ // we want (ie, the one we use to give IWebBrowser2 our DWEventHandler) container->lpVtbl->Release(container); - if (hr) - dw_debug("FindConnectionPoint error: Can't get IConnectionPoint object"); - else + if (!hr) { DWORD cookie; @@ -1871,9 +1868,7 @@ // // Advise() gives us back a "cookie" value that we'll need to later pass to // Unadvise() (when we want to tell IWebBrowser2 to stop using our DWEventHandler) - if ((hr = point->lpVtbl->Advise(point, (IUnknown *)&MyDWEventHandler, &cookie))) - dw_debug("Advise error: Can't set our DWEventHandler object"); - else + if (!(hr = point->lpVtbl->Advise(point, (IUnknown *)&MyDWEventHandler, &cookie))) dw_window_set_data(hwnd, "_dw_html_cookie", DW_INT_TO_POINTER(cookie)); } } @@ -1932,7 +1927,7 @@ { // Detach the browser object from this window, and free resources. _UnEmbedBrowserObject(hwnd); - + _free_window_memory(hwnd, 0); return(TRUE); } } diff -r 0cce5fed4594 -r 28809bf17957 win/dw.c --- a/win/dw.c Sat Nov 09 06:33:08 2019 +0000 +++ b/win/dw.c Sat Nov 09 07:18:21 2019 +0000 @@ -703,7 +703,6 @@ _Max } _PreferredAppMode; -int CompareStringOrdinal(LPCWCH lpString1, int cchCount1, LPCWCH lpString2, int cchCount2, BOOL bIgnoreCase); HTHEME (WINAPI * _OpenNcThemeData)(HWND, LPCWSTR) = NULL; VOID (WINAPI * _RefreshImmersiveColorPolicyState)(VOID) = NULL; BOOL (WINAPI * _GetIsImmersiveColorUsingHighContrast)(IMMERSIVE_HC_CACHE_MODE) = NULL; @@ -805,7 +804,7 @@ BOOL IsColorSchemeChangeMessage(LPARAM lParam) { BOOL is = FALSE; - if(lParam && CompareStringOrdinal((LPCWCH)lParam, -1, L"ImmersiveColorSet", -1, TRUE) == CSTR_EQUAL) + if(lParam && _wcsicmp((LPCWCH)lParam, L"ImmersiveColorSet") == 0) { _RefreshImmersiveColorPolicyState(); is = TRUE; diff -r 0cce5fed4594 -r 28809bf17957 win/edge.cpp --- a/win/edge.cpp Sat Nov 09 06:33:08 2019 +0000 +++ b/win/edge.cpp Sat Nov 09 07:18:21 2019 +0000 @@ -27,6 +27,7 @@ #define UTF8toWide(a) _myUTF8toWide(a, a ? _alloca(MultiByteToWideChar(CP_UTF8, 0, a, -1, NULL, 0) * sizeof(WCHAR)) : NULL) #define WideToUTF8(a) _myWideToUTF8(a, a ? _alloca(WideCharToMultiByte(CP_UTF8, 0, a, -1, NULL, 0, NULL, NULL)) : NULL) LRESULT CALLBACK _wndproc(HWND hWnd, UINT msg, WPARAM mp1, LPARAM mp2); + BOOL CALLBACK _free_window_memory(HWND handle, LPARAM lParam); extern HWND DW_HWND_OBJECT; BOOL DW_EDGE_DETECTED = FALSE; @@ -292,8 +293,8 @@ { dw_window_set_data(hWnd, _DW_HTML_DATA_NAME, NULL); webview->Close(); - } + _free_window_memory(hwnd, 0); return(TRUE); } }