diff --git a/src/macro-external/opencv/preview-dialog.cpp b/src/macro-external/opencv/preview-dialog.cpp index 34bd6268..2d336ffc 100644 --- a/src/macro-external/opencv/preview-dialog.cpp +++ b/src/macro-external/opencv/preview-dialog.cpp @@ -4,7 +4,6 @@ #include "utility.hpp" #include -#include PreviewDialog::PreviewDialog(QWidget *parent, int delay) : QDialog(parent), @@ -119,6 +118,7 @@ void PreviewDialog::SelectArea() void PreviewDialog::Stop() { _stop = true; + _cv.notify_all(); if (_thread.joinable()) { _thread.join(); } @@ -189,13 +189,12 @@ void PreviewDialog::Start() void PreviewDialog::CheckForMatchLoop() { - std::condition_variable cv; while (!_stop) { std::unique_lock lock(_mtx); auto source = obs_weak_source_get_source(_video.GetVideo()); ScreenshotHelper screenshot(source); obs_source_release(source); - cv.wait_for(lock, std::chrono::milliseconds(_delay)); + _cv.wait_for(lock, std::chrono::milliseconds(_delay)); if (_stop || isHidden()) { return; } diff --git a/src/macro-external/opencv/preview-dialog.hpp b/src/macro-external/opencv/preview-dialog.hpp index ac8836b2..1b01f5e2 100644 --- a/src/macro-external/opencv/preview-dialog.hpp +++ b/src/macro-external/opencv/preview-dialog.hpp @@ -12,6 +12,7 @@ #include #include +#include class PreviewDialog : public QDialog { Q_OBJECT @@ -62,6 +63,7 @@ private: std::atomic_bool _selectingArea = {false}; std::mutex _mtx; + std::condition_variable _cv; std::thread _thread; std::atomic_bool _stop = {true};