Jacek Caban : urlmon: Optimize get_protocol_info for urlmon protocols.
Alexandre Julliard
julliard at winehq.org
Thu Feb 21 07:42:46 CST 2008
Module: wine
Branch: master
Commit: a23a36077ca2bf1e99052ececb3e0fe8888120a5
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a23a36077ca2bf1e99052ececb3e0fe8888120a5
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu Feb 21 13:08:06 2008 +0100
urlmon: Optimize get_protocol_info for urlmon protocols.
---
dlls/urlmon/session.c | 13 +++++++++----
1 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/dlls/urlmon/session.c b/dlls/urlmon/session.c
index 09cd330..20be8c5 100644
--- a/dlls/urlmon/session.c
+++ b/dlls/urlmon/session.c
@@ -27,6 +27,7 @@ typedef struct name_space {
LPWSTR protocol;
IClassFactory *cf;
CLSID clsid;
+ BOOL urlmon;
struct name_space *next;
} name_space;
@@ -111,6 +112,7 @@ static HRESULT register_namespace(IClassFactory *cf, REFIID clsid, LPCWSTR proto
IClassFactory_AddRef(cf);
new_name_space->cf = cf;
new_name_space->clsid = *clsid;
+ new_name_space->urlmon = urlmon_protocol;
new_name_space->protocol = heap_strdupW(protocol);
new_name_space->next = name_space_list;
@@ -119,7 +121,7 @@ static HRESULT register_namespace(IClassFactory *cf, REFIID clsid, LPCWSTR proto
return S_OK;
}
-static HRESULT unregister_namespace(IClassFactory *cf, LPCWSTR protocol, BOOL urlmon_protocol)
+static HRESULT unregister_namespace(IClassFactory *cf, LPCWSTR protocol)
{
name_space *iter, *last = NULL;
@@ -135,7 +137,7 @@ static HRESULT unregister_namespace(IClassFactory *cf, LPCWSTR protocol, BOOL ur
else
name_space_list = iter->next;
- if(!urlmon_protocol)
+ if(!iter->urlmon)
IClassFactory_Release(iter->cf);
heap_free(iter->protocol);
heap_free(iter);
@@ -150,7 +152,7 @@ void register_urlmon_namespace(IClassFactory *cf, REFIID clsid, LPCWSTR protocol
if(do_register)
register_namespace(cf, clsid, protocol, TRUE);
else
- unregister_namespace(cf, protocol, TRUE);
+ unregister_namespace(cf, protocol);
}
BOOL is_registered_protocol(LPCWSTR url)
@@ -183,6 +185,9 @@ IInternetProtocolInfo *get_protocol_info(LPCWSTR url)
ns = find_name_space(schema);
if(ns) {
+ if(ns->urlmon)
+ return NULL;
+
hres = IClassFactory_QueryInterface(ns->cf, &IID_IInternetProtocolInfo, (void**)&ret);
if(SUCCEEDED(hres))
return ret;
@@ -283,7 +288,7 @@ static HRESULT WINAPI InternetSession_UnregisterNameSpace(IInternetSession *ifac
if(!pCF || !pszProtocol)
return E_INVALIDARG;
- return unregister_namespace(pCF, pszProtocol, FALSE);
+ return unregister_namespace(pCF, pszProtocol);
}
static HRESULT WINAPI InternetSession_RegisterMimeFilter(IInternetSession *iface,
More information about the wine-cvs
mailing list