rem: 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); break;
add: g_signal_emit (G_OBJECT (gtx), gtx_table_signals[EOS], 0, NULL); break;
context: xine_event (void *user_data, const xine_event_t *event){	GtkXine *gtx = (GtkXine *) user_data;	GtkXineSignal *signal;	xine_ui_data_t *ui_data;	switch (event->type)	{	case XINE_EVENT_UI_PLAYBACK_FINISHED:			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);			break;	case XINE_EVENT_UI_SET_TITLE:			ui_data = (xine_ui_data_t *) event->data;			signal = g_new0 (GtkXineSignal, 1);			signal->type = TITLE_CHANGE;			signal->message = g_strdup (ui_data->str);			g_async_queue_push (gtx->priv->queue, signal);			g_idle_add ((GSourceFunc) gtk_xine_idle_signal, gtx);			break;	}}