Automatic date update in version.in
[deliverable/binutils-gdb.git] / gdb / python / py-continueevent.c
index c1f8f65d8a1f10d8d36d4430381ccd088c79cdf6..2f5db38e875f76a87737c83ec72153a7892a93a8 100644 (file)
@@ -1,6 +1,6 @@
 /* Python interface to inferior continue events.
 
-   Copyright (C) 2009-2013 Free Software Foundation, Inc.
+   Copyright (C) 2009-2020 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
 
 #include "defs.h"
 #include "py-event.h"
+#include "gdbthread.h"
 
-static PyTypeObject continue_event_object_type
-    CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object");
+/* 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 PyObject *
-create_continue_event_object (void)
+static gdbpy_ref<>
+create_continue_event_object (ptid_t ptid)
 {
-  return create_thread_event_object (&continue_event_object_type);
+  gdbpy_ref<> py_thr = py_get_event_thread (ptid);
+
+  if (py_thr == nullptr)
+    return nullptr;
+
+  return create_thread_event_object (&continue_event_object_type,
+                                    py_thr.get ());
 }
 
 /* Callback function which notifies observers when a continue event occurs.
@@ -36,20 +47,11 @@ create_continue_event_object (void)
 int
 emit_continue_event (ptid_t ptid)
 {
-  PyObject *event;
-
   if (evregpy_no_listeners_p (gdb_py_events.cont))
     return 0;
 
-  event = create_continue_event_object ();
-  if (event)
-    return evpy_emit_event (event, gdb_py_events.cont);
+  gdbpy_ref<> event = create_continue_event_object (ptid);
+  if (event != NULL)
+    return evpy_emit_event (event.get (), gdb_py_events.cont);
   return -1;
 }
-
-GDBPY_NEW_EVENT_TYPE (continue,
-                      "gdb.ContinueEvent",
-                      "ContinueEvent",
-                      "GDB continue event object",
-                      thread_event_object_type,
-                      static);
This page took 0.025653 seconds and 4 git commands to generate.