aboutsummaryrefslogtreecommitdiff
path: root/gui/debugger.cpp
diff options
context:
space:
mode:
authorAlyssa Milburn2016-04-01 14:46:52 +0200
committerAlyssa Milburn2016-04-01 14:49:25 +0200
commit8aee3cffdcca851de6ee515d896342f863f85538 (patch)
treeab012899cc894730dbdd1bfbf23bbc8d8a09a77b /gui/debugger.cpp
parent307c8b0ecb861c51cad72f614a43a67b1ab00d3e (diff)
downloadscummvm-rg350-8aee3cffdcca851de6ee515d896342f863f85538.tar.gz
scummvm-rg350-8aee3cffdcca851de6ee515d896342f863f85538.tar.bz2
scummvm-rg350-8aee3cffdcca851de6ee515d896342f863f85538.zip
DEBUGGER: Drop events when using readline debugger
This should avoid the readline debugger causing Windows to decide that ScummVM is unresponsive, by dropping incoming events in the idle callback.
Diffstat (limited to 'gui/debugger.cpp')
-rw-r--r--gui/debugger.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/gui/debugger.cpp b/gui/debugger.cpp
index c9b435963d..72d05e2973 100644
--- a/gui/debugger.cpp
+++ b/gui/debugger.cpp
@@ -42,6 +42,7 @@
#elif defined(USE_READLINE)
#include <readline/readline.h>
#include <readline/history.h>
+ #include "common/events.h"
#endif
@@ -191,6 +192,15 @@ char *readline_completionFunction(const char *text, int state) {
return g_readline_debugger->readlineComplete(text, state);
}
+void readline_eventFunction() {
+ Common::EventManager *eventMan = g_system->getEventManager();
+
+ Common::Event event;
+ while (eventMan->pollEvent(event)) {
+ // drop all events
+ }
+}
+
#ifdef USE_READLINE_INT_COMPLETION
typedef int RLCompFunc_t(const char *, int);
#else
@@ -228,6 +238,7 @@ void Debugger::enter() {
g_readline_debugger = this;
rl_completion_entry_function = (RLCompFunc_t *)&readline_completionFunction;
+ rl_event_hook = (rl_hook_func_t *)&readline_eventFunction;
char *line_read = 0;
do {