mutter/clutter
Emmanuele Bassi 11239d8da6 actor: Do not unmap/unrealize twice on destruction
When calling clutter_actor_destroy(), ClutterActor calls
update_map_state() on itself to unset the REALIZED and MAPPED states,
prior to running the dispose() implementation.

The default dispose() will call remove_child() (either directly or
through the Container implementation), which will check for the MAPPED
state and then run update_map_state() again. We use the previously set
MAPPED state to decide whether or not the parent should queue for a
relayout/redraw when removing a visible children.

If the MAPPED flag was cleared prior to remove_child(), though, it'll
always be unset by the time we get to remove_child(), and this will
cause missing redraws/relayouts; we were ignoring this prior the
post-First Apocalypse changes because we were doing:

  if (was_mapped)
    clutter_actor_queue_relayout (parent);

  clutter_actor_queue_redraw (parent);

which is obviously wrong. Once I removed that glaring brain damage from
the remove_child() implementation, bugs started appearing — bugs that
were probably the reason why we introduced that brain damage in the
first place, instead of checking the source of those bugs.

The obvious fix is to avoid clearing up the actor's state on destroy()
until we remove the actor from its parent. This also reduces the amount
of work we do, and the code paths that can potentially go wrong.
2012-01-31 12:35:17 +00:00
..
cally cally: Use Actor.get_children() 2012-01-16 23:37:12 +00:00
cex100 docs: fix some headers paths 2011-11-10 19:05:39 +01:00
cogl Add missing include 2011-11-18 22:06:30 +01:00
deprecated actor: Move ClutterShader-related code out of clutter-actor.c 2012-01-31 11:56:59 +00:00
egl eglnative: fix building eglnative BE with evdev support 2011-12-08 16:13:37 +00:00
evdev build: make internal option_xkb_* symbols static 2011-12-08 16:13:38 +00:00
gdk gdk: Use the Stage state tracking 2012-01-26 08:31:11 +00:00
osx osx: Use the Stage state tracking 2012-01-26 08:30:58 +00:00
tslib egl: First attempt at cleaning up the EGL native backend 2011-11-03 13:45:20 +00:00
wayland wayland: Correctly support fullscreening before the stage is realized 2012-01-26 15:39:16 +00:00
win32 win32: Use the Stage state tracking 2012-01-26 08:31:10 +00:00
x11 x11: Remove CLUTTER_DISABLE_DEPRECATED usage 2012-01-31 10:34:45 +00:00
clutter-action.c
clutter-action.h ClutterActor: Add clutter_actor_has_actions 2011-09-29 19:34:32 +02:00
clutter-actor-box.c
clutter-actor-meta-private.h ClutterActor: Add clutter_actor_has_effects 2011-09-29 19:34:24 +02:00
clutter-actor-meta.c clutter-actor-meta: Fix _clutter_meta_group_has_metas_no_internal 2011-10-01 12:40:11 +02:00
clutter-actor-meta.h Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-actor-private.h actor: Move ClutterShader-related code out of clutter-actor.c 2012-01-31 11:56:59 +00:00
clutter-actor.c actor: Do not unmap/unrealize twice on destruction 2012-01-31 12:35:17 +00:00
clutter-actor.h actor: Add ClutterActorIter 2012-01-27 11:55:39 +00:00
clutter-align-constraint.c align-constraint: Add CLUTTER_ALIGN_BOTH 2011-10-15 18:36:27 +01:00
clutter-align-constraint.h Move all enumerations to a separate file 2011-10-11 17:59:46 +01:00
clutter-alpha.c docs: Fixes for cross-references 2011-09-12 13:12:14 +01:00
clutter-alpha.h Fix duplicate typedef of ClutterAlpha 2011-10-11 23:02:17 +01:00
clutter-animatable.c docs: Fixes for cross-references 2011-09-12 13:12:14 +01:00
clutter-animatable.h animatable: Remove CLUTTER_DISABLE_DEPRECATED 2011-11-02 13:00:46 +00:00
clutter-animation.c animation: Use the timeline's new-frame signal 2011-10-07 16:56:21 +01:00
clutter-animation.h
clutter-animator.c script: Hide private symbols 2011-09-07 16:14:10 +01:00
clutter-animator.h Move all enumerations to a separate file 2011-10-11 17:59:46 +01:00
clutter-backend-private.h backend: Remove ClutterBackend::redraw 2012-01-12 13:35:09 +00:00
clutter-backend.c backend: Remove ClutterBackend::redraw 2012-01-12 13:35:09 +00:00
clutter-backend.h Clean up the windowing system defines 2011-11-03 13:45:20 +00:00
clutter-bezier.c debug: Clean up debugging notes 2011-10-17 10:24:25 +01:00
clutter-bezier.h
clutter-bin-layout.c Use ClutterActorIter inside layout managers 2012-01-30 11:09:59 +00:00
clutter-bin-layout.h Move all enumerations to a separate file 2011-10-11 17:59:46 +01:00
clutter-bind-constraint.c docs: Inline test-constraints.c inside BindConstraint's description 2011-09-02 15:48:27 +01:00
clutter-bind-constraint.h Move all enumerations to a separate file 2011-10-11 17:59:46 +01:00
clutter-binding-pool.c Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-binding-pool.h Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-blur-effect.c blur: don't accumulate texture padding twice 2011-10-19 15:27:03 +01:00
clutter-blur-effect.h
clutter-box-layout.c Use ClutterActorIter inside layout managers 2012-01-30 11:09:59 +00:00
clutter-box-layout.h Move all enumerations to a separate file 2011-10-11 17:59:46 +01:00
clutter-cairo-texture.c cairo-texture: Skip ::draw emission for 0x0 surfaces 2011-11-18 17:23:56 +00:00
clutter-cairo-texture.h cairo-texture: Remove CLUTTER_DISABLE_DEPRECATED 2011-11-02 13:00:46 +00:00
clutter-child-meta.c Remove private helper #define's 2011-03-03 11:47:49 +00:00
clutter-child-meta.h docs: Fixes for cross-references 2011-09-12 13:12:14 +01:00
clutter-click-action.c click-action: Use the new symbolic event propagation macros 2012-01-12 10:27:17 +00:00
clutter-click-action.h Move all enumerations to a separate file 2011-10-11 17:59:46 +01:00
clutter-clone.c Avoid the shadowing of 'clone' 2011-10-19 15:23:55 +01:00
clutter-clone.h Avoid the shadowing of 'clone' 2011-10-19 15:23:55 +01:00
clutter-color-static.h static-colors: Simplify the defines 2011-09-05 17:22:14 +01:00
clutter-color.c color: Validate hex formats 2011-11-10 14:13:45 +00:00
clutter-color.h Move all enumerations to a separate file 2011-10-11 17:59:46 +01:00
clutter-colorize-effect.c effects: Use effect_queue_repaint instead of actor_queue_redraw 2011-11-28 18:30:18 +00:00
clutter-colorize-effect.h clutter-color-size-effect: Fix a minor typo in the docs 2011-02-16 14:11:59 +00:00
clutter-config.h.in
clutter-config.h.win32 clutter-config.h.win32: Add CLUTTER_INPUT_NULL 2011-11-14 13:33:04 +08:00
clutter-constraint.c constraint: Queue a relayout on :enabled changes 2011-03-01 19:04:31 +00:00
clutter-constraint.h ClutterActor: Add clutter_actor_has_contraints 2011-09-29 19:34:31 +02:00
clutter-container.c Deprecate the old raise/lower API 2012-01-16 23:37:13 +00:00
clutter-container.h Deprecate the old raise/lower API 2012-01-16 23:37:13 +00:00
clutter-debug.h debug: Simple whitespace cleanups 2011-11-18 17:54:19 +00:00
clutter-deform-effect.c deform-effect: Check against NULL pointers 2012-01-12 10:34:26 +00:00
clutter-deform-effect.h
clutter-deprecated.h Deprecate Container add() and remove() methods 2012-01-16 23:37:11 +00:00
clutter-desaturate-effect.c effects: Use effect_queue_repaint instead of actor_queue_redraw 2011-11-28 18:30:18 +00:00
clutter-desaturate-effect.h
clutter-device-manager-private.h input: adds internal _clutter_input_device_get_stage api 2011-12-08 16:13:37 +00:00
clutter-device-manager.c backend: Clean up the device manager creation 2011-11-10 14:55:03 +00:00
clutter-device-manager.h
clutter-drag-action.c drag-action: Use the symbolic constants for the button 2012-01-27 09:46:10 +00:00
clutter-drag-action.h Move all enumerations to a separate file 2011-10-11 17:59:46 +01:00
clutter-drop-action.c drop-action: Use the event propagation macros 2012-01-12 10:39:59 +00:00
clutter-drop-action.h docs: Document ClutterDropAction 2011-06-20 15:25:54 +01:00
clutter-effect-private.h effect: Rename RunFlags to PaintFlags 2011-06-13 16:00:45 +01:00
clutter-effect.c docs: Fixes for cross-references 2011-09-12 13:12:14 +01:00
clutter-effect.h Move all enumerations to a separate file 2011-10-11 17:59:46 +01:00
clutter-enum-types.c.in
clutter-enum-types.h.in
clutter-enums.h docs: Update ClutterStageState flags 2012-01-26 08:33:45 +00:00
clutter-event-private.h event: Add setters for ClutterEvent members 2011-02-28 14:16:23 +00:00
clutter-event-translator.c
clutter-event-translator.h
clutter-event.c Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-event.h event: Add symbolic names for left, middle, and right buttons 2012-01-27 09:43:06 +00:00
clutter-feature.c
clutter-feature.h Move all enumerations to a separate file 2011-10-11 17:59:46 +01:00
clutter-fixed-layout.c fixed-layout: Remove the NO_LAYOUT flag set 2012-01-27 15:45:11 +00:00
clutter-fixed-layout.h
clutter-flatten-effect.c clutter-actor: Add a 'has_overlaps' virtual 2011-05-13 01:46:32 +01:00
clutter-flatten-effect.h clutter-actor: Add a 'has_overlaps' virtual 2011-05-13 01:46:32 +01:00
clutter-flow-layout.c Use ClutterActorIter inside layout managers 2012-01-30 11:09:59 +00:00
clutter-flow-layout.h Move all enumerations to a separate file 2011-10-11 17:59:46 +01:00
clutter-gesture-action.c gesture-action: Protect against NULL pointers 2012-01-12 10:49:16 +00:00
clutter-gesture-action.h docs: Fix Clutter API reference 2011-06-13 15:36:07 +01:00
clutter-group.h Deprecate ClutterGroup 2012-01-16 23:35:16 +00:00
clutter-id-pool.c clutter-id-pool: fix warning on bad pick 2011-05-26 08:48:13 -04:00
clutter-id-pool.h Privatize all ClutterIdPool functions 2011-02-18 15:53:27 +00:00
clutter-input-device.c input: adds internal _clutter_input_device_get_stage api 2011-12-08 16:13:37 +00:00
clutter-input-device.h Move all enumerations to a separate file 2011-10-11 17:59:46 +01:00
clutter-interval.c docs: Fixes for building the API reference 2011-07-26 13:44:12 +01:00
clutter-interval.h Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-keysyms-table.c clutter/clutter-keysyms-table.c: Fix function name 2011-10-12 17:25:37 +08:00
clutter-keysyms-update.pl Move clutter-keysyms-compat.h to the deprecated section 2011-11-03 14:42:39 +00:00
clutter-keysyms.h Move clutter-keysyms-compat.h to the deprecated section 2011-11-03 14:42:39 +00:00
clutter-layout-manager.c actor: Remove automagic "expand" flag 2012-01-16 23:37:13 +00:00
clutter-layout-manager.h actor: Remove automagic "expand" flag 2012-01-16 23:37:13 +00:00
clutter-layout-meta.c
clutter-layout-meta.h
clutter-list-model.c docs: Fixes for building the API reference 2011-07-26 13:44:12 +01:00
clutter-list-model.h
clutter-main.c Add diagnostic mode 2011-12-28 09:37:53 +00:00
clutter-main.h Deprecate some more old, useless API 2011-11-15 17:58:25 +00:00
clutter-marshal.list text: Implement ClutterTextBuffer 2012-01-17 14:29:44 +00:00
clutter-master-clock.c Store the master clock pointer in the main context 2011-11-14 17:16:27 +00:00
clutter-master-clock.h
clutter-media.c clutter-media: mention the asynchronous behavior of set_playing() in the doc. 2011-07-04 15:58:08 +01:00
clutter-media.h
clutter-model-private.h
clutter-model.c Remove some compiler warnings 2011-10-11 23:42:23 +01:00
clutter-model.h Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-offscreen-effect-private.h offscreen-effect: Add public accessor for target size 2011-02-28 14:34:36 +00:00
clutter-offscreen-effect.c offscreen-effect: Track the size of the actor separately 2011-11-28 15:42:35 +00:00
clutter-offscreen-effect.h offscreen-effect: Add public accessor for target size 2011-02-28 14:34:36 +00:00
clutter-page-turn-effect.c Remove private helper #define's 2011-03-03 11:47:49 +00:00
clutter-page-turn-effect.h
clutter-paint-volume-private.h Optimize culling by doing culling in eye-coordinates 2011-03-07 13:26:20 +00:00
clutter-paint-volume.c Remove use of CoglVector3 2012-01-16 21:06:19 +00:00
clutter-path-constraint.c Remove private helper #define's 2011-03-03 11:47:49 +00:00
clutter-path-constraint.h
clutter-path.c path: Fix introspection annotations 2011-12-01 10:55:13 +00:00
clutter-path.h Move all enumerations to a separate file 2011-10-11 17:59:46 +01:00
clutter-private.h Remove use of CoglVector3 2012-01-16 21:06:19 +00:00
clutter-profile.c debug: Clean up profile/debug symbols 2011-11-18 17:44:42 +00:00
clutter-profile.h debug: Clean up profile/debug symbols 2011-11-18 17:44:42 +00:00
clutter-script-parser.c script: Fix a segfault 2012-01-17 14:29:45 +00:00
clutter-script-private.h script: Hide private symbols 2011-09-07 16:14:10 +01:00
clutter-script.c script: Add loading from a resource 2012-01-24 12:04:56 +00:00
clutter-script.h script: Add loading from a resource 2012-01-24 12:04:56 +00:00
clutter-scriptable.c Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-scriptable.h Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-settings-private.h Add more sections to the Clutter configuration file 2011-10-11 17:52:17 +01:00
clutter-settings.c Do not leak strings from GKeyFile 2011-10-11 22:45:14 +01:00
clutter-settings.h
clutter-shader-effect.c Currently Clutter only prints out a warning message in case some shader effects fail to compile 2011-12-01 10:57:22 +00:00
clutter-shader-effect.h clutter-shader-effect: Add a get_static_shader_source virtual 2011-09-30 11:51:37 +01:00
clutter-shader-types.c Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-shader-types.h Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-snap-constraint.c snap-constraint: Fix allocation for CLUTTER_SNAP_EDGE_RIGHT 2011-07-18 13:43:29 +01:00
clutter-snap-constraint.h Move all enumerations to a separate file 2011-10-11 17:59:46 +01:00
clutter-stage-manager-private.h
clutter-stage-manager.c stage-manager: Store the stage manager into the main context 2011-11-14 15:43:20 +00:00
clutter-stage-manager.h stage-manager: Remove CLUTTER_DISABLE_DEPRECATED 2011-11-02 13:00:46 +00:00
clutter-stage-private.h stage: Add state tracking 2012-01-26 08:30:47 +00:00
clutter-stage-window.c stage-window: Add :backend and :wrapper properties 2011-11-10 14:55:03 +00:00
clutter-stage-window.h Remove the X11-specific bit in ClutterStageCogl 2011-11-03 13:45:19 +00:00
clutter-stage.c stage: Use the iterator API instead of the DOM one 2012-01-27 11:55:39 +00:00
clutter-stage.h Move Perspective and Fog definitions to clutter-types.h 2012-01-03 13:50:06 +00:00
clutter-state.c Fix compiler warnings 2012-01-16 23:49:49 +00:00
clutter-state.h Move more typedefs into clutter-types.h 2011-10-11 17:59:50 +01:00
clutter-swipe-action.c swipe-action: Remove the required devices call 2011-06-10 15:15:15 +01:00
clutter-swipe-action.h Move all enumerations to a separate file 2011-10-11 17:59:46 +01:00
clutter-table-layout.c Fix compiler warnings 2012-01-16 23:49:49 +00:00
clutter-table-layout.h Move all enumerations to a separate file 2011-10-11 17:59:46 +01:00
clutter-text-buffer.c text-buffer: Fix the Since annotations 2012-01-17 14:29:45 +00:00
clutter-text-buffer.h text: Implement ClutterTextBuffer 2012-01-17 14:29:44 +00:00
clutter-text.c text: Fix the buffer length check on paint 2012-01-17 14:29:45 +00:00
clutter-text.h text: Implement ClutterTextBuffer 2012-01-17 14:29:44 +00:00
clutter-texture.c texture: Deprecate YUV setter 2012-01-31 10:28:04 +00:00
clutter-texture.h texture: Deprecate YUV setter 2012-01-31 10:28:04 +00:00
clutter-timeline.c Fix compiler warnings 2012-01-16 23:49:49 +00:00
clutter-timeline.h Move more typedefs into clutter-types.h 2011-10-11 17:59:50 +01:00
clutter-types.h actor: Add ClutterActorIter 2012-01-27 11:55:39 +00:00
clutter-units.c Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-units.h Move all enumerations to a separate file 2011-10-11 17:59:46 +01:00
clutter-util.c Remove internal usage of ClutterGeometry in StageWindow 2011-09-26 12:05:55 +01:00
clutter-util.h utils: Remove CLUTTER_DISABLE_DEPRECATED 2011-11-02 13:00:47 +00:00
clutter-version.h.in Clean up the windowing system defines 2011-11-03 13:45:20 +00:00
clutter-version.h.win32.in Update clutter-version.h.win32.in 2011-11-07 12:12:53 +08:00
clutter.h Deprecate ClutterRectangle 2012-01-16 23:35:17 +00:00
clutter.pc.in build: Add infrastructure for inserting Requires.private into pkg-config files 2012-01-11 12:23:46 +00:00
clutter.symbols actor: Add ClutterActorIter 2012-01-27 11:55:39 +00:00
Makefile.am actor: Move ClutterShader-related code out of clutter-actor.c 2012-01-31 11:56:59 +00:00