mirror of
https://github.com/aseprite/aseprite.git
synced 2025-03-30 22:21:12 +00:00
Fix crash using a nullptr m_pixelsMovement on MovingPixelsState::onCommitMouseMove() (fix #3161)
This commit is contained in:
parent
aa188d641b
commit
aec012a0d9
@ -60,6 +60,12 @@ void DelayedMouseMove::onMouseUp(const ui::MouseMessage* msg)
|
||||
commitMouseMove();
|
||||
}
|
||||
|
||||
void DelayedMouseMove::stopTimer()
|
||||
{
|
||||
if (m_timer.isRunning())
|
||||
m_timer.stop();
|
||||
}
|
||||
|
||||
void DelayedMouseMove::commitMouseMove()
|
||||
{
|
||||
if (m_timer.isRunning())
|
||||
|
@ -50,6 +50,11 @@ namespace app {
|
||||
bool onMouseMove(const ui::MouseMessage* msg);
|
||||
void onMouseUp(const ui::MouseMessage* msg);
|
||||
|
||||
// Forces stopping the timer so we don't receive a Tick event in
|
||||
// case that we've just removed/delete some structure that is
|
||||
// needed in onCommitMouseMove().
|
||||
void stopTimer();
|
||||
|
||||
const gfx::PointF& spritePos() const;
|
||||
|
||||
private:
|
||||
|
@ -391,6 +391,8 @@ bool MovingPixelsState::onMouseMove(Editor* editor, MouseMessage* msg)
|
||||
void MovingPixelsState::onCommitMouseMove(Editor* editor,
|
||||
const gfx::PointF& spritePos)
|
||||
{
|
||||
ASSERT(m_pixelsMovement);
|
||||
|
||||
if (!m_pixelsMovement->isDragging())
|
||||
return;
|
||||
|
||||
@ -823,6 +825,10 @@ void MovingPixelsState::removeAsEditorObserver()
|
||||
|
||||
void MovingPixelsState::removePixelsMovement()
|
||||
{
|
||||
// Avoid receiving a onCommitMouseMove() message when
|
||||
// m_pixelsMovement is already nullptr.
|
||||
m_delayedMouseMove.stopTimer();
|
||||
|
||||
m_pixelsMovement.reset();
|
||||
m_ctxConn.disconnect();
|
||||
m_opaqueConn.disconnect();
|
||||
|
Loading…
x
Reference in New Issue
Block a user