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]; }