summaryrefslogtreecommitdiffhomepage
path: root/ftnoir_protocol_wine
diff options
context:
space:
mode:
Diffstat (limited to 'ftnoir_protocol_wine')
-rw-r--r--ftnoir_protocol_wine/opentrack-wrapper-wine-main.cxx4
-rw-r--r--ftnoir_protocol_wine/opentrack-wrapper-wine-windows.cxx26
2 files changed, 30 insertions, 0 deletions
diff --git a/ftnoir_protocol_wine/opentrack-wrapper-wine-main.cxx b/ftnoir_protocol_wine/opentrack-wrapper-wine-main.cxx
index 9d8914bd..39bef955 100644
--- a/ftnoir_protocol_wine/opentrack-wrapper-wine-main.cxx
+++ b/ftnoir_protocol_wine/opentrack-wrapper-wine-main.cxx
@@ -3,6 +3,9 @@
#include "ftnoir_protocol_ft/fttypes.h"
#include "ftnoir_protocol_wine/wine-shm.h"
#include "ftnoir_tracker_base/ftnoir_tracker_types.h"
+
+void create_registry_key(void);
+
class ShmPosix {
public:
ShmPosix(const char *shmName, const char *mutexName, int mapSize);
@@ -41,6 +44,7 @@ int main(void)
WineSHM* shm_posix = (WineSHM*) lck_posix.mem;
FTMemMap* shm_wine = (FTMemMap*) lck_wine.mem;
TFreeTrackData* data = &shm_wine->data;
+ create_registry_key();
while (1) {
(void) Sleep(10);
lck_posix.lock();
diff --git a/ftnoir_protocol_wine/opentrack-wrapper-wine-windows.cxx b/ftnoir_protocol_wine/opentrack-wrapper-wine-windows.cxx
index a0f444c2..86ba4a41 100644
--- a/ftnoir_protocol_wine/opentrack-wrapper-wine-windows.cxx
+++ b/ftnoir_protocol_wine/opentrack-wrapper-wine-windows.cxx
@@ -5,3 +5,29 @@
#include "ftnoir_protocol_ft/fttypes.h"
#include "compat/compat.h"
#include "compat/compat.cpp"
+#include <string.h>
+
+void create_registry_key(void) {
+ char dir[8192];
+
+ if (GetCurrentDirectoryA(8192, dir) < 8192)
+ {
+ HKEY hkpath;
+ if (RegCreateKeyExA(HKEY_CURRENT_USER,
+ "Software\\NaturalPoint\\NATURALPOINT\\NPClient Location",
+ 0,
+ NULL,
+ 0,
+ KEY_ALL_ACCESS,
+ NULL,
+ &hkpath,
+ NULL) == ERROR_SUCCESS)
+ {
+ for (int i = 0; dir[i]; i++)
+ if (dir[i] == '\\')
+ dir[i] = '/';
+ (void) RegSetValueExA(hkpath, "Path", 0, REG_SZ, (BYTE*) dir, strlen(dir) + 1);
+ RegCloseKey(hkpath);
+ }
+ }
+}