diff --git a/retroshare-gui/src/gui/statusbar/hashingstatus.cpp b/retroshare-gui/src/gui/statusbar/hashingstatus.cpp index 6d85935f1..7f65e3902 100644 --- a/retroshare-gui/src/gui/statusbar/hashingstatus.cpp +++ b/retroshare-gui/src/gui/statusbar/hashingstatus.cpp @@ -26,6 +26,7 @@ #include "retroshare/rsfiles.h" #include "hashingstatus.h" #include "gui/common/ElidedLabel.h" +#include "util/qtthreadsutils.h" #include "gui/notifyqt.h" #include "gui/common/FilesDefs.h" @@ -54,13 +55,13 @@ HashingStatus::HashingStatus(QWidget *parent) statusHashing->hide(); mEventHandlerId=0; - rsEvents->registerEventsHandler( - [this](std::shared_ptr event) { handleEvent(event); }, - mEventHandlerId, RsEventType::SHARED_DIRECTORIES ); + rsEvents->registerEventsHandler( [this](std::shared_ptr event) { handleEvent(event); }, mEventHandlerId, RsEventType::SHARED_DIRECTORIES ); } void HashingStatus::handleEvent(std::shared_ptr event) { + // Warning: no GUI calls should happen here! + if(event->mType != RsEventType::SHARED_DIRECTORIES) return; @@ -85,7 +86,9 @@ void HashingStatus::handleEvent(std::shared_ptr event) break; } - updateHashingInfo(info); + // GUI calls should only happen in the GUI thread, which is achieved by postToObject(). + + RsQThreadUtils::postToObject( [this,info]() { updateHashingInfo(info); }, this); } HashingStatus::~HashingStatus()