summaryrefslogtreecommitdiffhomepage
path: root/compat
diff options
context:
space:
mode:
Diffstat (limited to 'compat')
-rw-r--r--compat/win32-com.cpp53
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