File tree Expand file tree Collapse file tree 1 file changed +14
-7
lines changed
Expand file tree Collapse file tree 1 file changed +14
-7
lines changed Original file line number Diff line number Diff line change @@ -123,14 +123,21 @@ class JPAGAnimator {
123123 return animator;
124124 }
125125
126- void clear () {
127- std::lock_guard<std::mutex> autoLock (locker);
128- animator->cancel ();
129- animator = nullptr ;
130- listener = nullptr ;
131- }
126+ void clear () {
127+ std::shared_ptr<pag::PAGAnimator> tempAnimator;
128+ std::shared_ptr<pag::AnimatorListener> tempListener;
129+ {
130+ std::lock_guard<std::mutex> autoLock (locker);
131+ tempAnimator = std::move (animator);
132+ tempListener = std::move (listener);
133+ }
134+ // Call cancel outside the lock to avoid deadlock
135+ if (tempAnimator) {
136+ tempAnimator->cancel ();
137+ }
138+ }
132139
133- private:
140+ private:
134141 std::mutex locker;
135142 std::shared_ptr<pag::AnimatorListener> listener;
136143 std::shared_ptr<pag::PAGAnimator> animator;
You can’t perform that action at this time.
0 commit comments