diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2016-08-12 17:06:14 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@CROOKED-SCHEMER> | 2016-08-12 17:11:40 +0200 |
commit | 33c1683b37265001eb91024290f7137c5b3c5411 (patch) | |
tree | f1a620e9fdba06590d9db14ae8c352a3ad2ddc47 /opentrack-dinput/keybinding-worker.cpp | |
parent | edbd6759b563026435476ade5dc1e92cfa187263 (diff) |
dinput: hold dinput reference through entire lifetime
Diffstat (limited to 'opentrack-dinput/keybinding-worker.cpp')
-rw-r--r-- | opentrack-dinput/keybinding-worker.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/opentrack-dinput/keybinding-worker.cpp b/opentrack-dinput/keybinding-worker.cpp index a009d399..32bfc6f0 100644 --- a/opentrack-dinput/keybinding-worker.cpp +++ b/opentrack-dinput/keybinding-worker.cpp @@ -25,6 +25,8 @@ bool Key::should_process() KeybindingWorker::~KeybindingWorker() { + qDebug() << "exit: destroying keybinding worker"; + should_quit = true; wait(); if (dinkeyboard) { @@ -33,9 +35,15 @@ KeybindingWorker::~KeybindingWorker() } } -KeybindingWorker::KeybindingWorker() : should_quit(true) +void KeybindingWorker::init() { - LPDIRECTINPUT8 din = dinput_handle::make_di(); + din = dinput_handle::make_di(); + + if (!din) + { + qDebug() << "can't create dinput handle"; + return; + } if (din->CreateDevice(GUID_SysKeyboard, &dinkeyboard, NULL) != DI_OK) { qDebug() << "setup CreateDevice function failed!" << GetLastError(); @@ -63,8 +71,10 @@ KeybindingWorker::KeybindingWorker() : should_quit(true) qDebug() << "setup dinkeyboard Acquire failed!" << GetLastError(); return; } +} - should_quit = false; +KeybindingWorker::KeybindingWorker() : should_quit(false) +{ start(); } @@ -76,6 +86,8 @@ KeybindingWorker& KeybindingWorker::make() void KeybindingWorker::run() { + init(); + BYTE keystate[256] = {0}; BYTE old_keystate[256] = {0}; |