Jacek Caban : atl: Share sources with atl100 instead of forwarding calls.

Alexandre Julliard julliard at winehq.org
Thu Feb 13 13:26:11 CST 2014


Module: wine
Branch: master
Commit: f285b06738676856487a5a0a8756716e10abb9fe
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=f285b06738676856487a5a0a8756716e10abb9fe

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Feb 13 16:00:27 2014 +0100

atl: Share sources with atl100 instead of forwarding calls.

---

 dlls/atl/Makefile.in |    6 ++++--
 dlls/atl/atl.spec    |   34 +++++++++++++++++-----------------
 dlls/atl/atl_main.c  |   45 +++------------------------------------------
 dlls/atl100/atl.c    |   25 ++++++++++++++++++++-----
 tools/make_specfiles |    4 ----
 5 files changed, 44 insertions(+), 70 deletions(-)

diff --git a/dlls/atl/Makefile.in b/dlls/atl/Makefile.in
index 3fc9591..cf61896 100644
--- a/dlls/atl/Makefile.in
+++ b/dlls/atl/Makefile.in
@@ -1,11 +1,13 @@
 MODULE    = atl.dll
 IMPORTLIB = atl
-IMPORTS   = uuid atl80 atl100 oleaut32 ole32 user32
+IMPORTS   = uuid atl80 oleaut32 ole32 user32 gdi32 advapi32
 EXTRADEFS = -D_ATL_VER=_ATL_VER_30
 PARENTSRC = ../atl100
 
 C_SRCS = \
+	atl.c \
 	atl_ax.c \
-	atl_main.c
+	atl_main.c \
+	registrar.c
 
 IDL_SRCS = atl_classes.idl
diff --git a/dlls/atl/atl.spec b/dlls/atl/atl.spec
index 2dca559..aa0f44b 100644
--- a/dlls/atl/atl.spec
+++ b/dlls/atl/atl.spec
@@ -2,11 +2,11 @@
 2 stdcall -private DllGetClassObject(ptr ptr ptr)
 3 stdcall -private DllRegisterServer()
 4 stdcall -private DllUnregisterServer()
-10 stdcall AtlAdvise(ptr ptr ptr ptr) atl100.AtlAdvise
-11 stdcall AtlUnadvise(ptr ptr long) atl100.AtlUnadvise
-12 stdcall AtlFreeMarshalStream(ptr) atl100.AtlFreeMarshalStream
-13 stdcall AtlMarshalPtrInProc(ptr ptr ptr) atl100.AtlMarshalPtrInProc
-14 stdcall AtlUnmarshalPtr(ptr ptr ptr) atl100.AtlUnmarshalPtr
+10 stdcall AtlAdvise(ptr ptr ptr ptr)
+11 stdcall AtlUnadvise(ptr ptr long)
+12 stdcall AtlFreeMarshalStream(ptr)
+13 stdcall AtlMarshalPtrInProc(ptr ptr ptr)
+14 stdcall AtlUnmarshalPtr(ptr ptr ptr)
 15 stdcall AtlModuleGetClassObject(ptr ptr ptr ptr)
 16 stdcall AtlModuleInit(ptr long long)
 17 stdcall AtlModuleRegisterClassObjects(ptr long long)
@@ -16,15 +16,15 @@
 21 stdcall AtlModuleTerm(ptr)
 22 stdcall AtlModuleUnregisterServer(ptr ptr)
 23 stdcall AtlModuleUpdateRegistryFromResourceD(ptr wstr long ptr ptr)
-24 stdcall AtlWaitWithMessageLoop(long) atl100.AtlWaitWithMessageLoop
+24 stdcall AtlWaitWithMessageLoop(long)
 25 stub AtlSetErrorInfo
-26 stdcall AtlCreateTargetDC(long ptr) atl100.AtlCreateTargetDC
-27 stdcall AtlHiMetricToPixel(ptr ptr) atl100.AtlHiMetricToPixel
-28 stdcall AtlPixelToHiMetric(ptr ptr) atl100.AtlPixelToHiMetric
+26 stdcall AtlCreateTargetDC(long ptr)
+27 stdcall AtlHiMetricToPixel(ptr ptr)
+28 stdcall AtlPixelToHiMetric(ptr ptr)
 29 stub AtlDevModeW2A
