diff --git a/src/playback_thread.cpp b/src/playback_thread.cpp index b56a277..5d25377 100644 --- a/src/playback_thread.cpp +++ b/src/playback_thread.cpp @@ -393,12 +393,10 @@ void Playback::run() { frame = temp_frame; } - mutex.unlock(); static std::vector cur; - mutex_shown.lock(); cur = current; - mutex_shown.unlock(); ac::orig_frame = frame.clone(); + mutex.unlock(); mutex.lock(); if(cycle_on > 0) { cv::Mat *cycle_image = 0; @@ -437,9 +435,11 @@ void Playback::run() { mutex.unlock(); if(single_mode == true && alpha > 0) { + mutex.lock(); if(fadefilter == true) filterFade(frame, current_filter, prev_filter, alpha); drawEffects(frame); alpha -= 0.08; + mutex.unlock(); } else if(single_mode == true) { mutex.lock(); ac::setSubFilter(-1); diff --git a/src/playback_thread.h b/src/playback_thread.h index cf22329..9d41295 100644 --- a/src/playback_thread.h +++ b/src/playback_thread.h @@ -23,35 +23,35 @@ private: QWaitCondition condition; cv::Mat frame; double frame_rate; - bool recording; + std::atomic recording; cv::VideoCapture capture; cv::VideoWriter writer; cv::Mat rgb_frame; QImage img; std::vector current; - bool isPaused, isStep; - bool record_png; - int png_index; + std::atomic isPaused, isStep; + std::atomic record_png; + std::atomic png_index; std::string png_path; VideoMode mode; - int device_num; + std::atomic device_num; std::string file_name_png; unsigned long *frame_index; - unsigned int red, green, blue; - unsigned int bright_, gamma_, saturation_; - bool single_mode; + std::atomic red, green, blue; + std::atomic bright_, gamma_, saturation_; + std::atomic single_mode; FilterValue current_filter, prev_filter; double alpha; - bool flip_frame1, flip_frame2; - bool repeat_video; - bool fadefilter; + std::atomic flip_frame1, flip_frame2; + std::atomic repeat_video; + std::atomic fadefilter; std::vector cycle_values; - int cycle_on; - int cycle_index; - int frame_num; - bool _custom_cycle; - int _custom_cycle_index; - int fps_delay; + std::atomic cycle_on; + std::atomic cycle_index; + std::atomic frame_num; + std::atomic _custom_cycle; + std::atomic _custom_cycle_index; + std::atomic fps_delay; public: Playback(QObject *parent = 0); ~Playback();