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>
|
2007-05-10 Tomas Frydrych <tf@openedhand.com>
|
||||||
|
|
||||||
* clutter/clutter-color.h:
|
* clutter/clutter-color.h:
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user