diff --git a/src/drawing_handler.cpp b/src/drawing_handler.cpp index e4a73bb9a1387ead74bd9e788290b208457fae25..1b61c7f4b140b1e80fb32111e41d29d59ea2d4b8 100644 --- a/src/drawing_handler.cpp +++ b/src/drawing_handler.cpp @@ -42,6 +42,7 @@ DrawingHandler::~DrawingHandler() { glDeleteBuffers(1, &vbo_); glDeleteFramebuffers(1, &fbo_); } + void DrawingHandler::update(Toolbox& tb) { if (previous_mstate_ != tb.m_state) { drawpairs_.clear(); @@ -54,7 +55,6 @@ void DrawingHandler::update(Toolbox& tb) { DRAWERMESSAGE message = std::get<DRAWERMESSAGE>(m.message); switch (message) { case DRAWERMESSAGE::CLEAR: - /*Clearing the damping is taken care of by the WaveHandler*/ drawpairs_.clear(); m.handled = true; break; @@ -63,6 +63,10 @@ void DrawingHandler::update(Toolbox& tb) { } } } + /*Catch dangling Drawers, no touches means no drawers*/ + if (drawpairs_.size() > 0 && tb.current_touchIDs.size() == 0) { + drawpairs_.clear(); + } /*We can return here if MSTATE is not interesting*/ if (tb.m_state != static_cast<int>(MSTATE::DRAW) && tb.m_state != static_cast<int>(MSTATE::ERASE)) { return;