Maelstrom: Fixed crash deleting panels while a button press was being dispatched

https://github.com/libsdl-org/Maelstrom/commit/8da2d052a2ffd31c449f6d6cab05cdab7eaab864

From 8da2d052a2ffd31c449f6d6cab05cdab7eaab864 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Sat, 13 Oct 2012 17:18:38 -0700
Subject: [PATCH] Fixed crash deleting panels while a button press was being
 dispatched

---
 screenlib/UIManager.cpp | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/screenlib/UIManager.cpp b/screenlib/UIManager.cpp
index 7f40cc02..7ec28915 100644
--- a/screenlib/UIManager.cpp
+++ b/screenlib/UIManager.cpp
@@ -280,6 +280,14 @@ UIManager::Poll()
 
 		panel->Poll();
 	}
+
+	// Clean up any deleted panels when we're done...
+	if (!m_delete.empty()) {
+		for (i = 0; i < m_delete.length(); ++i) {
+			delete m_delete[i];
+		}
+		m_delete.clear();
+	}
 }
 
 void
@@ -307,14 +315,6 @@ UIManager::Draw(bool fullUpdate)
 		m_screen->Update();
 		m_screen->FadeIn();
 	}
-
-	// Clean up any deleted panels when we're done...
-	if (!m_delete.empty()) {
-		for (i = 0; i < m_delete.length(); ++i) {
-			delete m_delete[i];
-		}
-		m_delete.clear();
-	}
 }
 
 bool
@@ -336,6 +336,9 @@ UIManager::HandleEvent(const SDL_Event &event)
 		SetSize(m_screen->Width(), m_screen->Height());
 	}
 
+	// In case it's not called any other time...
+	Poll();
+
 	for (unsigned i = m_visible.length(); i--; ) {
 		UIPanel *panel = m_visible[i];