diff --git a/ChangeLog b/ChangeLog index 6d7b7e1ee..53cf2c72c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-05-10 Matthew Allum + + * 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 * clutter/clutter-color.h: diff --git a/clutter/egl/clutter-backend-egl.c b/clutter/egl/clutter-backend-egl.c index 7bb727786..67f23a243 100644 --- a/clutter/egl/clutter-backend-egl.c +++ b/clutter/egl/clutter-backend-egl.c @@ -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 diff --git a/clutter/egl/clutter-event-egl.c b/clutter/egl/clutter-event-egl.c index 1992c22bd..c40a59797 100644 --- a/clutter/egl/clutter-event-egl.c +++ b/clutter/egl/clutter-event-egl.c @@ -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); } diff --git a/clutter/sdl/clutter-backend-sdl.c b/clutter/sdl/clutter-backend-sdl.c index 1cab47652..f9aa04c97 100644 --- a/clutter/sdl/clutter-backend-sdl.c +++ b/clutter/sdl/clutter-backend-sdl.c @@ -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 diff --git a/clutter/sdl/clutter-event-sdl.c b/clutter/sdl/clutter-event-sdl.c index 5d1fb22b0..18d60ca2e 100644 --- a/clutter/sdl/clutter-event-sdl.c +++ b/clutter/sdl/clutter-event-sdl.c @@ -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); }