diff options
Diffstat (limited to 'ftnoir_protocol_fsuipc/ftnoir_protocol_fsuipc.cpp')
-rw-r--r-- | ftnoir_protocol_fsuipc/ftnoir_protocol_fsuipc.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/ftnoir_protocol_fsuipc/ftnoir_protocol_fsuipc.cpp b/ftnoir_protocol_fsuipc/ftnoir_protocol_fsuipc.cpp index a7bb4a39..486224c9 100644 --- a/ftnoir_protocol_fsuipc/ftnoir_protocol_fsuipc.cpp +++ b/ftnoir_protocol_fsuipc/ftnoir_protocol_fsuipc.cpp @@ -39,7 +39,8 @@ FTNoIR_Protocol::FTNoIR_Protocol() FTNoIR_Protocol::~FTNoIR_Protocol() { - FSUIPCLib.unload(); + FSUIPC_Close(); + FSUIPCLib.unload(); } int FTNoIR_Protocol::scale2AnalogLimits( float x, float min_x, float max_x ) { @@ -126,6 +127,9 @@ void FTNoIR_Protocol::pose(const double *headpose ) { // FSUIPC_Process(&result); if (result == FSUIPC_ERR_SENDMSG) { + // FSUIPC checks for already open connections and returns FSUIPC_ERR_OPEN in that case + // the connection scope is global for the process. this is why above code doesn't + // leak resources or have logic errors. see: http://www.purebasic.fr/english/viewtopic.php?t=31112 FSUIPC_Close(); //timeout (1 second) so assume FS closed } } |