mutter/clutter
Emmanuele Bassi 2f445682b1 cairo-texture: Use signal-based drawing
The current "create context/draw/destroy context" pattern presents
various problems. The first issue is that it defers memory management to
the caller of the create() or create_region() methods, which makes
bookkeeping of the cairo_t* harder for language bindings and third party
libraries. The second issue is that, while it's easier for
draw-and-forget texturs, this API is needlessly complicated for contents
that have to change programmatically - and it introduces constraints
like calling the drawing code explicitly after a surface resize (e.g.
inside an allocate() implementation).

By using a signal-based approach we can make the CairoTexture actor
behave like other actors, and like other libraries using Cairo as their
2D drawing API.

The semantics of the newly-introduced ::draw signal are the same as the
one used by GTK+:

  - the signal is emitted on invalidation;
  - the cairo_t* context is owned by the actor;
  - it is safe to have multiple callbacks attached to the same
    signal, to allow composition;
  - the cairo_t* is already clipped to the invalidated area, so
    that Cairo can discard geometry immediately before we upload
    the texture data.

There are possible future improvements, like coalescing multiple
invalidations inside regions, and performing clipped draws during
the paint cycle; we could even perform clipped redraws if we know the
extent of the invalidated area.
2011-07-26 12:40:52 +01:00
..
cally a11y: cally-text get_offset_at_point implementation 2011-07-06 17:05:49 +02:00
cogl build: don't explicitly include and egl or gl headers 2011-07-18 17:07:40 +01:00
evdev evdev: Remove unused variable 2011-04-18 16:24:27 +01:00
osx osx: Code style cleanups 2011-07-13 19:33:11 +01:00
wayland Removes Cogl from the repository 2011-05-06 15:44:08 +01:00
win32 don't call cogl_set_default_context since it's been removed 2011-07-11 16:59:26 +01:00
x11 x11/event: Avoid compiler warnings with HAVE_XGE undefined 2011-07-15 16:08:38 +01:00
clutter-action.c
clutter-action.h
clutter-actor-box.c
clutter-actor-meta-private.h Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-actor-meta.c Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-actor-meta.h Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-actor-private.h actor: documents _get/apply_relative_transform_matrix 2011-06-17 18:38:29 +01:00
clutter-actor.c actor: Clean up the allocate() checks 2011-07-19 14:03:02 +01:00
clutter-actor.h Revert "build: Detect the appropriate default flavour" 2011-07-13 14:26:05 +01:00
clutter-align-constraint.c align-constraint: Fix typo in the vertical align 2011-04-01 15:36:22 +01:00
clutter-align-constraint.h Appease the gods in introspection 2011-01-20 16:35:26 +00:00
clutter-alpha.c alpha: Don't use the GClosure to compute the alpha when possible 2011-07-18 15:17:15 +01:00
clutter-alpha.h
clutter-animatable.c
clutter-animatable.h
clutter-animation.c animation: Use ::destroy with animate() 2011-04-16 10:22:01 +01:00
clutter-animation.h
clutter-animator.c Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-animator.h Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-backend-private.h Moves all GLX code down from Clutter to Cogl 2011-04-11 17:54:36 +01:00
clutter-backend.c backend: Do not call ensure_context() with NULL stage 2011-06-14 15:55:06 +01:00
clutter-backend.h Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-behaviour-depth.c docs: Add the Deprecate tag to Behaviours 2011-06-20 18:46:48 +01:00
clutter-behaviour-depth.h Expose deprecated symbols whilst building Clutter 2011-01-20 13:29:37 +00:00
clutter-behaviour-ellipse.c docs: Add the Deprecate tag to Behaviours 2011-06-20 18:46:48 +01:00
clutter-behaviour-ellipse.h Expose deprecated symbols whilst building Clutter 2011-01-20 13:29:37 +00:00
clutter-behaviour-opacity.c docs: Add the Deprecate tag to Behaviours 2011-06-20 18:46:48 +01:00
clutter-behaviour-opacity.h Expose deprecated symbols whilst building Clutter 2011-01-20 13:29:37 +00:00
clutter-behaviour-path.c docs: Add the Deprecate tag to Behaviours 2011-06-20 18:46:48 +01:00
clutter-behaviour-path.h Expose deprecated symbols whilst building Clutter 2011-01-20 13:29:37 +00:00
clutter-behaviour-rotate.c docs: Add the Deprecate tag to Behaviours 2011-06-20 18:46:48 +01:00
clutter-behaviour-rotate.h Expose deprecated symbols whilst building Clutter 2011-01-20 13:29:37 +00:00
clutter-behaviour-scale.c docs: Add the Deprecate tag to Behaviours 2011-06-20 18:46:48 +01:00
clutter-behaviour-scale.h Expose deprecated symbols whilst building Clutter 2011-01-20 13:29:37 +00:00
clutter-behaviour.c docs: Fix deprecation notice for ClutterBehaviour 2011-06-20 19:44:55 +01:00
clutter-behaviour.h Expose deprecated symbols whilst building Clutter 2011-01-20 13:29:37 +00:00
clutter-bezier.c
clutter-bezier.h
clutter-bin-layout.c Remove private helper #define's 2011-03-03 11:47:49 +00:00
clutter-bin-layout.h
clutter-bind-constraint.c Remove private helper #define's 2011-03-03 11:47:49 +00:00
clutter-bind-constraint.h Fixed typo of bidng to bind 2011-07-13 15:19:22 +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 Appease the gods in introspection 2011-01-20 16:35:26 +00:00
clutter-blur-effect.h Appease the gods in introspection 2011-01-20 16:35:26 +00:00
clutter-box-layout.c Sync allocation in ClutterBoxLayout with the one in GtkBox 2011-06-07 14:43:52 +01:00
clutter-box-layout.h
clutter-box.c box: Implement the correct paint volume 2011-03-08 19:27:07 +00:00
clutter-box.h
clutter-cairo-texture.c cairo-texture: Use signal-based drawing 2011-07-26 12:40:52 +01:00
clutter-cairo-texture.h cairo-texture: Use signal-based drawing 2011-07-26 12:40:52 +01:00
clutter-child-meta.c Remove private helper #define's 2011-03-03 11:47:49 +00:00
clutter-child-meta.h
clutter-click-action.c click-action: Add support for long press detection 2011-06-09 15:12:41 +01:00
clutter-click-action.h click-action: Add support for long press detection 2011-06-09 15:12:41 +01:00
clutter-clone.c clutter-actor: Add a 'has_overlaps' virtual 2011-05-13 01:46:32 +01:00
clutter-clone.h
clutter-color-static.h
clutter-color.c Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-color.h Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-colorize-effect.c Remove private helper #define's 2011-03-03 11:47:49 +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 build: Generate an instealled config header 2011-01-19 14:33:27 +00:00
clutter-constraint.c constraint: Queue a relayout on :enabled changes 2011-03-01 19:04:31 +00:00
clutter-constraint.h
clutter-container.c introspection: Override the GParamSpec type 2011-02-15 12:40:12 +00:00
clutter-container.h Merge remote-tracking branch 'nobled/wayland-fixes2' 2011-02-11 16:45:45 +00:00
clutter-debug.h clutter-actor: Add a debug flag for disabling offscreen redirect 2011-06-17 12:15:19 +01:00
clutter-deform-effect.c Remove private helper #define's 2011-03-03 11:47:49 +00:00
clutter-deform-effect.h
clutter-deprecated.h
clutter-desaturate-effect.c Remove private helper #define's 2011-03-03 11:47:49 +00:00
clutter-desaturate-effect.h Appease the gods in introspection 2011-01-20 16:35:26 +00:00
clutter-device-manager-private.h Clean up crossing event synthesis code 2011-01-28 18:19:49 +00:00
clutter-device-manager.c stage: Make per-actor motion event delivery accessors public 2011-06-20 11:41:28 +01:00
clutter-device-manager.h event/x11: Rework the way we translate X11 events 2011-01-21 10:25:43 +00:00
clutter-drag-action.c Support multiple pointers in ClutterDragAction. 2011-06-21 18:29:01 +01:00
clutter-drag-action.h drag-action: Allow using settings for the drag threshold 2011-03-09 14:21:01 +00:00
clutter-drop-action.c docs: Document ClutterDropAction 2011-06-20 15:25:54 +01: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 effect: Rename RunFlags to PaintFlags 2011-06-13 16:00:45 +01:00
clutter-effect.h docs: Fix up the API reference 2011-06-20 14:26:57 +01:00
clutter-enum-types.c.in
clutter-enum-types.h.in
clutter-event-private.h event: Add setters for ClutterEvent members 2011-02-28 14:16:23 +00:00
clutter-event-translator.c event/x11: Rework the way we translate X11 events 2011-01-21 10:25:43 +00:00
clutter-event-translator.h event/x11: Rework the way we translate X11 events 2011-01-21 10:25:43 +00:00
clutter-event.c Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-event.h event: Add clutter_event_set_source() declaration 2011-06-09 15:40:26 +01:00
clutter-feature.c
clutter-feature.h
clutter-fixed-layout.c
clutter-fixed-layout.h
clutter-fixed.c Skip introspection for GValue ↔ CoglFixed API 2011-06-13 13:47:09 +01:00
clutter-fixed.h introspection: Skip some C-only structures 2010-12-10 17:15:39 +00:00
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 Remove private helper #define's 2011-03-03 11:47:49 +00:00
clutter-flow-layout.h
clutter-frame-source.c
clutter-frame-source.h Expose deprecated symbols whilst building Clutter 2011-01-20 13:29:37 +00:00
clutter-gesture-action.c Make sure the gesture is cancelled even if we miss the release event 2011-07-14 13:11:12 +02:00
clutter-gesture-action.h docs: Fix Clutter API reference 2011-06-13 15:36:07 +01:00
clutter-group.c group: Handle list modification while destroying children 2011-06-17 17:23:32 +01:00
clutter-group.h Deprecate mallum's add() macros for Group and Stage 2011-07-04 15:58:08 +01: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 Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-input-device.h Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-interval.c Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-interval.h Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-keysyms-compat.h keysyms: Update the key symbols 2011-06-17 12:14:15 +01:00
clutter-keysyms-table.c Move the keysym ↔ Unicode table to .rodata 2011-02-28 14:16:24 +00:00
clutter-keysyms-update.pl
clutter-keysyms.h keysyms: Update the key symbols 2011-06-17 12:14:15 +01:00
clutter-layout-manager.c
clutter-layout-manager.h Reduce the amount of g-ir-scanner warnings 2010-12-09 12:36:50 +00:00
clutter-layout-meta.c
clutter-layout-meta.h
clutter-list-model.c ClutterListModel: Implement get_n_rows for improved performance 2011-01-10 21:22:22 +00:00
clutter-list-model.h
clutter-main.c Do not use return with void functions 2011-07-18 13:53:16 +01:00
clutter-main.h stage: Make per-actor motion event delivery accessors public 2011-06-20 11:41:28 +01:00
clutter-marshal.list Add ClutterDropAction 2011-06-20 15:25:53 +01:00
clutter-master-clock.c
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 Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +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 effect: Rename RunFlags to PaintFlags 2011-06-13 16:00:45 +01: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 Appease the gods in introspection 2011-01-20 16:35:26 +00:00
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 Provide stable paint-boxes for fixed sized actors 2011-07-14 13:54:12 +01:00
clutter-path-constraint.c Remove private helper #define's 2011-03-03 11:47:49 +00:00
clutter-path-constraint.h Appease the gods in introspection 2011-01-20 16:35:26 +00:00
clutter-path.c
clutter-path.h
clutter-private.h Adds a CLUTTER_NEARBYINT macro for float rounding 2011-07-14 13:54:05 +01:00
clutter-profile.c uprof: Add the units in the name of the "Per Frame" timer attribute 2011-07-12 10:57:18 +01:00
clutter-profile.h
clutter-rectangle.c clutter-actor: Add a 'has_overlaps' virtual 2011-05-13 01:46:32 +01:00
clutter-rectangle.h
clutter-score.c Deprecate ClutterScore 2011-07-08 12:01:08 +01:00
clutter-score.h Deprecate ClutterScore 2011-07-08 12:01:08 +01:00
clutter-script-parser.c script: Allow warping to states 2011-06-13 13:47:09 +01:00
clutter-script-private.h script: Allow warping to states 2011-06-13 13:47:09 +01:00
clutter-script.c docs: Update missing documentation 2011-06-13 13:47:09 +01:00
clutter-script.h script: Rename "state" → "states" 2011-06-13 13:47:08 +01: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.c settings: Add the :long-press-duration 2011-06-09 14:43:34 +01:00
clutter-settings.h Appease the gods in introspection 2011-01-20 16:35:26 +00:00
clutter-shader-effect.c shader-effect: Allow instantiating ShaderEffect 2011-06-07 14:09:53 +01:00
clutter-shader-effect.h shader-effect: Allow instantiating ShaderEffect 2011-06-07 14:09:53 +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-shader.c Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-shader.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 Appease the gods in introspection 2011-01-20 16:35:26 +00:00
clutter-stage-manager-private.h
clutter-stage-manager.c
clutter-stage-manager.h
clutter-stage-private.h stage: Allow tracking dragged actors 2011-06-20 14:31:07 +01:00
clutter-stage-window.c clutter-stage: Add clutter_stage_get_redraw_clip_bounds 2011-07-13 13:54:50 +01:00
clutter-stage-window.h clutter-stage: Add clutter_stage_get_redraw_clip_bounds 2011-07-13 13:54:50 +01:00
clutter-stage.c pick: Use Cogl API not GL API to disable dithering 2011-07-14 13:54:16 +01:00
clutter-stage.h clutter-stage: Add clutter_stage_get_redraw_clip_bounds 2011-07-13 13:54:50 +01:00
clutter-state.c Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-state.h Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +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 swipe-action: Clean up 2011-06-10 15:15:15 +01:00
clutter-table-layout.c clutter: Remove unused variables 2011-02-19 16:47:20 +00:00
clutter-table-layout.h
clutter-text.c text: Fix the default value of "editable" 2011-07-18 13:57:44 +01:00
clutter-text.h clutter-text: new clutter_text_get_layout_offsets API 2011-06-13 16:15:22 +01:00
clutter-texture.c texture: Clean up error reporting 2011-07-18 18:06:57 +01:00
clutter-texture.h texture: Deprecate the new_from_actor() function 2011-07-08 12:08:19 +01:00
clutter-timeline.c timeline: Cast elapsed time before emitting ::new-frame 2011-07-18 13:45:55 +01:00
clutter-timeline.h ClutterTimeline: Fix the 'msecs' parameter for the new-frame signal 2011-01-24 11:52:47 +00:00
clutter-timeout-interval.c
clutter-timeout-interval.h
clutter-timeout-pool.c More ISO C90 warning fixes in Clutter 2011-02-15 12:40:11 +00:00
clutter-timeout-pool.h More ISO C90 warning fixes in Clutter 2011-02-15 12:40:11 +00:00
clutter-types.h docs: Fix up the API reference 2011-06-20 14:26:57 +01:00
clutter-units.c Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-units.h Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-util.c Eliminate G_CONST_RETURN 2011-06-07 16:06:24 +01:00
clutter-util.h
clutter-version.h.in
clutter.h Add ClutterDropAction 2011-06-20 15:25:53 +01:00
clutter.pc.in
Makefile.am build: Fix the path to the tslib event source 2011-07-04 16:09:41 +01:00