diff options
author | Gustavo J. A. M. Carneiro <gjc@src.gnome.org> | 2006-05-01 16:11:53 +0000 |
---|---|---|
committer | Gustavo J. A. M. Carneiro <gjc@src.gnome.org> | 2006-05-01 16:11:53 +0000 |
commit | 749c36e62e0b8ebdb5cd714cc77b220b4ac576e8 (patch) | |
tree | c152a57510158ba4d82196fdb61c08c85eda2ec9 | |
parent | 16c1199412cd1b4b8206bf46b25cf9120e0a89af (diff) | |
download | pygobject-749c36e62e0b8ebdb5cd714cc77b220b4ac576e8.tar.gz |
gobject.Pid.close
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | gobject/gobjectmodule.c | 15 | ||||
-rw-r--r-- | tests/test_subprocess.py | 1 |
3 files changed, 18 insertions, 1 deletions
@@ -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) |