rem: g_signal_emit (G_OBJECT (bvw), bvw_table_signals[EOS], 0, NULL);
add: data = g_new0 (signal_data, 1); data->signal = EOS_ASYNC; g_async_queue_push (bvw->priv->queue, data); g_idle_add ((GSourceFunc) bacon_video_widget_idle_signal, bvw);
context: xine_event (void *user_data, const xine_event_t *event){	BaconVideoWidget *bvw = (BaconVideoWidget *) user_data;	xine_ui_data_t *ui_data;	xine_progress_data_t *prg;	xine_mrl_reference_data_t *ref;	switch (event->type)	{	case XINE_EVENT_UI_PLAYBACK_FINISHED:		g_signal_emit (G_OBJECT (bvw),				bvw_table_signals[EOS], 0, NULL);		break;	case XINE_EVENT_UI_SET_TITLE:		ui_data = event->data;		g_signal_emit (G_OBJECT (bvw),				bvw_table_signals[TITLE_CHANGE],				0, ui_data->str);		break;	case XINE_EVENT_PROGRESS:		prg = event->data;		g_async_queue_push (bvw->priv->queue,				GINT_TO_POINTER (PROGRESS));		g_idle_add ((GSourceFunc) bacon_video_widget_idle_signal, bvw);		g_message ("pct: %d msg: %s", prg->percent, prg->description);		break;	case XINE_EVENT_MRL_REFERENCE:		ref = event->data;		g_message ("ref mrl detected: %s", ref->mrl);		break;	}}