Jacek Caban : atl100: Added AtlCallTermFunc implementation ( based on AtlModuleTerm).

Alexandre Julliard julliard at winehq.org
Mon Dec 10 14:00:39 CST 2012


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Dec 10 12:27:47 2012 +0100

atl100: Added AtlCallTermFunc implementation (based on AtlModuleTerm).

---

 dlls/atl100/atl.c       |   19 +++++++++++++++++++
 dlls/atl100/atl100.spec |    2 +-
 dlls/atl80/atl80.spec   |    2 +-
 include/atlbase.h       |    1 +
 4 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/dlls/atl100/atl.c b/dlls/atl100/atl.c
index 69a6e9e..dd08867 100644
--- a/dlls/atl100/atl.c
+++ b/dlls/atl100/atl.c
@@ -246,6 +246,25 @@ HRESULT WINAPI AtlModuleAddTermFunc(_ATL_MODULE *pM, _ATL_TERMFUNC *pFunc, DWORD
 }
 
 /***********************************************************************
+ *           AtlCallTermFunc              [atl100.@]
+ */
+void WINAPI AtlCallTermFunc(_ATL_MODULE *pM)
+{
+    _ATL_TERMFUNC_ELEM *iter = pM->m_pTermFuncs, *tmp;
+
+    TRACE("(%p)\n", pM);
+
+    while(iter) {
+        iter->pFunc(iter->dw);
+        tmp = iter;
+        iter = iter->pNext;
+        HeapFree(GetProcessHeap(), 0, tmp);
+    }
+
+    pM->m_pTermFuncs = NULL;
+}
+
+/***********************************************************************
  *           AtlGetVersion              [atl100.@]
  */
 DWORD WINAPI AtlGetVersion(void *pReserved)
diff --git a/dlls/atl100/atl100.spec b/dlls/atl100/atl100.spec
index 7ba8154..47e3c56 100644
--- a/dlls/atl100/atl100.spec
+++ b/dlls/atl100/atl100.spec
@@ -45,7 +45,7 @@
 61 stdcall AtlCreateRegistrar(ptr)
 62 stub AtlWinModuleRegisterClassExW
 63 stub AtlWinModuleRegisterClassExA
-64 stub AtlCallTermFunc
+64 stdcall AtlCallTermFunc(ptr)
 65 stub AtlWinModuleInit
 66 stub AtlWinModuleTerm
 67 stub AtlSetPerUserRegistration
diff --git a/dlls/atl80/atl80.spec b/dlls/atl80/atl80.spec
index c674ed2..6756776 100644
--- a/dlls/atl80/atl80.spec
+++ b/dlls/atl80/atl80.spec
@@ -51,6 +51,6 @@
 61 stdcall AtlCreateRegistrar(ptr) atl100.AtlCreateRegistrar
 62 stub AltWinModuleRegisterClassExW
 63 stub AltWinModuleRegisterClassExA
-64 stub AltCallTermFunc
+64 stdcall AltCallTermFunc(ptr) atl100.AltCallTermFunc
 65 stub AltWinModuleInit
 66 stub AltWinModuleTerm
diff --git a/include/atlbase.h b/include/atlbase.h
index fbf1479..1e48f58 100644
--- a/include/atlbase.h
+++ b/include/atlbase.h
@@ -196,6 +196,7 @@ HRESULT WINAPI AtlInternalQueryInterface(void* pThis, const _ATL_INTMAP_ENTRY* p
 HRESULT WINAPI AtlMarshalPtrInProc(IUnknown *pUnk, const IID *iid, IStream **ppStream);
 void    WINAPI AtlModuleAddCreateWndData(_ATL_MODULEW *pM, _AtlCreateWndData *pData, void* pvObject);
 HRESULT WINAPI AtlModuleAddTermFunc(_ATL_MODULE *pM, _ATL_TERMFUNC *pFunc, DWORD_PTR dw);
+void WINAPI AtlCallTermFunc(_ATL_MODULE*);
 void*  WINAPI AtlModuleExtractCreateWndData(_ATL_MODULEW *pM);
 HRESULT WINAPI AtlModuleInit(_ATL_MODULEW* pM, _ATL_OBJMAP_ENTRYW* p, HINSTANCE h);
 HRESULT WINAPI AtlModuleLoadTypeLib(_ATL_MODULEW *pM, LPCOLESTR lpszIndex, BSTR *pbstrPath, ITypeLib **ppTypeLib);




More information about the wine-cvs mailing list