Jacek Caban : atl100: Added AtlWinModuleExtractCreateWndData implementation .

Alexandre Julliard julliard at winehq.org
Wed Dec 19 14:01:11 CST 2012


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Dec 19 14:16:57 2012 +0100

atl100: Added AtlWinModuleExtractCreateWndData implementation.

---

 dlls/atl100/atl.c       |   28 ++++++++++++++++++++++++++++
 dlls/atl100/atl100.spec |    2 +-
 include/atlbase.h       |    1 +
 3 files changed, 30 insertions(+), 1 deletions(-)

diff --git a/dlls/atl100/atl.c b/dlls/atl100/atl.c
index bd3fbf1..570fe5c 100644
--- a/dlls/atl100/atl.c
+++ b/dlls/atl100/atl.c
@@ -319,6 +319,34 @@ void WINAPI AtlWinModuleAddCreateWndData(_ATL_WIN_MODULE *pM, _AtlCreateWndData
 }
 
 /***********************************************************************
+ *           AtlWinModuleExtractCreateWndData          [atl100.44]
+ */
+void* WINAPI AtlWinModuleExtractCreateWndData(_ATL_WIN_MODULE *winmod)
+{
+    _AtlCreateWndData *iter, *prev = NULL;
+    DWORD thread_id;
+
+    TRACE("(%p)\n", winmod);
+
+    thread_id = GetCurrentThreadId();
+
+    EnterCriticalSection(&winmod->m_csWindowCreate);
+
+    for(iter = winmod->m_pCreateWndList; iter && iter->m_dwThreadID != thread_id; iter = iter->m_pNext)
+        prev = iter;
+    if(iter) {
+        if(prev)
+            prev->m_pNext = iter->m_pNext;
+        else
+            winmod->m_pCreateWndList = iter->m_pNext;
+    }
+
+    LeaveCriticalSection(&winmod->m_csWindowCreate);
+
+    return iter ? iter->m_pThis : NULL;
+}
+
+/***********************************************************************
  *           AtlComModuleGetClassObject                [atl100.15]
  */
 HRESULT WINAPI AtlComModuleGetClassObject(_ATL_COM_MODULE *pm, REFCLSID rclsid, REFIID riid, void **ppv)
diff --git a/dlls/atl100/atl100.spec b/dlls/atl100/atl100.spec
index 11cac7d..0c27070 100644
--- a/dlls/atl100/atl100.spec
+++ b/dlls/atl100/atl100.spec
@@ -27,7 +27,7 @@
 41 stdcall AtlAxAttachControl(ptr ptr ptr)
 42 stdcall AtlAxWinInit()
 43 stdcall AtlWinModuleAddCreateWndData(ptr ptr ptr)
-44 stub AtlWinModuleExtractCreateWndData
+44 stdcall AtlWinModuleExtractCreateWndData(ptr)
 45 stub AtlWinModuleRegisterWndClassInfoW
 46 stub AtlWinModuleRegisterWndClassInfoA
 47 stdcall AtlAxGetControl(long ptr)
diff --git a/include/atlbase.h b/include/atlbase.h
index 95b1f2a..831150d 100644
--- a/include/atlbase.h
+++ b/include/atlbase.h
@@ -223,6 +223,7 @@ HRESULT WINAPI AtlMarshalPtrInProc(IUnknown *pUnk, const IID *iid, IStream **ppS
 void    WINAPI AtlModuleAddCreateWndData(_ATL_MODULEW *pM, _AtlCreateWndData *pData, void* pvObject);
 HRESULT WINAPI AtlWinModuleInit(_ATL_WIN_MODULE*);
 void    WINAPI AtlWinModuleAddCreateWndData(_ATL_WIN_MODULE*,_AtlCreateWndData*,void*);
+void*   WINAPI AtlWinModuleExtractCreateWndData(_ATL_WIN_MODULE*);
 HRESULT WINAPI AtlModuleAddTermFunc(_ATL_MODULE *pM, _ATL_TERMFUNC *pFunc, DWORD_PTR dw);
 void WINAPI AtlCallTermFunc(_ATL_MODULE*);
 void*  WINAPI AtlModuleExtractCreateWndData(_ATL_MODULEW *pM);




More information about the wine-cvs mailing list