-30 stdcall AtlComPtrAssign(ptr ptr) atl100.AtlComPtrAssign
-31 stdcall AtlComQIPtrAssign(ptr ptr ptr) atl100.AtlComQIPtrAssign
-32 stdcall AtlInternalQueryInterface(ptr ptr ptr ptr) atl100.AtlInternalQueryInterface
+30 stdcall AtlComPtrAssign(ptr ptr)
+31 stdcall AtlComQIPtrAssign(ptr ptr ptr)
+32 stdcall AtlInternalQueryInterface(ptr ptr ptr ptr)
 34 stdcall AtlGetVersion(ptr)
 35 stdcall AtlAxDialogBoxW(long wstr long ptr long)
 36 stdcall AtlAxDialogBoxA(long str long ptr long)
@@ -40,12 +40,12 @@
 46 stdcall AtlModuleRegisterWndClassInfoA(ptr ptr ptr)
 47 stdcall AtlAxGetControl(long ptr)
 48 stdcall AtlAxGetHost(long ptr)
-49 stdcall AtlRegisterClassCategoriesHelper(ptr ptr long) atl100.AtlRegisterClassCategoriesHelper
-50 stdcall AtlIPersistStreamInit_Load(ptr ptr ptr ptr) atl100.AtlIPersistStreamInit_Load
-51 stdcall AtlIPersistStreamInit_Save(ptr long ptr ptr ptr) atl100.AtlIPersistStreamInit_Save
-52 stdcall AtlIPersistPropertyBag_Load(ptr ptr ptr ptr ptr) atl100.AtlIPersistPropertyBag_Load
+49 stdcall AtlRegisterClassCategoriesHelper(ptr ptr long)
+50 stdcall AtlIPersistStreamInit_Load(ptr ptr ptr ptr)
+51 stdcall AtlIPersistStreamInit_Save(ptr long ptr ptr ptr)
+52 stdcall AtlIPersistPropertyBag_Load(ptr ptr ptr ptr ptr)
 53 stub AtlIPersistPropertyBag_Save
-54 stdcall AtlGetObjectSourceInterface(ptr ptr ptr ptr ptr) atl100.AtlGetObjectSourceInterface
+54 stdcall AtlGetObjectSourceInterface(ptr ptr ptr ptr ptr)
 55 stub AtlModuleUnRegisterTypeLib
 56 stdcall AtlModuleLoadTypeLib(ptr wstr ptr ptr)
 57 stdcall AtlModuleUnregisterServerEx(ptr long ptr)
diff --git a/dlls/atl/atl_main.c b/dlls/atl/atl_main.c
index 6288ff8..d89cf06 100644
--- a/dlls/atl/atl_main.c
+++ b/dlls/atl/atl_main.c
@@ -33,18 +33,7 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(atl);
 
-static HINSTANCE hInst;
-
-BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
-{
-    TRACE("(0x%p, %d, %p)\n",hinstDLL,fdwReason,lpvReserved);
-
-    if (fdwReason == DLL_PROCESS_ATTACH) {
-        DisableThreadLibraryCalls(hinstDLL);
-        hInst = hinstDLL;
-    }
-    return TRUE;
-}
+extern HINSTANCE atl_instance;
 
 #define ATLVer1Size FIELD_OFFSET(_ATL_MODULEW, dwAtlBuildVer)
 
@@ -142,25 +131,6 @@ HRESULT WINAPI AtlModuleTerm(_ATL_MODULE *pM)
     return S_OK;
 }
 
