• Cairo ≥ @CAIRO_REQ_VERSION@
• PangoCairo ≥ @PANGO_REQ_VERSION@
-On X11, Clutter depends on the following extensions
+When building the X11 backend, Clutter depends on the following extensions:
• XComposite ≥ @XCOMPOSITE_REQ_VERSION@
• XDamage
• XInput (1.x or 2.x)
• XKB
-When running the OpenGL flavor, Clutter requires at least version 1.3
-or 1.2 with the multitexturing extension. However to build Clutter
-you will need the latest GL headers which can be obtained from:
+When building the Wayland backend, Clutter also depends on:
- http://www.khronos.org
+ • wayland-client
+ • xkbcommon
+
+When building the GDK backend, Clutter also depends on:
+
+ • gdk-3.0 > @GDK_REQ_VERSION@
+
+When building the CEx100 backend, Clutter also depends on:
+
+ • libgdl
If you are building the API reference you will also need:
New releases of Clutter are available at:
http://source.clutter-project.org/sources/clutter/
+ http://download.gnome.org/sources/clutter/
The Clutter blog is available at:
Build Clutter with profiling instrumentation. Requires the GNU
C Compiler and the UProf library.
- --enable-conform=[yes/no]
- Build the Clutter conformance test suite.
+ --disable-tests
+ Disable building the Clutter tests suite.
+
+ --disable-examples
+ Disable building the Clutter API reference examples.
+
+ --enable-deprecated=[yes/no]
+ Whether deprecated symbols should be available when compiling Clutter.
--disable-Bsymbolic
Disable linking with -Bsymbolic.
- --with-flavour
- Select the Clutter backend: (default=glx)
+ --enable-x11-backend=[yes/no/check]
+ Enable the X11 backend. (default=check)
- glx:
- Fully featured GLX backend.
+ --enable-win32-backend=[yes/no/check]
+ Enable the native Microsoft Windows backend. (default=check)
- opengl-egl-xlib:
- EGL/Open GL backend for X11.
+ --enable-quartz-backend=[yes/no/check]
+ Enable the native Quartz backend. (default=check)
- wayland:
- EGL/Open GL backend for Wayland. (EXPERIMENTAL)
+ --enable-gdk-backend=[yes/no/check]
+ Enable the GDK backend. (default=check)
- eglx:
- EGL/Open GL|ES backend for X11.
+ --enable-wayland-backend=[yes/no]
+ Enable the Wayland client backend. (default=no) [EXPERIMENTAL]
- eglnative:
- EGL/Open GL|ES backend on 'native windowing system' - i.e
- raw framebuffer. Expects the EGL implementation to provide
- a createNativeWindow() call.
+ --enable-cex100-backend=[yes/no]
+ Enable the CEx100 platform backend. (default=no) [EXPERIMENTAL]
- cex100:
- EGL/Open GL|ES backend on Intel CE3100 and CE4100 platforms.
- Requires libgdl.
+ --enable-egl-backend=[yes/no]
+ Enable the EGL framebuffer backend. (default=no)
- osx:
- OS X backend. (EXPERIMENTAL)
+ --enable-tslib-input=[yes/no]
+ Enable the TSLib input backend. (default=no) [EXPERIMENTAL]
- win32:
- Microsoft Windows(tm) WGL backend.
+ --enable-evdev-input=[yes/no]
+ Enable the evdev input backend. (default=no) [EXPERIMENTAL]
See also the INSTALL file generated by autotools for further information.
• what system you're running Clutter on;
• which version of Clutter you are using;
- • which version of GLib and OpenGL (or OpenGL ES) you are using;
+ • which version of GLib, Cogl, and OpenGL (or OpenGL ES) you are using;
• which video card and which drivers you are using, including output of
glxinfo and xdpyinfo (if applicable);
• how to reproduce the bug.
http://git.fishsoup.net/cgit/git-bz/
+Patches submitted against Clutter have to pass the conformance test suite, or,
+if possible, add new unit tests for the conformance test suite in case of new
+features. Ensure you run the conformance test suite every for every patch you
+wish to submit, by using:
+
+ cd tests/conform && make test
+
+and verifying that the test suite passes.
+
RELEASE NOTES
-------------------------------------------------------------------------------
wanting to port to newer releases (see NEWS for general information on new
features).
+Release Notes for Clutter 1.12
+-------------------------------------------------------------------------------
+
+• ClutterBinLayout no longer requests or allocates size for children that are
+ not visible, which is how the other layout managers work.
+
+• The expansion and alignment layout properties in all the layout managers
+ that provide them have been deprecated in favour of the equivalent ones
+ on ClutterActor; the ClutterLayoutManager implementations provided by
+ Clutter have been updated to honour the ClutterActor:x-expand,
+ ClutterActor:y-expand, ClutterActor:x-align, and ClutterActor:y-align
+ properties, if set.
+
+• Setting the ClutterActor:fixed-position-set to FALSE will reset any
+ currently set fixed position to (0, 0).
+
+Release Notes for Clutter 1.10
+-------------------------------------------------------------------------------
+
+• The ClutterActor::paint, ClutterActor::queue-redraw, and
+ ClutterActor::queue-relayout signals are now annotated as not allowing
+ signal emission hooks; this enables some optimization inside GLib, and
+ given the amount of emissions these three signals have, we want to get
+ through all the fast paths we can.
+
+• The ClutterActorBox parameter of the ClutterActor::allocation-changed
+ signal is now marked as G_SIGNAL_TYPE_STATIC_SCOPE.
+
+• The clutter-stage-window.h header is not installed any more; this header
+ was never meant to be public in the first place, and nothing could have
+ been implementing the ClutterStageWindow interface and use it with Clutter.
+
+• ClutterActor will call its unmap() implementation when it is removed from
+ its parent. This may happen after the ClutterActor::destroy signal has been
+ emitted, i.e. during its dispose(). Prior to 1.10, calling the
+ clutter_actor_destroy() function would unmap the actor first, and then
+ emit the destroy signal. This means that extra care should be used when
+ overriding the map() and unmap() virtual functions, to avoid dereferencing
+ NULL pointers. It is also worthy of note that since Clutter 1.8, overriding
+ map() or unmap() is not required any more for subclasses of ClutterActor
+ that have children, as ClutterActor will automatically do the right thing
+ inside its own implementation, and map or unmap its children when needed.
+
+• ClutterBox and ClutterGroup have been deprecated. ClutterActor should be
+ used directly, instead. Since ClutterStage inherits from ClutterGroup, the
+ instance and class structures are still available, but subclassing Group
+ is strongly disencouraged.
+
+• ClutterContainer provides default implementations for add(), remove(),
+ foreach(), raise(), lower(), and sort_depth_order(); this means that
+ overriding these virtual functions is now deprecated, and developers
+ should only implement ClutterContainer for classes providing child
+ properties.
+
+• ClutterActor is not an abstract type any more, and can be instantiated
+ either through clutter_actor_new() or through g_object_new().
+
+• ClutterActor now implements ClutterContainer, and takes over the entire API
+ for modifying the scene graph; this means that every actor can have children
+ and it's not necessary any more to implement the ClutterContainer interface.
+ ClutterActor provides new API to replace clutter_actor_set_parent() and
+ clutter_actor_unparent(), as well as a default implementation of every
+ Container virtual function. Existing actors overriding ClutterContainer and
+ providing an alternate implementation will continue to work, even though it
+ is strongly encouraged to port to the new API.
+
+• The ClutterActor::destroy signal is going to be emitted at the beginning
+ of the dispose sequence of a ClutterActor, instead of the end. This allows
+ to access the state of the actor being destroyed, instead of just being
+ able to use its pointer. This may expose bugs in code that does not check
+ for NULL actor pointers.
+
+• The long since broken depth cueing support in ClutterStage has been
+ deprecated; the fixed pipeline fog API has been pretty much useless
+ since the switch to colors and textures with premultiplied alpha
+ channels. Setting ClutterStage:use-fog to TRUE has no visible results,
+ and querying the :use-fog and :fog properties will always yield the
+ default values.
+
+• ClutterDeformEffect switched from using CoglVertexBuffer to using the
+ CoglPrimitive API internally, to improve performance and use non-deprecated
+ Cogl API. CoglPrimitive converts COGL_WRAP_MODE_AUTOMATIC to
+ COGL_WRAP_MODE_CLAMP_TO_EDGE, unlike CoglVertexBuffer which converts it to
+ COGL_WRAP_MODE_REPEAT. This prevents artifacts when sampling texture
+ coordinates outside the [ 0, 1 ] range. This change may cause the back
+ texture to not be painted if its coordinates go outside the allowed range,
+ for instance when using a custom transformation matrix on the back material
+ used by the ClutterDeformEffect.
+
+• The "default stage" has been deprecated; since the 1.0 release, the default
+ stage creation was deferred to the call to clutter_stage_get_default(), and
+ the preferred way for getting a ClutterStage was calling clutter_stage_new()
+ instead. On platforms that do not support multiple stages, attempting to
+ create more than one stage will lead to an error, and Clutter will abort.
+
+• Clutter can support multiple backends in the same shared library. Only one
+ windowing or input backend can be used at run time. As a result of this
+ change, the shared library name used by Clutter has changed from:
+
+ libclutter-<flavour>-<API version>.so
+
+ to:
+
+ libclutter-<API version>.so
+
+ The pkg-config file has been updated accordingly. Until the next major API
+ break, Clutter will ship compatibility links for all the previous "flavours"
+ that were available in versions < 1.10; this allows applications dynamically
+ linking against Clutter, or using dlopen(), to keep working. For libraries
+ and applications dynamically linking against Clutter, though, it is still
+ recommended to recompile to make sure that the most recent version is being
+ used. Language bindings using GObject Introspection will automatically use
+ the new shared library without requiring any change.
+
+• The windowing system backend for the CE3100 and CE4100 platforms using the
+ libgdl library is now implemented as a separate backend instance, instead
+ of being a sub-flavour of the EGL native framebuffer backend. This change
+ introduces a new header file, under $includedir/clutter-1.0/clutter/cex100,
+ which should be included to access the CEx100-specific API. The API and
+ ABI of the platform API has not been changed, though it should still be
+ considered experimental.
+
+• As of 1.10 it is not necessary any more to call clutter_threads_init() to
+ initialize threading support in Clutter; after the changes in GLib 2.32,
+ threading support in Clutter is always enabled. The rules on how to use
+ Clutter from multiple threads haven't changed.
+
+• Deprecated API is now marked using the CLUTTER_DEPRECATED and the
+ CLUTTER_DEPRECATED_FOR annotations; these two annotations will result in
+ compiler warnings when attempting to use the deprecated API. It is possible
+ to disable deprecation warnings for Clutter by defining the
+ CLUTTER_DISABLE_DEPRECATION_WARNINGS symbol when compiling. The previous
+ deprecation symbol, CLUTTER_DISABLE_DEPRECATED, is only used for macros.
+
+• Deprecated functionality has been moved to separate header files, installed
+ under the $includedir/clutter-1.0/clutter/deprecated directory. These files
+ are still included by default by clutter/clutter.h.
+
+Release Notes for Clutter 1.8
+-------------------------------------------------------------------------------
+
+• Cogl has been split out of tree. Clutter depends on Cogl, so users should
+ not notice anything. Developers using pkg-config will gain an extra Cogl
+ dependency.
+
+• The clutter_actor_get_gid() and clutter_get_actor_by_gid() functions have
+ been deprecated. They should not have been public in the first place.
+
+• ClutterShader and its relative API have been deprecated. ClutterShaderEffect
+ and the effect API is the proper way to use GLSL shaders with ClutterActors.
+ It is possible to instantiate a ClutterShaderEffect directly.
+
+• ClutterText's paint volume has been implemented using the ink rectangle of
+ the PangoLayout used to paint, to allow culling to work properly even in
+ the case of glyphs spilling outside the logical rectangle.
+
+• Non fully opaque children of a non fully opaque actor will be composited
+ in an offscreen framebuffer object to preserve the correct overall opacity.
+ This changes the way non fully opaque actors are drawn, and might cause
+ some code relying on the old, unspecified behaviour to produce different
+ results.
+
+• ClutterBoxLayout layout algorithm has been changed to map the more mature
+ and more stable GtkBox one.
+
+• The ClutterText:editable property was incorrectly defined in the GParamSpec
+ as being TRUE by default, but it was initialized to FALSE. To avoid breaking
+ existing code, the default value inside the GParamSpec (and inside the
+ documentation) has been changed to FALSE as well.
+
+• The preferred way to draw inside a ClutterCairoTexture is connecting to
+ its ::draw signal, and calling the invalidate() method. The old pattern
+ of creating the Cairo context using the create() method is deprecated but
+ still working as intended.
+
+• ClutterScore has been deprecated; the preferred way to chain up multiple
+ animations is to use the ClutterAnimator or ClutterState classes.
+
Release Notes for Clutter 1.6
-------------------------------------------------------------------------------