summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2015-12-06 05:15:07 +0100
committerStanislaw Halik <sthalik@misaki.pl>2015-12-06 05:15:07 +0100
commit1aa7bceaed59770adeb389d6c4c8f5561d0e7402 (patch)
treed4c056105771ca8959e843b74a8d80ab9457d6c2
parent4e74d6edef94e4f2f7caae76088f91e9ee993fba (diff)
api/keys: use a fake window for DirectInput handle
-rw-r--r--opentrack/keybinding-worker.cpp6
-rw-r--r--opentrack/keybinding-worker.hpp4
2 files changed, 5 insertions, 5 deletions
diff --git a/opentrack/keybinding-worker.cpp b/opentrack/keybinding-worker.cpp
index 461f8416..2ac814af 100644
--- a/opentrack/keybinding-worker.cpp
+++ b/opentrack/keybinding-worker.cpp
@@ -35,9 +35,6 @@ KeybindingWorker::~KeybindingWorker() {
}
KeybindingWorker::KeybindingWorker() :
-#ifdef _WIN32
- joy_ctx(win32_joy_ctx::make()),
-#endif
should_quit(true)
{
if (DirectInput8Create(GetModuleHandle(NULL), DIRECTINPUT_VERSION, IID_IDirectInput8, (void**)&din, NULL) != DI_OK) {
@@ -58,7 +55,8 @@ KeybindingWorker::KeybindingWorker() :
din = 0;
return;
}
- if (dinkeyboard->SetCooperativeLevel(GetDesktopWindow(), DISCL_NONEXCLUSIVE | DISCL_BACKGROUND) != DI_OK) {
+
+ if (dinkeyboard->SetCooperativeLevel((HWND) fake_main_window.winId(), DISCL_NONEXCLUSIVE | DISCL_BACKGROUND) != DI_OK) {
dinkeyboard->Release();
din->Release();
din = 0;
diff --git a/opentrack/keybinding-worker.hpp b/opentrack/keybinding-worker.hpp
index c8d8e009..fa50a974 100644
--- a/opentrack/keybinding-worker.hpp
+++ b/opentrack/keybinding-worker.hpp
@@ -19,6 +19,7 @@
#include <QThread>
#include <QMutex>
#include <QWidget>
+#include <QMainWindow>
#include <functional>
#include <vector>
@@ -45,11 +46,12 @@ struct OPENTRACK_EXPORT KeybindingWorker : private QThread
private:
LPDIRECTINPUT8 din;
LPDIRECTINPUTDEVICE8 dinkeyboard;
- win32_joy_ctx& joy_ctx;
+ win32_joy_ctx joy_ctx;
volatile bool should_quit;
using fun = std::function<void(const Key&)>;
std::vector<std::unique_ptr<fun>> receivers;
QMutex mtx;
+ QMainWindow fake_main_window;
void run() override;
KeybindingWorker();