forced thread safety on media throbber

This commit is contained in:
itsmattkc
2019-03-13 00:39:57 +11:00
parent 9522432112
commit d6e62c5ef9
2 changed files with 10 additions and 5 deletions
+6 -1
View File
@@ -140,22 +140,27 @@ void LoadThread::load_effect(QXmlStreamReader& stream, Clip* c) {
EffectPtr ve(new VoidEffect(c, effect_name));
ve->SetEnabled(effect_enabled);
ve->load(stream);
ve->moveToThread(QApplication::instance()->thread());
c->effects.append(ve);
} else {
EffectPtr e(Effect::Create(c, meta));
e->SetEnabled(effect_enabled);
e->load(stream);
e->moveToThread(QApplication::instance()->thread());
c->effects.append(e);
}
} else {
TransitionPtr t = Transition::Create(c, nullptr, meta);
if (effect_length > -1) t->set_length(effect_length);
t->SetEnabled(effect_enabled);
t->moveToThread(QApplication::instance()->thread());
t->load(stream);
t->moveToThread(QApplication::instance()->thread());
if (type == kTransitionOpening) {
c->opening_transition = t;
} else {
+4 -4
View File
@@ -40,11 +40,11 @@ MediaIconService::MediaIconService() {
void MediaIconService::SetMediaIcon(Media *media, int icon_type) {
// if this icon is already part of the throbber animation loop, remove it
if (throbber_items_.contains(media)) {
// throbber_lock_.lock();
throbber_lock_.lock();
throbber_items_.removeAll(media);
// throbber_lock_.unlock();
throbber_lock_.unlock();
// if we aren't animating anything, no need to run the timer for now
if (throbber_items_.empty()) {
@@ -90,13 +90,13 @@ void MediaIconService::AnimationUpdate() {
QIcon throbber_ico = QIcon(throbber_pixmap_.copy(kThrobberSize*throbber_animation_frame_, 0, kThrobberSize, kThrobberSize));
// throbber_lock_.lock();
throbber_lock_.lock();
for (int i=0;i<throbber_items_.size();i++) {
olive::project_model.set_icon(throbber_items_.at(i), throbber_ico);
}
// throbber_lock_.unlock();
throbber_lock_.unlock();
throbber_animation_frame_++;
}