From 1910941426a2f17a900b463adfd3dd202b669d48 Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Fri, 3 Jul 2020 21:41:51 +0900 Subject: [PATCH] [qwaq] Handle key events differently when running Pressing F8 (or n) while the debug target was running would cause it to stop at that point. While it's certainly desirable to stop a runaway target on demand, that should be with a different input. Now, commands that start the target running are ignored while the target is running. No commands for when the target is running have been implemented yet, but the provision is there. --- ruamoko/qwaq/debugger/debugger.h | 1 + ruamoko/qwaq/debugger/debugger.r | 21 ++++++++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/ruamoko/qwaq/debugger/debugger.h b/ruamoko/qwaq/debugger/debugger.h index 9e6c750d2..8694d06c0 100644 --- a/ruamoko/qwaq/debugger/debugger.h +++ b/ruamoko/qwaq/debugger/debugger.h @@ -28,6 +28,7 @@ int onExit; } sub_cond; SEL traceHandler; + int running; Window *source_window; ScrollBar *source_scrollbar; diff --git a/ruamoko/qwaq/debugger/debugger.r b/ruamoko/qwaq/debugger/debugger.r index 2d51e3c60..abd8a326b 100644 --- a/ruamoko/qwaq/debugger/debugger.r +++ b/ruamoko/qwaq/debugger/debugger.r @@ -127,7 +127,7 @@ } static int -proxy_event (Debugger *self, id proxy, qwaq_event_t *event) +proxy_event_stopped (Debugger *self, id proxy, qwaq_event_t *event) { if (event.what == qe_mouseclick && !(event.mouse.buttons & 0x78)) { if (proxy == self.current_file) { @@ -142,6 +142,7 @@ proxy_event (Debugger *self, id proxy, qwaq_event_t *event) self.traceHandler = @selector(traceStep); qdb_set_trace (self.target, 1); self.trace_cond.state = qdb_get_state (self.target); + self.running = 1; qdb_continue (self.target); return 1; case QFK_F8: @@ -150,6 +151,7 @@ proxy_event (Debugger *self, id proxy, qwaq_event_t *event) qdb_set_trace (self.target, 1); self.trace_cond.state = qdb_get_state (self.target); self.trace_cond.depth = qdb_get_stack_depth (self.target); + self.running = 1; qdb_continue (self.target); return 1; } @@ -157,15 +159,28 @@ proxy_event (Debugger *self, id proxy, qwaq_event_t *event) return 0; } +static int +proxy_event_running (Debugger *self, id proxy, qwaq_event_t *event) +{ + return 0; +} + -(void)proxy_event:(id)proxy :(qwaq_event_t *)event { - if (proxy_event (self, proxy, event)) { - event.what = qe_none; + if (running) { + if (proxy_event_running (self, proxy, event)) { + event.what = qe_none; + } + } else { + if (proxy_event_stopped (self, proxy, event)) { + event.what = qe_none; + } } } -stop:(prdebug_t)reason { + running = 0; if (!file_proxy) { [self setup]; }