mirror of
https://github.com/brl/mutter.git
synced 2024-12-22 19:12:04 +00:00
2007-05-10 Matthew Allum <mallum@openedhand.com>
* clutter/egl/clutter-backend-egl.c: * clutter/egl/clutter-event-egl.c: * clutter/sdl/clutter-backend-sdl.c: * clutter/sdl/clutter-event-sdl.c: Fix SDL & EGL backends to work with newer backend code.
This commit is contained in:
parent
41834d92a6
commit
e121eb54c8
@ -1,3 +1,11 @@
|
||||
2007-05-10 Matthew Allum <mallum@openedhand.com>
|
||||
|
||||
* clutter/egl/clutter-backend-egl.c:
|
||||
* clutter/egl/clutter-event-egl.c:
|
||||
* clutter/sdl/clutter-backend-sdl.c:
|
||||
* clutter/sdl/clutter-event-sdl.c:
|
||||
Fix SDL & EGL backends to work with newer backend code.
|
||||
|
||||
2007-05-10 Tomas Frydrych <tf@openedhand.com>
|
||||
|
||||
* clutter/clutter-color.h:
|
||||
|
@ -89,13 +89,6 @@ clutter_backend_egl_post_parse (ClutterBackend *backend,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* generic backend properties */
|
||||
backend->res_width = WidthOfScreen (backend_egl->xscreen);
|
||||
backend->res_height = HeightOfScreen (backend_egl->xscreen);
|
||||
backend->mm_width = WidthMMOfScreen (backend_egl->xscreen);
|
||||
backend->mm_height = HeightMMOfScreen (backend_egl->xscreen);
|
||||
backend->screen_num = backend_egl->xscreen_num;
|
||||
backend->n_screens = ScreenCount (backend_egl->xdpy);
|
||||
}
|
||||
|
||||
g_free (clutter_display_name);
|
||||
@ -268,20 +261,9 @@ clutter_backend_egl_init (ClutterBackendEgl *backend_egl)
|
||||
{
|
||||
ClutterBackend *backend = CLUTTER_BACKEND (backend_egl);
|
||||
|
||||
backend->events_queue = g_queue_new ();
|
||||
|
||||
backend->button_click_time[0] = backend->button_click_time[1] = 0;
|
||||
backend->button_number[0] = backend->button_number[1] = -1;
|
||||
backend->button_x[0] = backend->button_x[1] = 0;
|
||||
backend->button_y[0] = backend->button_y[1] = 0;
|
||||
|
||||
backend->res_width = backend->res_height = -1;
|
||||
backend->mm_width = backend->mm_height = -1;
|
||||
backend->screen_num = 0;
|
||||
backend->n_screens = 0;
|
||||
|
||||
backend->double_click_time = 250;
|
||||
backend->double_click_distance = 5;
|
||||
/* FIXME: get from xsettings */
|
||||
clutter_backend_set_double_click_time (backend, 250);
|
||||
clutter_backend_set_double_click_distance (backend, 5);
|
||||
}
|
||||
|
||||
GType
|
||||
|
@ -147,40 +147,6 @@ set_user_time (Display *display,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* clutter_events_pending:
|
||||
*
|
||||
* FIXME
|
||||
*
|
||||
* Return value: FIXME
|
||||
*
|
||||
* Since: 0.4
|
||||
*/
|
||||
gboolean
|
||||
clutter_events_pending (void)
|
||||
{
|
||||
GList *i;
|
||||
|
||||
for (i = event_sources; i != NULL; i = i->next)
|
||||
{
|
||||
ClutterEventSource *source = i->data;
|
||||
ClutterBackend *backend = source->backend;
|
||||
|
||||
if (_clutter_event_queue_check_pending (backend))
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
for (i = event_sources; i != NULL; i = i->next)
|
||||
{
|
||||
ClutterEventSource *source = i->data;
|
||||
ClutterBackend *backend = source->backend;
|
||||
|
||||
if (clutter_check_xpending (backend))
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
translate_key_event (ClutterBackend *backend,
|
||||
@ -325,32 +291,26 @@ clutter_event_translate (ClutterBackend *backend,
|
||||
return res;
|
||||
}
|
||||
|
||||
void
|
||||
_clutter_events_queue (ClutterBackend *backend)
|
||||
static void
|
||||
events_queue (ClutterBackend *backend)
|
||||
{
|
||||
ClutterBackendEgl *backend_egl = CLUTTER_BACKEND_EGL (backend);
|
||||
ClutterEvent *event;
|
||||
XEvent xevent;
|
||||
ClutterBackendEgl *backend_egl = CLUTTER_BACKEND_EGL (backend);
|
||||
ClutterEvent *event;
|
||||
XEvent xevent;
|
||||
ClutterMainContext *clutter_context;
|
||||
|
||||
clutter_context = clutter_context_get_default ();
|
||||
|
||||
Display *xdisplay = backend_egl->xdpy;
|
||||
|
||||
while (!_clutter_event_queue_check_pending (backend) && XPending (xdisplay))
|
||||
while (!clutter_events_pending () && XPending (xdisplay))
|
||||
{
|
||||
XNextEvent (xdisplay, &xevent);
|
||||
|
||||
switch (xevent.type)
|
||||
{
|
||||
case KeyPress:
|
||||
case KeyRelease:
|
||||
break;
|
||||
default:
|
||||
if (XFilterEvent (&xevent, None))
|
||||
continue;
|
||||
}
|
||||
|
||||
event = clutter_event_new (CLUTTER_NOTHING);
|
||||
if (clutter_event_translate (backend, event, &xevent))
|
||||
{
|
||||
_clutter_event_queue_push (backend, event);
|
||||
g_queue_push_head (clutter_context->events_queue, event);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -367,8 +327,7 @@ clutter_event_prepare (GSource *source,
|
||||
gboolean retval;
|
||||
|
||||
*timeout = -1;
|
||||
retval = (_clutter_event_queue_check_pending (backend) ||
|
||||
clutter_check_xpending (backend));
|
||||
retval = (clutter_events_pending () || clutter_check_xpending (backend));
|
||||
|
||||
return retval;
|
||||
}
|
||||
@ -381,8 +340,7 @@ clutter_event_check (GSource *source)
|
||||
gboolean retval;
|
||||
|
||||
if (event_source->event_poll_fd.revents & G_IO_IN)
|
||||
retval = (_clutter_event_queue_check_pending (backend) ||
|
||||
clutter_check_xpending (backend));
|
||||
retval = (clutter_events_pending () || clutter_check_xpending (backend));
|
||||
else
|
||||
retval = FALSE;
|
||||
|
||||
@ -397,17 +355,13 @@ clutter_event_dispatch (GSource *source,
|
||||
ClutterBackend *backend = ((ClutterEventSource *) source)->backend;
|
||||
ClutterEvent *event;
|
||||
|
||||
_clutter_events_queue (backend);
|
||||
event = _clutter_event_queue_pop (backend);
|
||||
events_queue (backend);
|
||||
|
||||
event = clutter_event_get ();
|
||||
|
||||
if (event)
|
||||
{
|
||||
if (_clutter_event_func)
|
||||
{
|
||||
CLUTTER_NOTE (EVENT, "Dispatching _clutter_event_func");
|
||||
(* _clutter_event_func) (event, _clutter_event_data);
|
||||
}
|
||||
|
||||
clutter_do_event (event);
|
||||
clutter_event_free (event);
|
||||
}
|
||||
|
||||
|
@ -22,7 +22,6 @@ static gboolean
|
||||
clutter_backend_sdl_post_parse (ClutterBackend *backend,
|
||||
GError **error)
|
||||
{
|
||||
ClutterBackendSDL *backend_sdl = CLUTTER_BACKEND_SDL (backend);
|
||||
int err;
|
||||
|
||||
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE) < 0)
|
||||
@ -117,8 +116,6 @@ clutter_backend_sdl_get_stage (ClutterBackend *backend)
|
||||
static void
|
||||
clutter_backend_sdl_finalize (GObject *gobject)
|
||||
{
|
||||
ClutterBackendSDL *backend_sdl = CLUTTER_BACKEND_SDL (gobject);
|
||||
|
||||
SDL_Quit();
|
||||
|
||||
if (backend_singleton)
|
||||
@ -191,20 +188,8 @@ clutter_backend_sdl_init (ClutterBackendSDL *backend_sdl)
|
||||
{
|
||||
ClutterBackend *backend = CLUTTER_BACKEND (backend_sdl);
|
||||
|
||||
backend->events_queue = g_queue_new ();
|
||||
|
||||
backend->button_click_time[0] = backend->button_click_time[1] = 0;
|
||||
backend->button_number[0] = backend->button_number[1] = -1;
|
||||
backend->button_x[0] = backend->button_x[1] = 0;
|
||||
backend->button_y[0] = backend->button_y[1] = 0;
|
||||
|
||||
backend->res_width = backend->res_height = -1;
|
||||
backend->mm_width = backend->mm_height = -1;
|
||||
backend->screen_num = 0;
|
||||
backend->n_screens = 0;
|
||||
|
||||
backend->double_click_time = 250;
|
||||
backend->double_click_distance = 5;
|
||||
clutter_backend_set_double_click_time (backend, 250);
|
||||
clutter_backend_set_double_click_distance (backend, 5);
|
||||
}
|
||||
|
||||
GType
|
||||
|
@ -105,21 +105,6 @@ _clutter_events_uninit (ClutterBackend *backend)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* clutter_events_pending:
|
||||
*
|
||||
* FIXME
|
||||
*
|
||||
* Return value: FIXME
|
||||
*
|
||||
* Since: 0.4
|
||||
*/
|
||||
gboolean
|
||||
clutter_events_pending (void)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
clutter_event_prepare (GSource *source,
|
||||
gint *timeout)
|
||||
@ -138,19 +123,11 @@ clutter_event_check (GSource *source)
|
||||
return SDL_PeepEvents(&events, 1, SDL_PEEKEVENT, SDL_ALLEVENTS);
|
||||
}
|
||||
|
||||
void
|
||||
_clutter_events_queue (ClutterBackend *backend)
|
||||
{
|
||||
/* FIXME: Implement */
|
||||
}
|
||||
|
||||
|
||||
static gboolean
|
||||
clutter_event_dispatch (GSource *source,
|
||||
GSourceFunc callback,
|
||||
gpointer user_data)
|
||||
{
|
||||
ClutterBackend *backend = ((ClutterEventSource *) source)->backend;
|
||||
SDL_Event sdl_event;
|
||||
ClutterEvent *event = NULL;
|
||||
|
||||
@ -169,16 +146,11 @@ clutter_event_dispatch (GSource *source,
|
||||
|
||||
return TRUE;
|
||||
|
||||
event = _clutter_event_queue_pop (backend);
|
||||
event = clutter_event_get ();
|
||||
|
||||
if (event)
|
||||
{
|
||||
if (_clutter_event_func)
|
||||
{
|
||||
CLUTTER_NOTE (EVENT, "Dispatching _clutter_event_func");
|
||||
(* _clutter_event_func) (event, _clutter_event_data);
|
||||
}
|
||||
|
||||
clutter_do_event(event);
|
||||
clutter_event_free (event);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user