Module: wine Branch: master Commit: c0456aea76bcd8ce77d7c91dfc95a5ff8670e344 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c0456aea76bcd8ce77d7c91dfc...
Author: Jacek Caban jacek@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);