summaryrefslogtreecommitdiffhomepage
path: root/opentrack-logic/dinput.hpp
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2016-07-07 14:15:18 +0200
committerStanislaw Halik <sthalik@misaki.pl>2016-07-07 14:15:18 +0200
commit5f5ca66c58ad30d0c218b2da904aa3f722e18ebe (patch)
tree8e8d5bae3ca7edf6c96c7f0e0da87f347486b045 /opentrack-logic/dinput.hpp
parentc418644838e99416fb168066bacc28a4cbc36a04 (diff)
logic/dinput: only ever use a single handle to DIRECTINPUT8 COM object
Diffstat (limited to 'opentrack-logic/dinput.hpp')
-rw-r--r--opentrack-logic/dinput.hpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/opentrack-logic/dinput.hpp b/opentrack-logic/dinput.hpp
new file mode 100644
index 00000000..9300f39f
--- /dev/null
+++ b/opentrack-logic/dinput.hpp
@@ -0,0 +1,27 @@
+#pragma once
+
+#ifdef _WIN32
+
+#ifndef DIRECTINPUT_VERSION
+# define DIRECTINPUT_VERSION 0x800
+#endif
+#include <dinput.h>
+#include <windows.h>
+
+struct dinput_handle final
+{
+ using di_t = LPDIRECTINPUT8;
+private:
+ static dinput_handle self;
+ dinput_handle();
+ ~dinput_handle();
+ static di_t init_di();
+ di_t handle;
+public:
+ static di_t make_di();
+
+ dinput_handle(const dinput_handle&) = delete;
+ dinput_handle(dinput_handle&&) = delete;
+};
+
+#endif