aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlyssa Milburn2016-04-01 14:46:52 +0200
committerAlyssa Milburn2016-04-01 14:49:25 +0200
commit8aee3cffdcca851de6ee515d896342f863f85538 (patch)
treeab012899cc894730dbdd1bfbf23bbc8d8a09a77b
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.
-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 {