mirror of
https://github.com/aseprite/aseprite.git
synced 2025-04-18 11:42:47 +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();
|
commitMouseMove();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DelayedMouseMove::stopTimer()
|
||||||
|
{
|
||||||
|
if (m_timer.isRunning())
|
||||||
|
m_timer.stop();
|
||||||
|
}
|
||||||
|
|
||||||
void DelayedMouseMove::commitMouseMove()
|
void DelayedMouseMove::commitMouseMove()
|
||||||
{
|
{
|
||||||
if (m_timer.isRunning())
|
if (m_timer.isRunning())
|
||||||
|
@ -50,6 +50,11 @@ namespace app {
|
|||||||
bool onMouseMove(const ui::MouseMessage* msg);
|
bool onMouseMove(const ui::MouseMessage* msg);
|
||||||
void onMouseUp(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;
|
const gfx::PointF& spritePos() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -391,6 +391,8 @@ bool MovingPixelsState::onMouseMove(Editor* editor, MouseMessage* msg)
|
|||||||
void MovingPixelsState::onCommitMouseMove(Editor* editor,
|
void MovingPixelsState::onCommitMouseMove(Editor* editor,
|
||||||
const gfx::PointF& spritePos)
|
const gfx::PointF& spritePos)
|
||||||
{
|
{
|
||||||
|
ASSERT(m_pixelsMovement);
|
||||||
|
|
||||||
if (!m_pixelsMovement->isDragging())
|
if (!m_pixelsMovement->isDragging())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -823,6 +825,10 @@ void MovingPixelsState::removeAsEditorObserver()
|
|||||||
|
|
||||||
void MovingPixelsState::removePixelsMovement()
|
void MovingPixelsState::removePixelsMovement()
|
||||||
{
|
{
|
||||||
|
// Avoid receiving a onCommitMouseMove() message when
|
||||||
|
// m_pixelsMovement is already nullptr.
|
||||||
|
m_delayedMouseMove.stopTimer();
|
||||||
|
|
||||||
m_pixelsMovement.reset();
|
m_pixelsMovement.reset();
|
||||||
m_ctxConn.disconnect();
|
m_ctxConn.disconnect();
|
||||||
m_opaqueConn.disconnect();
|
m_opaqueConn.disconnect();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user