summaryrefslogtreecommitdiffhomepage
path: root/compat
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2016-08-15 10:13:53 +0200
committerStanislaw Halik <sthalik@misaki.pl>2016-08-15 10:13:53 +0200
commit7cde5013b510d997c8048512f44d87e854480bd0 (patch)
tree3b1b628b5c2c57410029d24d29280044e846a237 /compat
parenta95313c4ecde314abeb00ee9b5cb287e64658e83 (diff)
dinput, COM: temporary fixes, to be tested
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