diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2015-07-03 11:50:41 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2015-07-03 12:05:28 +0200 |
commit | 6aa89934e8f22a580dc8a63cec61fb9ea9d14f23 (patch) | |
tree | 4e640cc9ff28c24e7cdd422884da5f18eb28b54e /ftnoir_protocol_sc/ftnoir_protocol_sc.cpp | |
parent | 2d0ecf757c91c12d9a73420c5f142b652b5e3d7c (diff) |
simconnect: prevent crash with no .dll
Diffstat (limited to 'ftnoir_protocol_sc/ftnoir_protocol_sc.cpp')
-rw-r--r-- | ftnoir_protocol_sc/ftnoir_protocol_sc.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/ftnoir_protocol_sc/ftnoir_protocol_sc.cpp b/ftnoir_protocol_sc/ftnoir_protocol_sc.cpp index 41fcf1b0..8e35248e 100644 --- a/ftnoir_protocol_sc/ftnoir_protocol_sc.cpp +++ b/ftnoir_protocol_sc/ftnoir_protocol_sc.cpp @@ -31,7 +31,7 @@ static QLibrary SCClientLib; -FTNoIR_Protocol::FTNoIR_Protocol() : should_stop(false), hSimConnect(nullptr) +FTNoIR_Protocol::FTNoIR_Protocol() : should_stop(false), hSimConnect(nullptr), should_start(false) { start(); } @@ -40,13 +40,13 @@ FTNoIR_Protocol::~FTNoIR_Protocol() { should_stop = true; wait(); - - if (hSimConnect) - (void) simconnect_close(hSimConnect); } void FTNoIR_Protocol::run() { + if (!should_start) + return; + if (SUCCEEDED(simconnect_open(&hSimConnect, "FaceTrackNoIR", NULL, 0, 0, 0))) { simconnect_subscribetosystemevent(hSimConnect, EVENT_PING, "Frame"); @@ -62,6 +62,8 @@ void FTNoIR_Protocol::run() (void) (simconnect_calldispatch(hSimConnect, processNextSimconnectEvent, reinterpret_cast<void*>(this))); Sleep(3); } + + (void) simconnect_close(hSimConnect); } void FTNoIR_Protocol::pose( const double *headpose ) { @@ -182,6 +184,8 @@ bool FTNoIR_Protocol::correct() } qDebug() << "FTNoIR_Protocol::correct() says: SimConnect functions resolved in DLL!"; + + should_start = true; return true; } |