diff --git a/plugins/win-dshow/virtualcam-module/virtualcam-filter.cpp b/plugins/win-dshow/virtualcam-module/virtualcam-filter.cpp index b39a91be15f8f0..6b128736754c53 100644 --- a/plugins/win-dshow/virtualcam-module/virtualcam-filter.cpp +++ b/plugins/win-dshow/virtualcam-module/virtualcam-filter.cpp @@ -16,6 +16,9 @@ extern volatile long locks; VCamFilter::VCamFilter() : OutputFilter() { + os_atomic_inc_long(&locks); + AddRef(); + thread_start = CreateEvent(nullptr, true, false, nullptr); thread_stop = CreateEvent(nullptr, true, false, nullptr); @@ -94,9 +97,6 @@ VCamFilter::VCamFilter() : OutputFilter() /* ---------------------------------------- */ th = std::thread([this] { Thread(); }); - - AddRef(); - os_atomic_inc_long(&locks); } VCamFilter::~VCamFilter() diff --git a/plugins/win-dshow/virtualcam-module/virtualcam-module.cpp b/plugins/win-dshow/virtualcam-module/virtualcam-module.cpp index 23e0ee4240b7a4..5d6eac2ce9f2fb 100644 --- a/plugins/win-dshow/virtualcam-module/virtualcam-module.cpp +++ b/plugins/win-dshow/virtualcam-module/virtualcam-module.cpp @@ -17,7 +17,8 @@ class VCamFactory : public IClassFactory { CLSID cls; public: - inline VCamFactory(CLSID cls_) : cls(cls_) {} + inline VCamFactory(CLSID cls_) : cls(cls_) { os_atomic_inc_long(&locks); } + inline ~VCamFactory() { os_atomic_dec_long(&locks); } // IUnknown STDMETHODIMP QueryInterface(REFIID riid, void **p_ptr);