diff options
| author | Stanislaw Halik <sthalik@misaki.pl> | 2018-01-04 09:23:06 +0100 | 
|---|---|---|
| committer | Stanislaw Halik <sthalik@misaki.pl> | 2018-01-04 09:23:06 +0100 | 
| commit | 4a2d23c14089cb98901e3df535037f7d8095e9a7 (patch) | |
| tree | b8f2f00e62a3575eb24853ea2dc83989b4d3195d | |
| parent | 89a18bbb9a42d7bb54efe292bdc4f792176008fb (diff) | |
main: workaround crash on exit without terminating process
| -rw-r--r-- | api/plugin-support.hpp | 2 | ||||
| -rw-r--r-- | gui/main.cpp | 3 | ||||
| -rw-r--r-- | proto-fsuipc/ftnoir_protocol_fsuipc.cpp | 1 | ||||
| -rw-r--r-- | proto-simconnect/ftnoir_protocol_sc.cpp | 1 | 
4 files changed, 5 insertions, 2 deletions
| diff --git a/api/plugin-support.hpp b/api/plugin-support.hpp index acba925c..85b8653c 100644 --- a/api/plugin-support.hpp +++ b/api/plugin-support.hpp @@ -62,7 +62,7 @@ struct dylib final              return;          handle.setFileName(filename_); -        handle.setLoadHints(QLibrary::DeepBindHint | QLibrary::ResolveAllSymbolsHint); +        handle.setLoadHints(QLibrary::DeepBindHint | QLibrary::ResolveAllSymbolsHint | QLibrary::PreventUnloadHint);          if (check(!handle.load()))              return; diff --git a/gui/main.cpp b/gui/main.cpp index 3739232f..5d43cc14 100644 --- a/gui/main.cpp +++ b/gui/main.cpp @@ -202,7 +202,8 @@ main(int argc, char** argv)      while (false);      // msvc crashes in Qt plugin system's dtor -#if defined(_MSC_VER) +    // Note: QLibrary::PreventUnloadHint seems to workaround it +#if defined(_MSC_VER) && 0      qDebug() << "exit: terminating";      TerminateProcess(GetCurrentProcess(), 0);  #endif diff --git a/proto-fsuipc/ftnoir_protocol_fsuipc.cpp b/proto-fsuipc/ftnoir_protocol_fsuipc.cpp index bdb67c3f..64a14f5f 100644 --- a/proto-fsuipc/ftnoir_protocol_fsuipc.cpp +++ b/proto-fsuipc/ftnoir_protocol_fsuipc.cpp @@ -147,6 +147,7 @@ void fsuipc::pose(const double *headpose ) {  module_status fsuipc::initialize()  {      FSUIPCLib.setFileName( s.LocationOfDLL ); +    FSUIPCLib.setLoadHints(QLibrary::PreventUnloadHint);      if (FSUIPCLib.load() != true)          return error(_("Can't load fsuipc at '%1'").arg(s.LocationOfDLL)); diff --git a/proto-simconnect/ftnoir_protocol_sc.cpp b/proto-simconnect/ftnoir_protocol_sc.cpp index 1a844429..812fdcb3 100644 --- a/proto-simconnect/ftnoir_protocol_sc.cpp +++ b/proto-simconnect/ftnoir_protocol_sc.cpp @@ -170,6 +170,7 @@ module_status simconnect::initialize()          if (ctx.is_ok())          {              SCClientLib.setFileName("SimConnect.dll"); +            SCClientLib.setLoadHints(QLibrary::PreventUnloadHint);              if (!SCClientLib.load())                  return error(tr("dll load failed -- %1").arg(SCClientLib.errorString()));          } | 
