Module: wine Branch: master Commit: 379e543bbaf673f71f8551d126da76500d280d6a URL: http://source.winehq.org/git/wine.git/?a=commit;h=379e543bbaf673f71f8551d126...
Author: Piotr Caban piotr.caban@gmail.com Date: Thu Aug 21 23:36:07 2008 +0200
msxml3: Use LoadTypeLibEx to register typelib.
---
dlls/msxml3/main.c | 37 ------------------------------------- dlls/msxml3/msxml_private.h | 1 - dlls/msxml3/regsvr.c | 18 ++++++++---------- 3 files changed, 8 insertions(+), 48 deletions(-)
diff --git a/dlls/msxml3/main.c b/dlls/msxml3/main.c index 8a1496f..93f890a 100644 --- a/dlls/msxml3/main.c +++ b/dlls/msxml3/main.c @@ -41,7 +41,6 @@
WINE_DEFAULT_DEBUG_CHANNEL(msxml);
-static HINSTANCE hInstance; static ITypeLib *typelib; static ITypeInfo *typeinfos[LAST_tid];
@@ -114,41 +113,6 @@ HRESULT get_typeinfo(enum tid_t tid, ITypeInfo **typeinfo) return S_OK; }
-static CRITICAL_SECTION MSXML3_typelib_cs; -static CRITICAL_SECTION_DEBUG MSXML3_typelib_cs_debug = -{ - 0, 0, &MSXML3_typelib_cs, - { &MSXML3_typelib_cs_debug.ProcessLocksList, - &MSXML3_typelib_cs_debug.ProcessLocksList }, - 0, 0, { (DWORD_PTR)(__FILE__ ": MSXML3_typelib_cs") } -}; -static CRITICAL_SECTION MSXML3_typelib_cs = { &MSXML3_typelib_cs_debug, -1, 0, 0, 0, 0 }; - -ITypeLib *get_msxml3_typelib( LPWSTR *path ) -{ - static WCHAR msxml3_path[MAX_PATH]; - - EnterCriticalSection( &MSXML3_typelib_cs ); - - if (!typelib) - { - TRACE("loading typelib\n"); - - if (GetModuleFileNameW( hInstance, msxml3_path, MAX_PATH )) - LoadTypeLib( msxml3_path, &typelib ); - } - - LeaveCriticalSection( &MSXML3_typelib_cs ); - - if (path) - *path = msxml3_path; - - if (typelib) - ITypeLib_AddRef( typelib ); - - return typelib; -} - static void process_detach(void) { if(typelib) { @@ -187,7 +151,6 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv) /* Set the current ident to the default */ xmlTreeIndentString = "\t"; #endif - hInstance = hInstDLL; DisableThreadLibraryCalls(hInstDLL); break; case DLL_PROCESS_DETACH: diff --git a/dlls/msxml3/msxml_private.h b/dlls/msxml3/msxml_private.h index d065e3b..13d35be 100644 --- a/dlls/msxml3/msxml_private.h +++ b/dlls/msxml3/msxml_private.h @@ -134,6 +134,5 @@ enum tid_t { };
extern HRESULT get_typeinfo(enum tid_t tid, ITypeInfo **typeinfo); -extern ITypeLib *get_msxml3_typelib( LPWSTR *path );
#endif /* __MSXML_PRIVATE__ */ diff --git a/dlls/msxml3/regsvr.c b/dlls/msxml3/regsvr.c index 05bf74d..320d51e 100644 --- a/dlls/msxml3/regsvr.c +++ b/dlls/msxml3/regsvr.c @@ -663,7 +663,7 @@ HRESULT WINAPI DllRegisterServer(void) { HRESULT hr; ITypeLib *tl; - LPWSTR path = NULL; + static const WCHAR wszMsXml3[] = {'m','s','x','m','l','3','.','d','l','l',0};
TRACE("\n");
@@ -673,14 +673,12 @@ HRESULT WINAPI DllRegisterServer(void) if (SUCCEEDED(hr)) hr = register_progids(progid_list);
- tl = get_msxml3_typelib( &path ); - if (tl) - { - hr = RegisterTypeLib( tl, path, NULL ); - ITypeLib_Release( tl ); + if(SUCCEEDED(hr)) { + + hr = LoadTypeLibEx(wszMsXml3, REGKIND_REGISTER, &tl); + if(SUCCEEDED(hr)) + ITypeLib_Release(tl); } - else - hr = E_FAIL;
return hr; } @@ -699,8 +697,8 @@ HRESULT WINAPI DllUnregisterServer(void) hr = unregister_interfaces(interface_list); if (SUCCEEDED(hr)) hr = unregister_progids(progid_list); - if (SUCCEEDED(hr)) - hr = UnRegisterTypeLib(&LIBID_MSXML2, 3, 0, LOCALE_SYSTEM_DEFAULT, SYS_WIN32); + if (SUCCEEDED(hr)) + hr = UnRegisterTypeLib(&LIBID_MSXML2, 3, 0, LOCALE_SYSTEM_DEFAULT, SYS_WIN32);
return hr; }