aboutsummaryrefslogtreecommitdiff
path: root/gdb/python/py-continueevent.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/python/py-continueevent.c')
-rw-r--r--gdb/python/py-continueevent.c19
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;