Module: wine Branch: refs/heads/master Commit: c1caf43d10918f7f422b7c5ef4ea5d3c323da8d6 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=c1caf43d10918f7f422b7c5e...
Author: Mike McCormack mike@codeweavers.com Date: Tue Apr 11 14:48:49 2006 +0900
shdocvw: Move the private class factory declaration into factory.c.
---
dlls/shdocvw/factory.c | 19 +++++++++++++++++-- dlls/shdocvw/shdocvw.h | 13 +------------ dlls/shdocvw/shdocvw_main.c | 5 +++-- 3 files changed, 21 insertions(+), 16 deletions(-)
diff --git a/dlls/shdocvw/factory.c b/dlls/shdocvw/factory.c index 7770b4d..264539a 100644 --- a/dlls/shdocvw/factory.c +++ b/dlls/shdocvw/factory.c @@ -30,6 +30,15 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); * (Based on implementation in ddraw/main.c) */
+typedef struct +{ + /* IUnknown fields */ + const IClassFactoryVtbl *lpVtbl; + HRESULT (*cf)(LPUNKNOWN, REFIID, LPVOID *); + LONG ref; +} IClassFactoryImpl; + + /********************************************************************** * WBCF_QueryInterface (IUnknown) */ @@ -78,7 +87,8 @@ static ULONG WINAPI WBCF_Release(LPCLASS static HRESULT WINAPI WBCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) { - return WebBrowser_Create(pOuter, riid, ppobj); + IClassFactoryImpl *This = (IClassFactoryImpl *) iface; + return This->cf(pOuter, riid, ppobj); }
/************************************************************************ @@ -105,4 +115,9 @@ static const IClassFactoryVtbl WBCF_Vtbl WBCF_LockServer };
-IClassFactoryImpl SHDOCVW_ClassFactory = {&WBCF_Vtbl}; +static IClassFactoryImpl SHDOCVW_WBClassFactory = {&WBCF_Vtbl, WebBrowser_Create}; + +IClassFactory *get_class_factory(void) +{ + return (IClassFactory*) &SHDOCVW_WBClassFactory; +} diff --git a/dlls/shdocvw/shdocvw.h b/dlls/shdocvw/shdocvw.h index 1b378ec..b1b436b 100644 --- a/dlls/shdocvw/shdocvw.h +++ b/dlls/shdocvw/shdocvw.h @@ -40,18 +40,6 @@ #include "hlink.h"
/********************************************************************** - * IClassFactory declaration for SHDOCVW.DLL - */ -typedef struct -{ - /* IUnknown fields */ - const IClassFactoryVtbl *lpVtbl; - LONG ref; -} IClassFactoryImpl; - -extern IClassFactoryImpl SHDOCVW_ClassFactory; - -/********************************************************************** * Shell Instance Objects */ extern HRESULT SHDOCVW_GetShellInstanceObjectClassObject(REFCLSID rclsid, @@ -188,5 +176,6 @@ extern HINSTANCE shdocvw_hinstance; extern void register_iewindow_class(void); extern void unregister_iewindow_class(void); extern BOOL create_ie_window(LPCWSTR url); +extern IClassFactory *get_class_factory(void);
#endif /* __WINE_SHDOCVW_H */ diff --git a/dlls/shdocvw/shdocvw_main.c b/dlls/shdocvw/shdocvw_main.c index dd30bb7..f192db7 100644 --- a/dlls/shdocvw/shdocvw_main.c +++ b/dlls/shdocvw/shdocvw_main.c @@ -475,8 +475,9 @@ HRESULT WINAPI DllGetClassObject(REFCLSI IsEqualIID(&IID_IClassFactory, riid)) { /* Pass back our shdocvw class factory */ - *ppv = (LPVOID)&SHDOCVW_ClassFactory; - IClassFactory_AddRef((IClassFactory*)&SHDOCVW_ClassFactory); + IClassFactory *cf = get_class_factory(); + IClassFactory_AddRef(cf); + *ppv = cf;
return S_OK; }