summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGustavo J. A. M. Carneiro <gjc@src.gnome.org>2006-05-01 16:11:53 +0000
committerGustavo J. A. M. Carneiro <gjc@src.gnome.org>2006-05-01 16:11:53 +0000
commit749c36e62e0b8ebdb5cd714cc77b220b4ac576e8 (patch)
treec152a57510158ba4d82196fdb61c08c85eda2ec9
parent16c1199412cd1b4b8206bf46b25cf9120e0a89af (diff)
downloadpygobject-749c36e62e0b8ebdb5cd714cc77b220b4ac576e8.tar.gz
gobject.Pid.close
-rw-r--r--ChangeLog3
-rw-r--r--gobject/gobjectmodule.c15
-rw-r--r--tests/test_subprocess.py1
3 files changed, 18 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 40d6f7cd..353a4dc1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2006-05-01 Gustavo J. A. M. Carneiro <gjc@gnome.org>
+ * gobject/gobjectmodule.c (pyg_pid_close): Add a close() method
+ to the GPid wrapper.
+
* gobject/gobjectmodule.c (pyg_pid_free, pyg_pid_new),
(pyg_spawn_async, init_gobject): Wrap GPid in an object whose
destructor calls g_spawn_close_pid. Fixes #340160.
diff --git a/gobject/gobjectmodule.c b/gobject/gobjectmodule.c
index 135e468f..30b38a3b 100644
--- a/gobject/gobjectmodule.c
+++ b/gobject/gobjectmodule.c
@@ -2135,6 +2135,19 @@ pyg_child_watch_add(PyObject *unused, PyObject *args, PyObject *kwargs)
return PyInt_FromLong(id);
}
+static PyObject *
+pyg_pid_close(PyIntObject *self, PyObject *args, PyObject *kwargs)
+{
+ g_spawn_close_pid((GPid) self->ob_ival);
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static PyMethodDef pyg_pid_methods[] = {
+ { "close", (PyCFunction)pyg_pid_close, METH_NOARGS },
+ { NULL, NULL, 0 }
+};
+
static void
pyg_pid_free(PyIntObject *gpid)
{
@@ -2178,7 +2191,7 @@ static PyTypeObject PyGPid_Type = {
0, /* tp_weaklistoffset */
0, /* tp_iter */
0, /* tp_iternext */
- 0, /* tp_methods */
+ pyg_pid_methods, /* tp_methods */
0, /* tp_members */
0, /* tp_getset */
0, /* tp_base */
diff --git a/tests/test_subprocess.py b/tests/test_subprocess.py
index 189327df..b1c7ddeb 100644
--- a/tests/test_subprocess.py
+++ b/tests/test_subprocess.py
@@ -18,6 +18,7 @@ class TestProcess(unittest.TestCase):
argv = [sys.executable, '-c', 'import sys']
pid, stdin, stdout, stderr = gobject.spawn_async(
argv, flags=gobject.SPAWN_DO_NOT_REAP_CHILD)
+ pid.close()
gobject.child_watch_add(pid, self._child_watch_cb, 12345)
self.loop.run()
self.assertEqual(self.data, 12345)