-HRESULT WINAPI AtlModuleAddTermFunc(_ATL_MODULEW *pM, _ATL_TERMFUNC *pFunc, DWORD_PTR dw)
-{
-    _ATL_TERMFUNC_ELEM *termfunc_elem;
-
-    TRACE("version %04x (%p %p %ld)\n", _ATL_VER, pM, pFunc, dw);
-
-    if (pM->cbSize > ATLVer1Size)
-    {
-        termfunc_elem = HeapAlloc(GetProcessHeap(), 0, sizeof(_ATL_TERMFUNC_ELEM));
-        termfunc_elem->pFunc = pFunc;
-        termfunc_elem->dw = dw;
-        termfunc_elem->pNext = pM->m_pTermFuncs;
-
-        pM->m_pTermFuncs = termfunc_elem;
-    }
-
-    return S_OK;
-}
-
 HRESULT WINAPI AtlModuleRegisterClassObjects(_ATL_MODULEW *pM, DWORD dwClsContext,
                                              DWORD dwFlags)
 {
@@ -566,7 +536,7 @@ HRESULT WINAPI DllGetClassObject(REFCLSID clsid, REFIID riid, LPVOID *ppvObject)
  */
 HRESULT WINAPI DllRegisterServer(void)
 {
-    return __wine_register_resources( hInst );
+    return __wine_register_resources( atl_instance );
 }
 
 /***********************************************************************
@@ -574,7 +544,7 @@ HRESULT WINAPI DllRegisterServer(void)
  */
 HRESULT WINAPI DllUnregisterServer(void)
 {
-    return __wine_unregister_resources( hInst );
+    return __wine_unregister_resources( atl_instance );
 }
 
 /***********************************************************************
@@ -584,12 +554,3 @@ HRESULT WINAPI DllCanUnloadNow(void)
 {
     return S_FALSE;
 }
-
-/***********************************************************************
- *           AtlGetVersion              [ATL.@]
- */
-DWORD WINAPI AtlGetVersion(void *pReserved)
-{
-    TRACE("version %04x (%p)\n", _ATL_VER, pReserved);
-    return _ATL_VER;
-}
diff --git a/dlls/atl100/atl.c b/dlls/atl100/atl.c
index 82412b7..afd8f77 100644
--- a/dlls/atl100/atl.c
+++ b/dlls/atl100/atl.c
@@ -26,6 +26,10 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(atl);
 
+#define ATLVer1Size FIELD_OFFSET(_ATL_MODULEW, dwAtlBuildVer)
+
+HINSTANCE atl_instance;
+
 typedef unsigned char cpp_bool;
 
 static inline void *heap_alloc(size_t len)
@@ -301,16 +305,20 @@ HRESULT WINAPI AtlModuleAddTermFunc(_ATL_MODULE *pM, _ATL_TERMFUNC *pFunc, DWORD
 
     TRACE("version %04x (%p %p %ld)\n", _ATL_VER, pM, pFunc, dw);
 
-    termfunc_elem = HeapAlloc(GetProcessHeap(), 0, sizeof(_ATL_TERMFUNC_ELEM));
-    termfunc_elem->pFunc = pFunc;
-    termfunc_elem->dw = dw;
-    termfunc_elem->pNext = pM->m_pTermFuncs;
+    if (_ATL_VER > _ATL_VER_30 || pM->cbSize > ATLVer1Size) {
+        termfunc_elem = HeapAlloc(GetProcessHeap(), 0, sizeof(_ATL_TERMFUNC_ELEM));
+        termfunc_elem->pFunc = pFunc;
+        termfunc_elem->dw = dw;
+        termfunc_elem->pNext = pM->m_pTermFuncs;
 
-    pM->m_pTermFuncs = termfunc_elem;
+        pM->m_pTermFuncs = termfunc_elem;
+    }
 
     return S_OK;
 }
 
+#if _ATL_VER > _ATL_VER_30
+
 /***********************************************************************
  *           AtlCallTermFunc              [atl100.@]
  */
@@ -330,6 +338,8 @@ void WINAPI AtlCallTermFunc(_ATL_MODULE *pM)
     pM->m_pTermFuncs = NULL;
 }
 
+#endif
+
 /***********************************************************************
  *           AtlLoadTypeLib             [atl100.56]
  */
@@ -386,6 +396,8 @@ HRESULT WINAPI AtlLoadTypeLib(HINSTANCE inst, LPCOLESTR lpszIndex,
     return S_OK;
 }
 
+#if _ATL_VER > _ATL_VER_30
+
 /***********************************************************************
  *           AtlWinModuleInit                          [atl100.65]
  */
@@ -578,6 +590,8 @@ HRESULT WINAPI AtlComModuleUnregisterServer(_ATL_COM_MODULE *mod, BOOL bRegTypeL
     return S_OK;
 }
 
+#endif
+
 /***********************************************************************
  *           AtlRegisterClassCategoriesHelper          [atl100.49]
  */
@@ -819,6 +833,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
 
     switch(fdwReason) {
     case DLL_PROCESS_ATTACH:
+        atl_instance = hinstDLL;
         DisableThreadLibraryCalls(hinstDLL);
         break;
     case DLL_PROCESS_DETACH:
diff --git a/tools/make_specfiles b/tools/make_specfiles
index 2ae321a..a525e0c 100755
--- a/tools/make_specfiles
+++ b/tools/make_specfiles
@@ -119,10 +119,6 @@ my @dll_groups =
   "vcomp90",
  ],
  [
-  "atl100",
-  "atl",
- ],
- [
   "advapi32",
   "api-ms-win-core-localregistry-l1-1-0",
   "api-ms-win-downlevel-advapi32-l1-1-0",




More information about the wine-cvs mailing list