From 7cde5013b510d997c8048512f44d87e854480bd0 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Mon, 15 Aug 2016 10:13:53 +0200 Subject: dinput, COM: temporary fixes, to be tested --- compat/win32-com.cpp | 53 +++++++++++----------------------------------------- 1 file changed, 11 insertions(+), 42 deletions(-) (limited to 'compat/win32-com.cpp') diff --git a/compat/win32-com.cpp b/compat/win32-com.cpp index a037b3ba..689e1411 100644 --- a/compat/win32-com.cpp +++ b/compat/win32-com.cpp @@ -2,61 +2,30 @@ #include "win32-com.hpp" +#include "compat/util.hpp" + #include #include #include bool OPENTRACK_COMPAT_EXPORT init_com_threading(com_type t) { - static thread_local com_type initialized = com_type(-1); - - if (initialized != com_type(-1)) - { - if (t != initialized) - { - QString tp("invalid type"); - switch (t) - { - case com_apartment: - tp = "apartment threaded"; - break; - case com_multithreaded: - tp = "multithreaded"; - break; - } - - qDebug() << "COM for thread" - << QThread::currentThread() << QThread::currentThreadId() - << "already initialized to" << tp; - - return false; - } - - return true; - } - HRESULT ret = CoInitializeEx(0, t); if (ret != S_OK && ret != S_FALSE) { - qDebug() << "CoInitializeEx failed:" << ret << GetLastError(); + qDebug() << "CoInitializeEx failed" << (progn ( + switch (ret) + { + case RPC_E_CHANGED_MODE: + return QStringLiteral("COM threading mode already set"); + default: + return QStringLiteral("Unknown error ") + QString::number(long(ret)); + } + )); return false; } -#if 0 - if (t == com_apartment) - { - ret = OleInitialize(nullptr); - - if (ret != S_OK && ret != S_FALSE) - qDebug() << "OleInitialize() failed:" << ret << GetLastError(); - - return false; - } -#endif - - initialized = t; - return true; } #endif -- cgit v1.2.3