diff --git a/src/libply-splash-graphics/ply-animation.c b/src/libply-splash-graphics/ply-animation.c index 81348f9c..323d9edc 100644 --- a/src/libply-splash-graphics/ply-animation.c +++ b/src/libply-splash-graphics/ply-animation.c @@ -353,6 +353,11 @@ ply_animation_stop_now (ply_animation_t *animation) void ply_animation_stop (ply_animation_t *animation) { + if (animation->is_stopped) { + ply_trace ("animation already stopped, ignoring stop request"); + return; + } + if (animation->stop_trigger == NULL) { ply_animation_stop_now (animation); return; diff --git a/src/libply-splash-graphics/ply-throbber.c b/src/libply-splash-graphics/ply-throbber.c index c9c5bbdc..f18feb61 100644 --- a/src/libply-splash-graphics/ply-throbber.c +++ b/src/libply-splash-graphics/ply-throbber.c @@ -337,6 +337,15 @@ void ply_throbber_stop (ply_throbber_t *throbber, ply_trigger_t *stop_trigger) { + if (throbber->is_stopped) { + ply_trace ("throbber already stopped"); + if (stop_trigger != NULL) { + ply_trace ("pulling stop trigger right away"); + ply_trigger_pull (stop_trigger, NULL); + } + return; + } + if (stop_trigger == NULL) { ply_throbber_stop_now (throbber); return;