Ulrich Czekalla : atl: Implement AtlComPtrAssign.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Dec 26 11:46:00 CST 2005


Module: wine
Branch: refs/heads/master
Commit: 9da8128e4f3e0a340752053c03efda749b4126b4
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=9da8128e4f3e0a340752053c03efda749b4126b4

Author: Ulrich Czekalla <ulrich at codeweavers.com>
Date:   Mon Dec 26 12:55:22 2005 +0100

atl: Implement AtlComPtrAssign.
According to MSDN AtlModuleInit should initialize the modules critical
sections.

---

 dlls/atl/atl.spec   |    2 +-
 dlls/atl/atl_main.c |   15 +++++++++++++++
 2 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/dlls/atl/atl.spec b/dlls/atl/atl.spec
index 471a194..9d0b482 100644
--- a/dlls/atl/atl.spec
+++ b/dlls/atl/atl.spec
@@ -22,7 +22,7 @@
 27 stub AtlHiMetricToPixel
 28 stub AtlPixelToHiMetric
 29 stub AtlDevModeW2A
-30 stub AtlComPtrAssign
+30 stdcall AtlComPtrAssign(ptr ptr)
 31 stub AtlComQIPtrAssign
 32 stdcall AtlInternalQueryInterface(ptr ptr ptr ptr)
 34 stub AtlGetVersion
diff --git a/dlls/atl/atl_main.c b/dlls/atl/atl_main.c
index bcf25f0..a620f9e 100644
--- a/dlls/atl/atl_main.c
+++ b/dlls/atl/atl_main.c
@@ -73,6 +73,10 @@ HRESULT WINAPI AtlModuleInit(_ATL_MODULE
     pM->m_pObjMap = p;
     pM->m_hHeap = GetProcessHeap();
 
+    InitializeCriticalSection(&pM->u.m_csTypeInfoHolder);
+    InitializeCriticalSection(&pM->m_csWindowCreate);
+    InitializeCriticalSection(&pM->m_csObjMap);
+
     /* call mains */
     i = 0;
     if (pM->m_pObjMap != NULL  && size > ATLVer1Size)
@@ -181,6 +185,17 @@ BOOL WINAPI AtlAxWinInit(void)
 }
 
 
+IUnknown* WINAPI AtlComPtrAssign(IUnknown** pp, IUnknown *p)
+{
+    TRACE("(%p %p)\n", pp, p);
+
+    if (p) IUnknown_AddRef(p);
+    if (*pp) IUnknown_Release(*pp);
+    *pp = p;
+    return p;
+}
+
+
 HRESULT WINAPI AtlInternalQueryInterface(LPVOID this, const _ATL_INTMAP_ENTRY* pEntries,  REFIID iid, LPVOID* ppvObject)
 {
     int i = 0;




More information about the wine-cvs mailing list