diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2018-03-10 18:26:09 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2018-03-10 18:35:13 +0100 |
commit | 527a230c06a272a2cb058d6c90779295428ded43 (patch) | |
tree | 314c045d9f9afb91b1f07cf69e1086df2c61f7f4 /contrib | |
parent | 96ac77abb5c4f8cd22135034c8a1270cf946ceca (diff) |
contrib/npclient: prevent multiple game conflict
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/npclient/npclient.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/contrib/npclient/npclient.c b/contrib/npclient/npclient.c index 7b2866f0..92de9ca7 100644 --- a/contrib/npclient/npclient.c +++ b/contrib/npclient/npclient.c @@ -14,7 +14,7 @@ #define UNUSED(var) (void)var -//#define DEBUG +#define DEBUG typedef struct TFreeTrackData { @@ -55,6 +55,7 @@ typedef struct FTMemMap #define NP_EXPORT(t) t NP_DECLSPEC __stdcall #define NP_AXIS_MAX 16383 +static uint32_t volatile game_id_local; static HANDLE hFTMemMap = 0; static FTMemMap* pMemData = 0; @@ -66,7 +67,17 @@ static FTMemMap* pMemData = 0; #ifdef DEBUG # include <stdio.h> -# define dbg_report(...) do { if (debug_stream) { fprintf(debug_stream, __VA_ARGS__); fprintf(debug_stream, "\n"); fflush(debug_stream); } } while (0) +# define dbg_report(...) \ + do \ + { \ + if (debug_stream) \ + { \ + fprintf(debug_stream, __VA_ARGS__); \ + fprintf(debug_stream, "\n"); \ + fflush(debug_stream); \ + } \ + } while (0) + static FILE *debug_stream; #else # define dbg_report(...) do { (void)0; } while (0) @@ -348,7 +359,9 @@ NP_EXPORT(int) NP_GetData(tir_data* data) return NPCLIENT_STATUS_DISABLED; } - if (pMemData->GameId > 0 && pMemData->GameId == pMemData->GameId2) + if (game_id_local > 0 && + pMemData->GameId == game_id_local && + pMemData->GameId == pMemData->GameId2) { y = pMemData->data.Yaw * NP_AXIS_MAX / M_PI; p = pMemData->data.Pitch * NP_AXIS_MAX / M_PI; @@ -548,7 +561,10 @@ NP_EXPORT(int) NP_ReCenter(void) NP_EXPORT(int) NP_RegisterProgramProfileID(unsigned short id) { if (FTCreateMapping()) + { pMemData->GameId = id; + game_id_local = id; + } dbg_report("RegisterProgramProfileID request: %d\n", id); return 0; } |