diff options
Diffstat (limited to 'compat')
-rw-r--r-- | compat/win32-com.cpp | 53 |
1 files changed, 11 insertions, 42 deletions
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 <QString> #include <QThread> #include <QDebug> 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 |