summaryrefslogtreecommitdiffhomepage
path: root/ftnoir_protocol_fsuipc/ftnoir_protocol_fsuipc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ftnoir_protocol_fsuipc/ftnoir_protocol_fsuipc.cpp')
-rw-r--r--ftnoir_protocol_fsuipc/ftnoir_protocol_fsuipc.cpp6
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
}
}