Module: wine Branch: master Commit: 71ada5c65472ce16ac5cd9bcf317bec0b49ae027 URL: http://source.winehq.org/git/wine.git/?a=commit;h=71ada5c65472ce16ac5cd9bcf3...
Author: Rob Shearman rob@codeweavers.com Date: Tue May 8 00:03:18 2007 +0100
ole32: Add a test for the retrieved local class object in another thread being a proxy.
---
dlls/ole32/tests/compobj.c | 27 ++++++++++++++++++++++++++- 1 files changed, 26 insertions(+), 1 deletions(-)
diff --git a/dlls/ole32/tests/compobj.c b/dlls/ole32/tests/compobj.c index 739dec1..12fe4f6 100644 --- a/dlls/ole32/tests/compobj.c +++ b/dlls/ole32/tests/compobj.c @@ -747,6 +747,31 @@ static DWORD CALLBACK get_class_object_thread(LPVOID pv) return hr; }
+static DWORD CALLBACK get_class_object_proxy_thread(LPVOID pv) +{ + CLSCTX clsctx = (CLSCTX)(DWORD_PTR)pv; + HRESULT hr; + IClassFactory *pcf; + IMultiQI *pMQI; + + pCoInitializeEx(NULL, COINIT_APARTMENTTHREADED); + + hr = CoGetClassObject(&CLSID_WineOOPTest, clsctx, NULL, &IID_IClassFactory, + (void **)&pcf); + + if (SUCCEEDED(hr)) + { + hr = IClassFactory_QueryInterface(pcf, &IID_IMultiQI, (void **)&pMQI); + if (SUCCEEDED(hr)) + IMultiQI_Release(pMQI); + IClassFactory_Release(pcf); + } + + CoUninitialize(); + + return hr; +} + static DWORD CALLBACK register_class_object_thread(LPVOID pv) { HRESULT hr; @@ -821,7 +846,7 @@ static void test_registered_object_thread_affinity(void) CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE, &cookie); ok_ole_success(hr, "CoRegisterClassObject");
- thread = CreateThread(NULL, 0, get_class_object_thread, (LPVOID)CLSCTX_LOCAL_SERVER, 0, &tid); + thread = CreateThread(NULL, 0, get_class_object_proxy_thread, (LPVOID)CLSCTX_LOCAL_SERVER, 0, &tid); ok(thread != NULL, "CreateThread failed with error %d\n", GetLastError()); while (MsgWaitForMultipleObjects(1, &thread, FALSE, INFINITE, QS_ALLINPUT) == WAIT_OBJECT_0 + 1) {