rem: GtkXineSignal *signal;
context: gtk_xine_filter_events (GdkXEvent *xevent, GdkEvent *event, gpointer data){	GtkXine *gtx = (GtkXine *) data;	XEvent *xev = (XEvent *) xevent;	XKeyEvent *key = (XKeyEvent *) xevent;	XExposeEvent *expose = (XExposeEvent *) xevent;	GtkXineSignal *signal;	gboolean retval;	switch (xev->type)	{	case Expose:		D("Expose:");		if (expose->count != 0)			break;		xine_gui_send_vo_data (gtx->priv->stream,				XINE_GUI_SEND_EXPOSE_EVENT,				&event);		return GDK_FILTER_REMOVE;		break;	case MotionNotify:		D("MotionNotify:");		retval = generate_mouse_event (gtx, xevent, TRUE);		if (gtx->priv->fullscreen_mode == TRUE)		{			GtkXineSignal *signal;			signal = g_new0 (GtkXineSignal, 1);			signal->type = MOUSE_MOTION;			g_async_queue_push (gtx->priv->queue, signal);			g_idle_add ((GSourceFunc) gtk_xine_idle_signal, gtx);		}		if (retval == TRUE)			return GDK_FILTER_REMOVE;		break;	case ButtonPress:		D("ButtonPress:");		if (generate_mouse_event (gtx, xevent, FALSE) == TRUE)			return GDK_FILTER_REMOVE;		break;	case KeyPress:		D("KeyPress:");		if (gtx->priv->fullscreen_mode == TRUE)		{			GtkXineSignal *signal;			char buf[16];			KeySym keysym;			static XComposeStatus compose;			signal = g_new0 (GtkXineSignal, 1);			signal->type = KEY_PRESS;			XLookupString (key, buf, 16,					&keysym, &compose);			signal->keyval = keysym;			g_async_queue_push (gtx->priv->queue, signal);			g_idle_add ((GSourceFunc) gtk_xine_idle_signal, gtx);			return GDK_FILTER_REMOVE;		}		break;	}	return GDK_FILTER_CONTINUE;}