From aae90a8fb7bbab52b70964c9f694e29b7d13ee56 Mon Sep 17 00:00:00 2001
From: Pascal Engeler <engelerp@phys.ethz.ch>
Date: Thu, 12 Aug 2021 21:35:51 +0200
Subject: [PATCH] Added dangling drawer catch

---
 src/drawing_handler.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/drawing_handler.cpp b/src/drawing_handler.cpp
index e4a73bb..1b61c7f 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;
-- 
GitLab