seed r425 - trunk/modules/Multiprocessing
- From: racarr svn gnome org
- To: svn-commits-list gnome org
- Subject: seed r425 - trunk/modules/Multiprocessing
- Date: Wed, 10 Dec 2008 00:42:33 +0000 (UTC)
Author: racarr
Date: Wed Dec 10 00:42:33 2008
New Revision: 425
URL: http://svn.gnome.org/viewvc/seed?rev=425&view=rev
Log:
Close pipes when Pipe object is collected.
Modified:
trunk/modules/Multiprocessing/multi.c
Modified: trunk/modules/Multiprocessing/multi.c
==============================================================================
--- trunk/modules/Multiprocessing/multi.c (original)
+++ trunk/modules/Multiprocessing/multi.c Wed Dec 10 00:42:33 2008
@@ -12,6 +12,14 @@
GIOChannel * write;
} pipe_priv;
+void pipe_finalize(SeedObject pipeobj)
+{
+ pipe_priv * priv = seed_object_get_private(pipeobj);
+ g_io_channel_unref(priv->read);
+ g_io_channel_unref(priv->write);
+ g_free(priv);
+}
+
SeedObject seed_construct_pipe(SeedContext ctx,
SeedObject constructor,
size_t argument_count,
@@ -42,6 +50,11 @@
priv_two->read = g_io_channel_unix_new(fd2[0]);
priv_two->write = g_io_channel_unix_new(fd1[1]);
+ g_io_channel_set_close_on_unref(priv_one->read, TRUE);
+ g_io_channel_set_close_on_unref(priv_one->write, TRUE);
+ g_io_channel_set_close_on_unref(priv_two->read, TRUE);
+ g_io_channel_set_close_on_unref(priv_two->write, TRUE);
+
jsret = seed_make_object(ctx, 0, 0);
jsone = seed_make_object(ctx, pipe_class, priv_one);
jstwo = seed_make_object(ctx, pipe_class, priv_two);
@@ -163,6 +176,7 @@
pipe_class_def.class_name = "Pipe";
pipe_class_def.static_functions = pipe_funcs;
+ pipe_class_def.finalize = pipe_finalize;
pipe_class = seed_create_class(&pipe_class_def);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]