Clutter 0.5.0 Released
good news, everyone!
here’s to you the first development snapshot of Clutter. this release is meant for testing and bug fixing, and it’s the first towards the next stable cycle of Clutter.
Notes
- This is unstable development release. While it has had a bit of testing, there are certainly plenty of bugs remaining to be found. This release should not be used in production.
- This version is API and ABI incompatible with the current stable release of Clutter. The API has been mostly frozen, but it can still change within the 0.5 development snapshots cycle.
- This version is parallel installable with Clutter 0.4 and with the upcoming 0.6 release.
- Bugs should be reported to Bugzilla.
List of changes between 0.4.2 and 0.5.0
- New event handling system: every actor with the
CLUTTER_ACTOR_REACTIVEflag set will receive events from the underlying backend; the event propagation chain will be walked in two directions (from the actor to the top-level container and back) with the ability to block it in both phases. ClutterShader, an abstraction over the programmable OpenGL pipeline.ClutterScore, an object for controlling timelines; by using a score instance is possible to start multiple timelines at once, or start a timeline after another has emitted theClutterTimeline::completesignal.ClutterScript, an object for parsing a scene from an external file or a buffer; the scene is described using JSON: every object is defined using its class and properties, and container objects can have their children defined as well. It is also possible to describe top-level objects such as timelines and behaviours, and to automatically connect signal handlers to signal names.ClutterTimelineduration can now be set in milliseconds using the:durationproperty; the default framerate will be used to compute the actual duration in frames. The default framerate will be set by the backend, and can be overridden by the applications.ClutterTimelinedirection can now be set using the:directionproperty; a timeline can be set to proceed forward or backward, and the direction can also be change while the timeline is still running.- New, experimental OSX backend.
- Build environment for MS VisualStudio 2005.
- The SDL backend can now be compiled under win32 with MingW; this backend is still marked as experimental.
ClutterModel, a generic list-based model object that can be used to implement actors following the Model-Viewer-Controller design pattern. Clutter provides a default implementation ofClutterModel, calledClutterModelDefaultand using theGSequencedata structure from GLib to optimize insertion and look up.- Add the ability to grab pointer and keyboard events: if an actor is set to have a grab it’ll be the only one receiving events until it releases the grab.
- Add the ability for an actor to receive the key focus; an actor with key focus will always receive the key events, even if it did not acquire the keyboard grab.
- It is now possible to set the GL “fog” (also known as “depth cueing”) effect on the ClutterStage; if the fog is enabled, actors farther away from the view point will fade into the stage background color.
- Each actor now has an “anchor point”, a point defined in the actor’s coordinate space that will be used as the origin when scaling and doing rotation transformations.
- Every pixel-based API has been doubled with a corresponding ClutterUnits-based function (postfixed with a ‘-u’). This allows sub-pixel precision and device independence.
- The
ClutterLabelactor now tries very hard to provide a sane default size, if no bounding box has been requested; this fixes the:alignmentproperty and allows the addition of the:justifyproperty.
List of bugs fixed
o #423 - All actors should emit events rather than just the stage
o #424 - Interface definition files
o #443 - ClutterModel implementation
o #480 - Uninitialized variable in path_alpha_to_position() [Gwenole Beauchesne]
o #511 - clutter_stage_get_actor_at_pos problem
o #512 - clutter window moves when stage actor is scaled
o #518 - XEMBED not supported in eglx backend
o #519 - Should have an Atom cache initialized on start up
o #520 - Delete after multibyte unicode chars in ClutterEntry [Tommi Komulainen]
o #522 - Array out of bounds indexing [Tommi Komulainen]
o #523 - cogl portability fixes [Tommi Komulainen]
o #524 - missing config.h includes [Tommi Komulainen]
o #525 - Redundant include in cogl/gl [Tommi Komulainen]
o #531 - Extraneous “new-frame” signal generated
o #532 - clutter_actor_set_scale_with_gravityx() precision [Gwenole Beauchesne]
o #544 - clutter_color_to_hlsx is broken [Neil Roberts]
o #546 - ClutterStageState doesn’t make sense
o #550 - Wanted: Set Actor’s position based on center or other edges/corners of quadrangle
o #557 - ClutterScript should support complex properties for third party classes
o #558 - Unmerge UI definitions
o #566 - ClutterEntry does not scroll the text to the right [Gwenole Beauchesne]
o #577 - Inconsistent naming of behaviour properties
o #580 - Fix call to cogl_enable() [Gwenole Beauchesne]
o #582 - api naming inconsistence between clutter_behaviour_path_append_knots and clutter_behaviour_bspline_append
o #584 - Typo on clutter_effect_rotate_x documentation page
o #592 - Fix build on trunk [Gwenole Beauchesne]
o #596 - ClutterTexture tileing logic is a little borked
o #597 - ClutterGroups not pickable
o #600 - fix ClutterLabel layout computing when no box has been set
o #604 - Color param for Label constructor should be const [Jonathon Jongsma]
o #606 - enable depth test in GL
o #608 - Control motion events frequency
o #614 - ClutterActor API inconsistencies
o #616 - ClutterTexture doesn’t respect width set from clutterscript
o #617 - ClutterEffect Improvements
o #618 - ClutterScript name/id confusion
o #619 - clutter_behavior_rotate angle properties should accept negative values
o #628 - clutter_actor_rotate_x() is a setter, not a modifier
o #629 - There is no clutter_actor_get_position()
o #634 - clutter_behaviour_path_new() documentation unclear
o #637 - add depth cueing support to the stage
o #645 - Fix crash in clutter_label_new_full() [Gwenole Beauchesne]
o #647 - Cannot hide the stage
o #648 - Hidden fullscreen stage doesn’t come back as fullscreen
o #652 - reference needed on actor being source of last motion_event
o #661 - clutter_actor_set_width() documentation is vague
o #662 - clutter_actor_set_opacity() documentation doesn’t describe values
o #665 - ClutterBehaviourEllipse tilts are broken
o #670 - Fix clutter_container_lower_child() [Gwenole Beauchesne]
o #673 - ClutterActor “captured-events” signal documentation wrong
o #674 - ClutterActor::get_depth() and set_depth() vfuncs not used [Murray Cumming]
o #675 - update subregions of cluttertextures
o #678 - ClutterLabel size allocation still bogus
Thanks to all the contributors:
Murray Cumming, for the documentation review and the tutorial Gwenole Beauchesne Neil Roberts Tommi Komulainen, for the OSX backend
Have fun with Clutter!

January 3rd, 2008 at 12:14 am
Excellent toolkit. Can someone please explain why its called Clutter? It just seems to me that nothing but negative connotations come with a name like that. s/Clutter/Cluster/
January 3rd, 2008 at 3:46 am
How is the Windows and OS X support progressing?
It was mentioned in the previous post that it was “likely the next major release of clutter will support both windows and OSX”, so I’m guessing (/hoping) it’s not too far off..?
- Ben
January 3rd, 2008 at 4:38 am
congratulations!
January 3rd, 2008 at 11:08 am
@kevin: we like the name “clutter”, it implies more free form development than a full fledged toolkit
@dbr: this is a developer snapshot, so it’s not yet “the next major release”. the osx backend is marked as experimental and it should be used if you plan on helping supporting it (via testing or via patches, both are very much welcome). the sdl backend compiles on win32 under visual studio 2005 (for which we provide project files) and mingw; it seems to work, but the sdl backend has known limitations, so it’s marked experimental as well.
@bhpan: thanks!