From c1caf43d10918f7f422b7c5ef4ea5d3c323da8d6 Mon Sep 17 00:00:00 2001 From: Mike McCormack Date: Tue, 11 Apr 2006 14:48:49 +0900 Subject: [PATCH] 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 7770b4d551f..264539a5d75 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(LPCLASSFACTORY iface) 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 1b378ecfe1f..b1b436b4590 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 dd30bb74fa5..f192db7f792 100644 --- a/dlls/shdocvw/shdocvw_main.c +++ b/dlls/shdocvw/shdocvw_main.c @@ -475,8 +475,9 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv) 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; } -- 2.11.4.GIT