keysyms-update: Add deprecation guards to the deprecated header
[profile/ivi/clutter.git] / README.in
index 3a10eae..4d0a34c 100644 (file)
--- a/README.in
+++ b/README.in
@@ -16,7 +16,7 @@ Clutter currently requires:
   • 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
@@ -25,6 +25,19 @@ On X11, Clutter depends on the following extensions
   • XInput (1.x or 2.x)
   • XKB
 
+When building the Wayland backend, Clutter also depends on:
+
+  • 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:
 
   • GTK-Doc ≥ @GTK_DOC_REQ_VERSION@
@@ -109,7 +122,7 @@ See also the wiki page:
 
 Clutter has additional command line options for the configure script:
 
- --enable-debug=[no/minimum/yes/error]
+ --enable-debug=[no/minimum/yes]
        Controls Clutter debugging level:
 
        yes:
@@ -148,8 +161,11 @@ Clutter has additional command line options for the configure script:
         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.
@@ -170,19 +186,19 @@ Clutter has additional command line options for the configure script:
         Enable the GDK backend. (default=check)
 
  --enable-wayland-backend=[yes/no]
-        Enable the Wayland client backend. (default=no)
+        Enable the Wayland client backend. (default=no) [EXPERIMENTAL]
+
+ --enable-cex100-backend=[yes/no]
+        Enable the CEx100 platform backend. (default=no) [EXPERIMENTAL]
 
  --enable-egl-backend=[yes/no]
         Enable the EGL framebuffer backend. (default=no)
 
- --with-tslib=[yes/no]
-        Use TSLib for the input events. (default=yes)
+ --enable-tslib-input=[yes/no]
+        Enable the TSLib input backend. (default=no) [EXPERIMENTAL]
 
- --with-evdev=[yes/no]
-        Use evdev for the input events. (default=yes)
-
- --with-gdl=[yes/no]
-        Use libgdl for CEx100 platforms. (default=no)
+ --enable-evdev-input=[yes/no]
+        Enable the evdev input backend. (default=no) [EXPERIMENTAL]
 
 See also the INSTALL file generated by autotools for further information.
 
@@ -227,7 +243,7 @@ In the report you should include:
 
   • 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.
@@ -266,6 +282,15 @@ Which is available here:
 
   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
 -------------------------------------------------------------------------------
 
@@ -273,6 +298,144 @@ Relevant information for developers with existing Clutter applications
 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
 -------------------------------------------------------------------------------