Zebediah Figura : quartz: Simplify FilterMapper_UnregisterFilter().

Alexandre Julliard julliard at winehq.org
Thu Jan 23 15:48:49 CST 2020


Module: wine
Branch: master
Commit: 021354c5541aeb353c653c5594fc95b2465215b9
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=021354c5541aeb353c653c5594fc95b2465215b9

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Wed Jan 22 16:30:51 2020 -0600

quartz: Simplify FilterMapper_UnregisterFilter().

Avoid some unnecessary allocations.

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/quartz/filtermapper.c | 71 ++++++++++++++--------------------------------
 1 file changed, 22 insertions(+), 49 deletions(-)

diff --git a/dlls/quartz/filtermapper.c b/dlls/quartz/filtermapper.c
index 32d3e1a822..dde4a6caa5 100644
--- a/dlls/quartz/filtermapper.c
+++ b/dlls/quartz/filtermapper.c
@@ -83,12 +83,8 @@ static const WCHAR wszFriendlyName[] = {'F','r','i','e','n','d','l','y','N','a',
 static const WCHAR wszMeritName[] = {'M','e','r','i','t',0};
 /* FilterData property in media category Moniker (not CLSID_ActiveMovieCategories) */
 static const WCHAR wszFilterDataName[] = {'F','i','l','t','e','r','D','a','t','a',0};
-/* For filters registered with IFilterMapper */
-static const WCHAR wszFilter[] = {'F','i','l','t','e','r',0};
 /* For pins registered with IFilterMapper */
 static const WCHAR wszPins[] = {'P','i','n','s',0};
-/* For types registered with IFilterMapper */
-static const WCHAR wszTypes[] = {'T','y','p','e','s',0};
 
 
 /* registry format for REGFILTER2 */
@@ -1253,59 +1249,36 @@ static HRESULT WINAPI FilterMapper_RegisterPinType(IFilterMapper *iface,
     return HRESULT_FROM_WIN32(ret);
 }
 
-static HRESULT WINAPI FilterMapper_UnregisterFilter(IFilterMapper * iface, CLSID Filter)
+static HRESULT WINAPI FilterMapper_UnregisterFilter(IFilterMapper *iface, CLSID clsid)
 {
-    HRESULT hr;
-    LONG lRet;
-    LPWSTR wszClsid = NULL;
-    HKEY hKey;
-    WCHAR wszKeyName[ARRAY_SIZE(wszClsidSlash)-1 + (CHARS_IN_GUID-1) + 1];
-
-    TRACE("(%p)->(%s)\n", iface, debugstr_guid(&Filter));
-
-    hr = StringFromCLSID(&Filter, &wszClsid);
-
-    if (SUCCEEDED(hr))
-    {
-        lRet = RegOpenKeyExW(HKEY_CLASSES_ROOT, wszFilter, 0, KEY_WRITE, &hKey);
-        hr = HRESULT_FROM_WIN32(lRet);
-    }
+    WCHAR guidstr[39], keypath[6 + 38 + 1];
+    LONG ret;
+    HKEY key;
 
-    if (SUCCEEDED(hr))
-    {
-        lRet = RegDeleteKeyW(hKey, wszClsid);
-        hr = HRESULT_FROM_WIN32(lRet);
-        RegCloseKey(hKey);
-    }
+    TRACE("iface %p, clsid %s.\n", iface, debugstr_guid(&clsid));
 
-    if (SUCCEEDED(hr))
-    {
-        lstrcpyW(wszKeyName, wszClsidSlash);
-        lstrcatW(wszKeyName, wszClsid);
+    StringFromGUID2(&clsid, guidstr, ARRAY_SIZE(guidstr));
 
-        lRet = RegOpenKeyExW(HKEY_CLASSES_ROOT, wszKeyName, 0, KEY_WRITE, &hKey);
-        if (lRet == ERROR_FILE_NOT_FOUND)
-            goto done;
-        hr = HRESULT_FROM_WIN32(lRet);
-    }
+    if ((ret = RegOpenKeyExW(HKEY_CLASSES_ROOT, L"Filter", 0, 0, &key)))
+        return HRESULT_FROM_WIN32(ret);
+    if ((ret = RegDeleteKeyW(key, guidstr)))
+        ERR("Failed to delete filter key, error %u.\n", ret);
+    RegCloseKey(key);
 
-    if (SUCCEEDED(hr))
+    wcscpy(keypath, L"CLSID\\");
+    wcscat(keypath, guidstr);
+    if (!(ret = RegOpenKeyExW(HKEY_CLASSES_ROOT, keypath, 0, KEY_WRITE, &key)))
     {
-        lRet = RegDeleteValueW(hKey, wszMeritName);
-        if (lRet != ERROR_SUCCESS && lRet != ERROR_FILE_NOT_FOUND)
-            hr = HRESULT_FROM_WIN32(lRet);
-
-        lRet = RegDeleteTreeW(hKey, wszPins);
-        if (lRet != ERROR_SUCCESS && lRet != ERROR_FILE_NOT_FOUND)
-            hr = HRESULT_FROM_WIN32(lRet);
-
-        RegCloseKey(hKey);
+        if ((ret = RegDeleteValueW(key, L"Merit")))
+            ERR("Failed to delete Merit value, error %u.\n", ret);
+        if ((ret = RegDeleteTreeW(key, L"Pins")))
+            ERR("Failed to delete Pins key, error %u.\n", ret);
+        RegCloseKey(key);
     }
+    else
+        ERR("Failed to open CLSID key, error %u.\n", ret);
 
-done:
-    CoTaskMemFree(wszClsid);
-
-    return hr;
+    return S_OK;
 }
 
 static HRESULT WINAPI FilterMapper_UnregisterFilterInstance(IFilterMapper * iface, CLSID MRId)




More information about the wine-cvs mailing list