diff --git a/CMakeLists.txt b/CMakeLists.txt index 8139bf12be8baf5381ec0e04301d17dc2041a626..0dd53bacfeb7cfbc8997505e5e786e209b0a118a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -117,7 +117,7 @@ endif () # Qt find_package( Qt5 5.14 - COMPONENTS Widgets OpenGL Xml Core PrintSupport + COMPONENTS Widgets OpenGL Xml Core PrintSupport Concurrent REQUIRED) # OpenCV @@ -169,6 +169,7 @@ target_link_libraries(petrack_core PUBLIC Qt5::Xml Qt5::Core Qt5::PrintSupport + Qt5::Concurrent ) target_include_directories(petrack_core PRIVATE "${CMAKE_SOURCE_DIR}/ui") diff --git a/src/player.cpp b/src/player.cpp index fb450df5f8cf66c1072e83e4308e0ea81d5640c3..0ad04dff42e5c3706bc8c7a115580f0116f22728 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -27,6 +27,7 @@ #include <QLineEdit> #include <QLabel> #include <QIntValidator> +#include <QtConcurrent> #include "player.h" #include "animation.h" @@ -256,7 +257,10 @@ bool Player::updateImage() double time1 = 0.0, tstart; tstart = clock(); #endif - mMainWindow->updateImage(mImg); + + QFuture<void> future = QtConcurrent::run([&]() {mMainWindow->updateImage(mImg); }); + future.waitForFinished(); + if (mRec) { mAviFile.appendFrame((const unsigned char*) mImg.data, true); @@ -271,7 +275,6 @@ bool Player::updateImage() mSlider->setValue(mAnimation->getCurrentFrameNum()); //(1000*mAnimation->getCurrentFrameNum())/mAnimation->getNumFrames()); mFrameNum->setText(QString().number(mAnimation->getCurrentFrameNum())); mSliderSet = false; // reset setSlider here because if value doesnt change than it would not be reset by skiptoframe - qApp->processEvents(); // to allow event while playing return true; }