summaryrefslogtreecommitdiffhomepage
path: root/ftnoir_protocol_wine
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2013-05-10 01:13:37 +0200
committerStanislaw Halik <sthalik@misaki.pl>2013-05-10 01:13:37 +0200
commit080266d8189dd05756e27a9ddd92c4124d8e3ca0 (patch)
tree84e0d035f75e4968791f1c42742a58f4a13280e3 /ftnoir_protocol_wine
parent7b7e7543d6b6975d31f4c8d53ae18919cd5b7258 (diff)
Project Evil: set path automatically for Wine
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);
+ }
+ }
+}