From 936713fe333486c6bdc186f5fbcbe70d44e20917 Mon Sep 17 00:00:00 2001 From: Aric Stewart Date: Tue, 16 Jun 2009 06:25:36 +0900 Subject: [PATCH] msctf: Setup global CompartmentMgr. --- dlls/msctf/msctf.c | 1 + dlls/msctf/msctf_internal.h | 1 + dlls/msctf/threadmgr.c | 18 ++++++++++++++++-- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/dlls/msctf/msctf.c b/dlls/msctf/msctf.c index 675e4d5954c..9729ef3952c 100644 --- a/dlls/msctf/msctf.c +++ b/dlls/msctf/msctf.c @@ -74,6 +74,7 @@ static UINT activated = 0; DWORD tlsIndex = 0; TfClientId processId = 0; +ITfCompartmentMgr *globalCompartmentMgr = NULL; const WCHAR szwSystemTIPKey[] = {'S','O','F','T','W','A','R','E','\\','M','i','c','r','o','s','o','f','t','\\','C','T','F','\\','T','I','P',0}; diff --git a/dlls/msctf/msctf_internal.h b/dlls/msctf/msctf_internal.h index b4e74466e81..8e093eb3b4c 100644 --- a/dlls/msctf/msctf_internal.h +++ b/dlls/msctf/msctf_internal.h @@ -29,6 +29,7 @@ extern DWORD tlsIndex; extern TfClientId processId; +extern ITfCompartmentMgr *globalCompartmentMgr; extern HRESULT ThreadMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut); extern HRESULT DocumentMgr_Constructor(ITfThreadMgrEventSink*, ITfDocumentMgr **ppOut); diff --git a/dlls/msctf/threadmgr.c b/dlls/msctf/threadmgr.c index 490bfc6580b..6d311983f9d 100644 --- a/dlls/msctf/threadmgr.c +++ b/dlls/msctf/threadmgr.c @@ -390,8 +390,22 @@ static HRESULT WINAPI ThreadMgr_GetGlobalCompartment( ITfThreadMgr* iface, ITfCompartmentMgr **ppCompMgr) { ThreadMgr *This = (ThreadMgr *)iface; - FIXME("STUB:(%p)\n",This); - return E_NOTIMPL; + HRESULT hr; + TRACE("(%p) %p\n",This, ppCompMgr); + + if (!ppCompMgr) + return E_INVALIDARG; + + if (!globalCompartmentMgr) + { + hr = CompartmentMgr_Constructor(NULL,&IID_ITfCompartmentMgr,(IUnknown**)&globalCompartmentMgr); + if (FAILED(hr)) + return hr; + } + + ITfCompartmentMgr_AddRef(globalCompartmentMgr); + *ppCompMgr = globalCompartmentMgr; + return S_OK; } static const ITfThreadMgrVtbl ThreadMgr_ThreadMgrVtbl =