diff --git a/source/plugin.cpp b/source/plugin.cpp index 00e363c..ea304a2 100644 --- a/source/plugin.cpp +++ b/source/plugin.cpp @@ -136,7 +136,6 @@ MODULE_EXPORT void obs_module_unload(void) _streamfx_gfx_opengl.reset(); } - DLOG_INFO("Unloaded Version %s", STREAMFX_VERSION_STRING); } catch (std::exception const& ex) { DLOG_ERROR("Unexpected exception in function '%s': %s", __FUNCTION_NAME__, ex.what()); diff --git a/source/windll.cpp b/source/windll.cpp index 14fefe7..0d561d4 100644 --- a/source/windll.cpp +++ b/source/windll.cpp @@ -4,9 +4,25 @@ #include "warning-disable.hpp" #include +#include #include "warning-enable.hpp" -BOOL WINAPI DllMain(HINSTANCE, DWORD, LPVOID) +std::shared_ptr local_mutex; +std::shared_ptr global_mutex; + +BOOL WINAPI DllMain(HINSTANCE, DWORD dwReason, LPVOID) { + if (dwReason == DLL_PROCESS_ATTACH) { + // Prevent installer from progressing while StreamFX is still active. + local_mutex = std::shared_ptr(CreateMutexW(NULL, TRUE, L"Local\\StreamFX-Setup"), [](HANDLE p) { + ReleaseMutex(p); + CloseHandle(p); + }); + global_mutex = std::shared_ptr(CreateMutexW(NULL, TRUE, L"Global\\StreamFX-Setup"), [](HANDLE p) { + ReleaseMutex(p); + CloseHandle(p); + }); + } + return TRUE; }