tweener: remove tweens when target.actor is destroyed
We already remove tweens automatically when a Clutter actor is destroyed; do the same when the target is a JS delegate with an actor property. https://bugzilla.gnome.org/show_bug.cgi?id=642925
This commit is contained in:
parent
5683bb9b8e
commit
192d3a94ed
@ -62,8 +62,15 @@ function addTween(target, tweeningParameters) {
|
|||||||
function _wrapTweening(target, tweeningParameters) {
|
function _wrapTweening(target, tweeningParameters) {
|
||||||
let state = _getTweenState(target);
|
let state = _getTweenState(target);
|
||||||
|
|
||||||
if (target instanceof Clutter.Actor && !state.destroyedId)
|
if (!state.destroyedId) {
|
||||||
|
if (target instanceof Clutter.Actor) {
|
||||||
|
state.actor = target;
|
||||||
state.destroyedId = target.connect('destroy', _actorDestroyed);
|
state.destroyedId = target.connect('destroy', _actorDestroyed);
|
||||||
|
} else if (target.actor && target.actor instanceof Clutter.Actor) {
|
||||||
|
state.actor = target.actor;
|
||||||
|
state.destroyedId = target.actor.connect('destroy', function() { _actorDestroyed(target); });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_addHandler(target, tweeningParameters, 'onStart', _tweenStarted);
|
_addHandler(target, tweeningParameters, 'onStart', _tweenStarted);
|
||||||
_addHandler(target, tweeningParameters, 'onComplete', _tweenCompleted);
|
_addHandler(target, tweeningParameters, 'onComplete', _tweenCompleted);
|
||||||
@ -82,7 +89,7 @@ function _resetTweenState(target) {
|
|||||||
|
|
||||||
if (state) {
|
if (state) {
|
||||||
if (state.destroyedId)
|
if (state.destroyedId)
|
||||||
target.disconnect(state.destroyedId);
|
state.actor.disconnect(state.destroyedId);
|
||||||
if (state.idleCompletedId)
|
if (state.idleCompletedId)
|
||||||
Mainloop.source_remove(state.idleCompletedId);
|
Mainloop.source_remove(state.idleCompletedId);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user