more documentation about g_io_add_watch ??
- From: Colossus <colossus 3000 it>
- To: gtk-app-devel-list gnome org
- Subject: more documentation about g_io_add_watch ??
- Date: Fri, 30 Sep 2005 10:12:13 -0700
Hi,
I finally found the reason why my GUI freezes while I'm adding file to
a rar archive with g_spawn_async_with_pipes. This is what I do
1) Spawn the rar executable with g_spawn_async_with_pipes
2) Create a g_io_add_watch channel this way:
GIOChannel *ioc;
ioc = g_io_channel_unix_new ( fd );
g_io_add_watch (ioc, cond, func, data);
g_io_channel_set_encoding (ioc, "ISO8859-1", NULL);
3) Then I read the output of the rar executable this way:
gboolean GenOutput (GIOChannel *ioc, GIOCondition cond, gpointer data)
{
gchar *line = NULL;
if (cond & (G_IO_IN | G_IO_PRI) )
{
while (gtk_events_pending())
gtk_main_iteration();
g_io_channel_read_line ( ioc, &line, NULL, NULL, NULL );
if (line != NULL ) gtk_text_buffer_insert (textbuf, &enditer, line,
strlen ( line ) );
}
else if (cond & (G_IO_ERR | G_IO_HUP | G_IO_NVAL) )
{
g_io_channel_shutdown ( ioc,TRUE,NULL );
g_io_channel_unref (ioc);
g_spawn_close_pid ( child_pid );
return FALSE;
}
return TRUE;
}
The documentation about g_io_add_wath is very poor, can someone share
light on this matter: why g_io_add_watch locks the GUI ?
Thank you,
--
Colossus
Cpsed, a Linux OpenGL 3D scene editor
http://cpsed.sourceforge.net/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]