rem: case XINE_EVENT_PLAYBACK_FINISHED: g_message ("XINE_EVENT_PLAYBACK_FINISHED"); g_signal_emit (G_OBJECT (gtx), gtx_table_signals[EOS], 0, NULL); break; case XINE_EVENT_MOUSE_MOVE:  break; default: g_message ("got event %d", event->type);
add: GtkXineSignal *signal;  signal = g_new0 (GtkXineSignal, 1); signal->type = EOS; g_async_queue_push (gtx->priv->queue, signal); g_idle_add ((GSourceFunc) gtk_xine_idle_signal, gtx);
context: xine_event (void *user_data, xine_event_t *event){	GtkXine *gtx = (GtkXine *) user_data;	switch (event->type)	{	case XINE_EVENT_PLAYBACK_FINISHED:		g_message ("XINE_EVENT_PLAYBACK_FINISHED");		g_signal_emit (G_OBJECT (gtx),				gtx_table_signals[EOS], 0, NULL);		break;	case XINE_EVENT_MOUSE_MOVE:		/* This event doesn't actually work, too bad */		break;	default:		g_message ("got event %d", event->type);	}}