[maemo-commits] [maemo-commits] r18072 - in projects/haf/trunk/clutter0.8: clutter debian
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Wed Apr 15 17:16:47 EEST 2009
- Previous message: [maemo-commits] r18071 - in projects/haf/trunk/dbus-glib/debian: . patches
- Next message: [maemo-commits] r18073 - in projects/haf/trunk/clutter0.8: clutter/x11 debian
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: gw Date: 2009-04-15 17:16:45 +0300 (Wed, 15 Apr 2009) New Revision: 18072 Modified: projects/haf/trunk/clutter0.8/clutter/clutter-actor.c projects/haf/trunk/clutter0.8/clutter/clutter-event.c projects/haf/trunk/clutter0.8/clutter/clutter-event.h projects/haf/trunk/clutter0.8/debian/changelog Log: * clutter-actor.c, clutter-event.c, clutter-event.h: Fix for NB#110783, we now remove any events from the event queue that have their source set to any actor that is disposed of. Modified: projects/haf/trunk/clutter0.8/clutter/clutter-actor.c =================================================================== --- projects/haf/trunk/clutter0.8/clutter/clutter-actor.c 2009-04-15 12:33:07 UTC (rev 18071) +++ projects/haf/trunk/clutter0.8/clutter/clutter-actor.c 2009-04-15 14:16:45 UTC (rev 18072) @@ -1923,6 +1923,10 @@ g_signal_emit (self, actor_signals[DESTROY], 0); G_OBJECT_CLASS (clutter_actor_parent_class)->dispose (object); + /* Remove ourselves from the event list if we happened to have been put + * in it. We only use the pointer here so it doesn't matter that the + * object has been disposed of. */ + clutter_event_remove_source( self ); } static void Modified: projects/haf/trunk/clutter0.8/clutter/clutter-event.c =================================================================== --- projects/haf/trunk/clutter0.8/clutter/clutter-event.c 2009-04-15 12:33:07 UTC (rev 18071) +++ projects/haf/trunk/clutter0.8/clutter/clutter-event.c 2009-04-15 14:16:45 UTC (rev 18072) @@ -273,11 +273,11 @@ /** * clutter_keysym_to_unicode: - * @keyval: a clutter key symbol - * + * @keyval: a clutter key symbol + * * Convert from a Clutter key symbol to the corresponding ISO10646 (Unicode) * character. - * + * * Return value: the corresponding unicode character, or 0 if there * is no corresponding character. **/ @@ -310,17 +310,17 @@ return clutter_keysym_to_unicode_tab[mid].ucs; } } - + /* No matching Unicode value found */ return 0; } /** * clutter_event_get_device_id: - * @event: a clutter event - * + * @event: a clutter event + * * Retrieves the events device id if set. - * + * * Return value: A unique identifier for the device or -1 if the event has * no specific device set. **/ @@ -448,9 +448,42 @@ } /** + * clutter_event_remove_source: + * @actor: A #ClutterActor. + * + * Removes and frees all events in the queue that contain a source that + * is the given clutter actor. + */ +void +clutter_event_remove_source (ClutterActor *actor) +{ + ClutterMainContext *context = clutter_context_get_default (); + GList *l; + + if (!context->events_queue) + return; + + l = context->events_queue->head; + while (l) + { + GList *nextl = l->next; + ClutterEvent *event = (ClutterEvent*)l->data; + /* if this event's source is this actor, remove it from the queue */ + if (event->any.source == actor) + { + g_queue_remove(context->events_queue, l->data); + clutter_event_free(event); + } + /* We're safe to carry on here because we saved our last + * 'next' pointer before removing this one */ + l = nextl; + } +} + +/** * clutter_event_get: * - * Pops an event off the event queue. Applications should not need to call + * Pops an event off the event queue. Applications should not need to call * this. * * Return value: A #ClutterEvent or NULL if queue empty @@ -473,10 +506,10 @@ /** * clutter_event_peek: - * - * Returns a pointer to the first event from the event queue but - * does not remove it. * + * Returns a pointer to the first event from the event queue but + * does not remove it. + * * Return value: A #ClutterEvent or NULL if queue empty. * * Since: 0.4 @@ -487,7 +520,7 @@ ClutterMainContext *context = clutter_context_get_default (); g_return_val_if_fail (context != NULL, NULL); - + if (context->events_queue == NULL) return NULL; Modified: projects/haf/trunk/clutter0.8/clutter/clutter-event.h =================================================================== --- projects/haf/trunk/clutter0.8/clutter/clutter-event.h 2009-04-15 12:33:07 UTC (rev 18071) +++ projects/haf/trunk/clutter0.8/clutter/clutter-event.h 2009-04-15 14:16:45 UTC (rev 18072) @@ -117,7 +117,7 @@ * * Since: 0.4 */ -typedef enum +typedef enum { CLUTTER_NOTHING = 0, CLUTTER_KEY_PRESS, @@ -422,6 +422,7 @@ ClutterEvent * clutter_event_new (ClutterEventType type); ClutterEvent * clutter_event_copy (ClutterEvent *event); void clutter_event_free (ClutterEvent *event); +void clutter_event_remove_source (ClutterActor *actor); ClutterEventType clutter_event_type (ClutterEvent *event); guint32 clutter_event_get_time (ClutterEvent *event); ClutterModifierType clutter_event_get_state (ClutterEvent *event); Modified: projects/haf/trunk/clutter0.8/debian/changelog =================================================================== --- projects/haf/trunk/clutter0.8/debian/changelog 2009-04-15 12:33:07 UTC (rev 18071) +++ projects/haf/trunk/clutter0.8/debian/changelog 2009-04-15 14:16:45 UTC (rev 18072) @@ -1,3 +1,11 @@ +clutter (0.8.2-0maemo27~unreleased) unstable; urgency=low + + * clutter-actor.c, clutter-event.c, clutter-event.h: Fix for NB#110783, we + now remove any events from the event queue that have their source set to + any actor that is disposed of. + + -- Gordon Williams <gordon.williams at collabora.co.uk> Wed, 15 Apr 2009 15:09:00 +0000 + clutter (0.8.2-0maemo26) unstable; urgency=low * Disable compilation of Glib debug messages.
- Previous message: [maemo-commits] r18071 - in projects/haf/trunk/dbus-glib/debian: . patches
- Next message: [maemo-commits] r18073 - in projects/haf/trunk/clutter0.8: clutter/x11 debian
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]