diff options
Diffstat (limited to 'gdb/python/py-continueevent.c')
-rw-r--r-- | gdb/python/py-continueevent.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/gdb/python/py-continueevent.c b/gdb/python/py-continueevent.c index e5e922f..b047a83 100644 --- a/gdb/python/py-continueevent.c +++ b/gdb/python/py-continueevent.c @@ -20,11 +20,24 @@ #include "defs.h" #include "py-event.h" #include "py-ref.h" +#include "gdbthread.h" + +/* Create a gdb.ContinueEvent event. gdb.ContinueEvent is-a + gdb.ThreadEvent, and thread events can either be thread specific or + process wide. If gdb is running in non-stop mode then the event is + thread specific (in which case the PTID thread is included in the + event), otherwise it is process wide (in which case PTID is + ignored). In either case a new reference is returned. */ static gdbpy_ref<> -create_continue_event_object (void) +create_continue_event_object (ptid_t ptid) { - return create_thread_event_object (&continue_event_object_type); + PyObject *py_thr = py_get_event_thread (ptid); + + if (py_thr == nullptr) + return nullptr; + + return create_thread_event_object (&continue_event_object_type, py_thr); } /* Callback function which notifies observers when a continue event occurs. @@ -37,7 +50,7 @@ emit_continue_event (ptid_t ptid) if (evregpy_no_listeners_p (gdb_py_events.cont)) return 0; - gdbpy_ref<> event (create_continue_event_object ()); + gdbpy_ref<> event (create_continue_event_object (ptid)); if (event != NULL) return evpy_emit_event (event.get (), gdb_py_events.cont); return -1; |