[maemo-commits] [maemo-commits] r19299 - in projects/haf/trunk/clutter0.8: clutter debian
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Mon Sep 7 18:39:40 EEST 2009
- Previous message: [maemo-commits] r19298 - in projects/haf/trunk/gtk+: . gtk
- Next message: [maemo-commits] r19300 - projects/haf/tags/clutter
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: gw Date: 2009-09-07 18:39:27 +0300 (Mon, 07 Sep 2009) New Revision: 19299 Modified: projects/haf/trunk/clutter0.8/clutter/clutter-main.c projects/haf/trunk/clutter0.8/clutter/clutter-main.h projects/haf/trunk/clutter0.8/clutter/clutter-private.h projects/haf/trunk/clutter0.8/debian/changelog Log: Gordon: * clutter/clutter-main.c clutter/clutter-main.h clutter/clutter-private.h: Add extra function called clutter_grab_pointer_without_pick. This allows input events to be received but ensures that clutter does not do picking in order to find which actor is under the cursor. Also removed un-needed glFinish for picking (syncing should be done in GLES) and increased clutter motion events frequency. Modified: projects/haf/trunk/clutter0.8/clutter/clutter-main.c =================================================================== --- projects/haf/trunk/clutter0.8/clutter/clutter-main.c 2009-09-07 08:19:49 UTC (rev 19298) +++ projects/haf/trunk/clutter0.8/clutter/clutter-main.c 2009-09-07 15:39:27 UTC (rev 19299) @@ -440,9 +440,8 @@ /* Revert our changes to clipping... */ cogl_clip_unset(); - /* Below to be safe, particularly on GL ES. an EGL wait call or full - * could be nicer. */ - glFinish(); + /* We should *not* have to wait here as OpenGL/GLES will ensure that + * everything is in sync. Calling glFinish would just slow us down more. */ /* Read the color of the screen co-ords pixel */ glReadPixels (x, inv_y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixel); @@ -2076,9 +2075,13 @@ } /* Map the event to a reactive actor */ - actor = _clutter_do_pick (CLUTTER_STAGE (stage), - x, y, - CLUTTER_PICK_REACTIVE); + if (context->pointer_grab_actor && + !context->grab_actor_needs_pick) + actor = context->pointer_grab_actor; + else + actor = _clutter_do_pick (CLUTTER_STAGE (stage), + x, y, + CLUTTER_PICK_REACTIVE); event->any.source = actor; if (!actor) @@ -2273,6 +2276,8 @@ context = clutter_context_get_default (); + context->grab_actor_needs_pick = TRUE; + if (context->pointer_grab_actor == actor) return; @@ -2294,6 +2299,20 @@ } } +/* Just like clutter_grab_pointer, but allows the programmer + * to request that Clutter does not perform the pick operation on every + * mouse move event. This is useful if we don't want the added delay of + * a pick operation. */ +void +clutter_grab_pointer_without_pick (ClutterActor *actor) +{ + ClutterMainContext *context = clutter_context_get_default (); + + clutter_grab_pointer(actor); + + context->grab_actor_needs_pick = FALSE; +} + /** * clutter_grab_pointer_for_device: * @actor: a #ClutterActor @@ -2499,7 +2518,7 @@ { guint frequency; - frequency = clutter_default_fps / 4; + frequency = clutter_default_fps / 2; frequency = CLAMP (frequency, 20, 45); return frequency; Modified: projects/haf/trunk/clutter0.8/clutter/clutter-main.h =================================================================== --- projects/haf/trunk/clutter0.8/clutter/clutter-main.h 2009-09-07 08:19:49 UTC (rev 19298) +++ projects/haf/trunk/clutter0.8/clutter/clutter-main.h 2009-09-07 15:39:27 UTC (rev 19299) @@ -154,6 +154,7 @@ guint clutter_get_default_frame_rate (void); void clutter_grab_pointer (ClutterActor *actor); +void clutter_grab_pointer_without_pick (ClutterActor *actor); void clutter_ungrab_pointer (void); ClutterActor * clutter_get_pointer_grab (void); Modified: projects/haf/trunk/clutter0.8/clutter/clutter-private.h =================================================================== --- projects/haf/trunk/clutter0.8/clutter/clutter-private.h 2009-09-07 08:19:49 UTC (rev 19298) +++ projects/haf/trunk/clutter0.8/clutter/clutter-private.h 2009-09-07 15:39:27 UTC (rev 19299) @@ -113,6 +113,8 @@ ClutterActor *pointer_grab_actor; /* The actor having the pointer grab * (or NULL if there is no pointer grab */ + gboolean grab_actor_needs_pick; /* Whether to perform a pick for + the grabbed actor or not */ ClutterActor *keyboard_grab_actor; /* The actor having the pointer grab * (or NULL if there is no pointer * grab) Modified: projects/haf/trunk/clutter0.8/debian/changelog =================================================================== --- projects/haf/trunk/clutter0.8/debian/changelog 2009-09-07 08:19:49 UTC (rev 19298) +++ projects/haf/trunk/clutter0.8/debian/changelog 2009-09-07 15:39:27 UTC (rev 19299) @@ -1,8 +1,15 @@ clutter (0.8.2-0maemo49~unreleased) unstable; urgency=low - * foo + Gordon: + * clutter/clutter-main.c + clutter/clutter-main.h + clutter/clutter-private.h: Add extra function called + clutter_grab_pointer_without_pick. This allows input events to be received + but ensures that clutter does not do picking in order to find which actor + is under the cursor. Also removed un-needed glFinish for picking (syncing + should be done in GLES) and increased clutter motion events frequency. - -- Gordon Williams <gordon.williams at collabora.co.uk> Tue, 1 Sep 2009 12:43:14 +0300 + -- Gordon Williams <gordon.williams at collabora.co.uk> Tue, 7 Sep 2009 14:34:14 +0100 clutter (0.8.2-0maemo48) unstable; urgency=low
- Previous message: [maemo-commits] r19298 - in projects/haf/trunk/gtk+: . gtk
- Next message: [maemo-commits] r19300 - projects/haf/tags/clutter
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]