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:
Matthew Allum 2007-05-10 12:49:34 +00:00
parent 41834d92a6
commit e121eb54c8
5 changed files with 32 additions and 131 deletions

View File

@ -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> 2007-05-10 Tomas Frydrych <tf@openedhand.com>
* clutter/clutter-color.h: * clutter/clutter-color.h:

View File

@ -89,13 +89,6 @@ clutter_backend_egl_post_parse (ClutterBackend *backend,
return FALSE; 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); g_free (clutter_display_name);
@ -268,20 +261,9 @@ clutter_backend_egl_init (ClutterBackendEgl *backend_egl)
{ {
ClutterBackend *backend = CLUTTER_BACKEND (backend_egl); ClutterBackend *backend = CLUTTER_BACKEND (backend_egl);
backend->events_queue = g_queue_new (); /* FIXME: get from xsettings */
clutter_backend_set_double_click_time (backend, 250);
backend->button_click_time[0] = backend->button_click_time[1] = 0; clutter_backend_set_double_click_distance (backend, 5);
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;
} }
GType GType

View File

@ -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 static void
translate_key_event (ClutterBackend *backend, translate_key_event (ClutterBackend *backend,
@ -325,32 +291,26 @@ clutter_event_translate (ClutterBackend *backend,
return res; return res;
} }
void static void
_clutter_events_queue (ClutterBackend *backend) events_queue (ClutterBackend *backend)
{ {
ClutterBackendEgl *backend_egl = CLUTTER_BACKEND_EGL (backend); ClutterBackendEgl *backend_egl = CLUTTER_BACKEND_EGL (backend);
ClutterEvent *event; ClutterEvent *event;
XEvent xevent; XEvent xevent;
ClutterMainContext *clutter_context;
clutter_context = clutter_context_get_default ();
Display *xdisplay = backend_egl->xdpy; Display *xdisplay = backend_egl->xdpy;
while (!_clutter_event_queue_check_pending (backend) && XPending (xdisplay)) while (!clutter_events_pending () && XPending (xdisplay))
{ {
XNextEvent (xdisplay, &xevent); XNextEvent (xdisplay, &xevent);
switch (xevent.type)
{
case KeyPress:
case KeyRelease:
break;
default:
if (XFilterEvent (&xevent, None))
continue;
}
event = clutter_event_new (CLUTTER_NOTHING); event = clutter_event_new (CLUTTER_NOTHING);
if (clutter_event_translate (backend, event, &xevent)) if (clutter_event_translate (backend, event, &xevent))
{ {
_clutter_event_queue_push (backend, event); g_queue_push_head (clutter_context->events_queue, event);
} }
else else
{ {
@ -367,8 +327,7 @@ clutter_event_prepare (GSource *source,
gboolean retval; gboolean retval;
*timeout = -1; *timeout = -1;
retval = (_clutter_event_queue_check_pending (backend) || retval = (clutter_events_pending () || clutter_check_xpending (backend));
clutter_check_xpending (backend));
return retval; return retval;
} }
@ -381,8 +340,7 @@ clutter_event_check (GSource *source)
gboolean retval; gboolean retval;
if (event_source->event_poll_fd.revents & G_IO_IN) if (event_source->event_poll_fd.revents & G_IO_IN)
retval = (_clutter_event_queue_check_pending (backend) || retval = (clutter_events_pending () || clutter_check_xpending (backend));
clutter_check_xpending (backend));
else else
retval = FALSE; retval = FALSE;
@ -397,17 +355,13 @@ clutter_event_dispatch (GSource *source,
ClutterBackend *backend = ((ClutterEventSource *) source)->backend; ClutterBackend *backend = ((ClutterEventSource *) source)->backend;
ClutterEvent *event; ClutterEvent *event;
_clutter_events_queue (backend); events_queue (backend);
event = _clutter_event_queue_pop (backend);
event = clutter_event_get ();
if (event) if (event)
{ {
if (_clutter_event_func) clutter_do_event (event);
{
CLUTTER_NOTE (EVENT, "Dispatching _clutter_event_func");
(* _clutter_event_func) (event, _clutter_event_data);
}
clutter_event_free (event); clutter_event_free (event);
} }

View File

@ -22,7 +22,6 @@ static gboolean
clutter_backend_sdl_post_parse (ClutterBackend *backend, clutter_backend_sdl_post_parse (ClutterBackend *backend,
GError **error) GError **error)
{ {
ClutterBackendSDL *backend_sdl = CLUTTER_BACKEND_SDL (backend);
int err; int err;
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE) < 0) if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE) < 0)
@ -117,8 +116,6 @@ clutter_backend_sdl_get_stage (ClutterBackend *backend)
static void static void
clutter_backend_sdl_finalize (GObject *gobject) clutter_backend_sdl_finalize (GObject *gobject)
{ {
ClutterBackendSDL *backend_sdl = CLUTTER_BACKEND_SDL (gobject);
SDL_Quit(); SDL_Quit();
if (backend_singleton) if (backend_singleton)
@ -191,20 +188,8 @@ clutter_backend_sdl_init (ClutterBackendSDL *backend_sdl)
{ {
ClutterBackend *backend = CLUTTER_BACKEND (backend_sdl); ClutterBackend *backend = CLUTTER_BACKEND (backend_sdl);
backend->events_queue = g_queue_new (); clutter_backend_set_double_click_time (backend, 250);
clutter_backend_set_double_click_distance (backend, 5);
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;
} }
GType GType

View File

@ -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 static gboolean
clutter_event_prepare (GSource *source, clutter_event_prepare (GSource *source,
gint *timeout) gint *timeout)
@ -138,19 +123,11 @@ clutter_event_check (GSource *source)
return SDL_PeepEvents(&events, 1, SDL_PEEKEVENT, SDL_ALLEVENTS); return SDL_PeepEvents(&events, 1, SDL_PEEKEVENT, SDL_ALLEVENTS);
} }
void
_clutter_events_queue (ClutterBackend *backend)
{
/* FIXME: Implement */
}
static gboolean static gboolean
clutter_event_dispatch (GSource *source, clutter_event_dispatch (GSource *source,
GSourceFunc callback, GSourceFunc callback,
gpointer user_data) gpointer user_data)
{ {
ClutterBackend *backend = ((ClutterEventSource *) source)->backend;
SDL_Event sdl_event; SDL_Event sdl_event;
ClutterEvent *event = NULL; ClutterEvent *event = NULL;
@ -169,16 +146,11 @@ clutter_event_dispatch (GSource *source,
return TRUE; return TRUE;
event = _clutter_event_queue_pop (backend); event = clutter_event_get ();
if (event) if (event)
{ {
if (_clutter_event_func) clutter_do_event(event);
{
CLUTTER_NOTE (EVENT, "Dispatching _clutter_event_func");
(* _clutter_event_func) (event, _clutter_event_data);
}
clutter_event_free (event); clutter_event_free (event);
} }