Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Glib2: g_io_channel_watch ruft ständig Callback auf, obwohl Bedingung nicht erfüllt



Trillian
24-06-2002, 17:50
Hi,

Ich habe in meiner App einen g_io_channel, den ich mit g_io_add_watch in der Main Event Loop überwache:



iochan = g_io_channel_unix_new(sock_in);
//g_io_channel_set_buffer_size(iochan, 0);
g_io_channel_set_line_term(iochan, line_term, -1);
g_io_add_watch(iochan, G_IO_IN | G_IO_PRI, read_input, (gpointer) sock_in);


d.h. es soll geguckt werden, ob auf dem Socket Daten darauf warten, gelesen zu werden. Allerdings wird der Callback ständig aufgerufen, auch wenn die Bedingung garnicht erfüllt ist:




gboolean read_input(GIOChannel *iochan, GIOCondition condition, gpointer sock_in
)
{
printf("cond1: %i\n", g_io_channel_get_buffer_condition(iochan));
printf("cond2: %i\n", condition);
}



Aber diese 2 liefern mir unterschiedliche Werte!
cond1 ist 0 (Funktion würde nicht aufgerufen), cond2 ist 1 (Funktion würde aufgerufen)
Hat jemand eine Ahnung, wodran das liegen kann?

Danke,
Trillian