From: Zebediah Figura Subject: [PATCH 5/5] quartz: Simplify FilterMapper_RegisterFilter(). Message-Id: <20200122060900.225292-5-z.figura12@gmail.com> Date: Wed, 22 Jan 2020 00:09:00 -0600 In-Reply-To: <20200122060900.225292-1-z.figura12@gmail.com> References: <20200122060900.225292-1-z.figura12@gmail.com> Avoid some unnecessary allocations. Signed-off-by: Zebediah Figura --- dlls/quartz/filtermapper.c | 62 +++++++++++++++----------------------- 1 file changed, 24 insertions(+), 38 deletions(-) diff --git a/dlls/quartz/filtermapper.c b/dlls/quartz/filtermapper.c index 763e378b21..357c9c61f2 100644 --- a/dlls/quartz/filtermapper.c +++ b/dlls/quartz/filtermapper.c @@ -1119,53 +1119,39 @@ static HRESULT WINAPI FilterMapper_EnumMatchingFilters( } -static HRESULT WINAPI FilterMapper_RegisterFilter(IFilterMapper * iface, CLSID clsid, LPCWSTR szName, DWORD dwMerit) +static HRESULT WINAPI FilterMapper_RegisterFilter(IFilterMapper * iface, + CLSID clsid, const WCHAR *name, DWORD merit) { - HRESULT hr; - LPWSTR wszClsid = NULL; - HKEY hKey; - LONG lRet; - WCHAR wszKeyName[ARRAY_SIZE(wszFilterSlash)-1 + (CHARS_IN_GUID-1) + 1]; - - TRACE("(%p)->(%s, %s, %x)\n", iface, debugstr_guid(&clsid), debugstr_w(szName), dwMerit); + WCHAR keypath[46], guidstr[39]; + HKEY key; + LONG ret; - hr = StringFromCLSID(&clsid, &wszClsid); + TRACE("iface %p, clsid %s, name %s, merit %#x.\n", + iface, debugstr_guid(&clsid), debugstr_w(name), merit); - if (SUCCEEDED(hr)) - { - lstrcpyW(wszKeyName, wszFilterSlash); - lstrcatW(wszKeyName, wszClsid); - - lRet = RegCreateKeyExW(HKEY_CLASSES_ROOT, wszKeyName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL); - hr = HRESULT_FROM_WIN32(lRet); - } + StringFromGUID2(&clsid, guidstr, ARRAY_SIZE(guidstr)); - if (SUCCEEDED(hr)) - { - lRet = RegSetValueExW(hKey, NULL, 0, REG_SZ, (const BYTE*)szName, (lstrlenW(szName) + 1) * sizeof(WCHAR)); - hr = HRESULT_FROM_WIN32(lRet); - RegCloseKey(hKey); - } + wcscpy(keypath, L"Filter\\"); + wcscat(keypath, guidstr); + if ((ret = RegCreateKeyExW(HKEY_CLASSES_ROOT, keypath, 0, NULL, 0, KEY_WRITE, NULL, &key, NULL))) + return HRESULT_FROM_WIN32(ret); - if (SUCCEEDED(hr)) - { - lstrcpyW(wszKeyName, wszClsidSlash); - lstrcatW(wszKeyName, wszClsid); - - lRet = RegCreateKeyExW(HKEY_CLASSES_ROOT, wszKeyName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL); - hr = HRESULT_FROM_WIN32(lRet); - } + if ((ret = RegSetValueExW(key, NULL, 0, REG_SZ, (const BYTE *)name, (wcslen(name) + 1) * sizeof(WCHAR)))) + ERR("Failed to set filter name, error %u.\n", ret); + RegCloseKey(key); - if (SUCCEEDED(hr)) + wcscpy(keypath, L"CLSID\\"); + wcscat(keypath, guidstr); + if (!(ret = RegCreateKeyExW(HKEY_CLASSES_ROOT, keypath, 0, NULL, 0, KEY_WRITE, NULL, &key, NULL))) { - lRet = RegSetValueExW(hKey, wszMeritName, 0, REG_DWORD, (LPBYTE)&dwMerit, sizeof(dwMerit)); - hr = HRESULT_FROM_WIN32(lRet); - RegCloseKey(hKey); + if ((ret = RegSetValueExW(key, L"Merit", 0, REG_DWORD, (const BYTE *)&merit, sizeof(DWORD)))) + ERR("Failed to set merit, error %u.\n", ret); + RegCloseKey(key); } - - CoTaskMemFree(wszClsid); + else + ERR("Failed to create CLSID key, error %u.\n", ret); - return hr; + return S_OK; } static HRESULT WINAPI FilterMapper_RegisterFilterInstance(IFilterMapper * iface, CLSID clsid, LPCWSTR szName, CLSID *MRId) -- 2.25.0