forced thread safety on media throbber
This commit is contained in:
+6
-1
@@ -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 {
|
||||
|
||||
@@ -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_++;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user