The threads_enter() and threads_leave() functions are no-ops because Clutter
is not thread-aware nor thread-safe. Leaving them in is a source of confusion
so we just remove them.
Update the NEWS and the README files with the release notes.
* clutter/clutter-behaviour-depth.c:
Modify to work like all other behvaiours in not forcing
increasing order in behaviour 'limits'. (#436)
Rename limit min/max props to start/end.
* tests/test-depth.c:
Simplify test-case to work with above change and
without multiple ramps
* clutter/clutter-behaviour-rotate.c:
Handle CW rotation when end > start and similar for CCW just
like ellipse behaviour.
* clutter/clutter-behaviour-depth.c: Clarify that what drives
the movement along the Z axis is the ClutterAlpha object (we
don't have the luxury of a rollover like the opacity does);
so, if you want to go from 0 to -100 you have to use a
decreasing function, just as well if you want to go from 100
to 0. Using a min-depth of 100 and a max-depth of 0 and an
increasing function is undefined behaviour.
* tests/Makefile.am:
* tests/test-depth.c: Add a test case for the depth behaviour.
* clutter/clutter-behaviour-ellipse.c:
(clutter_behaviour_ellipse_get_angle_tilt): Avoid recursion
by fixing a typo.
(clutter_behaviour_ellipse_get_angle_begin),
(clutter_behaviour_ellipse_get_angle_end): Correct the angles
here too.
2007-08-03 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/eglnative/clutter-backend-egl.c:
* clutter/eglx/clutter-backend-egl.c:
* clutter/sdl/clutter-backend-sdl.c: Set the default resolution
as 96.0 dpi for every backend (we already were under this
assumption anyway, and this makes it easier to change this
setting per-backend).
* clutter/pango/pangoclutter-fontmap.c:
* clutter/pango/pangoclutter.h: Allow setting the resolution
for the PangoClutterFontMap object and provide the implementation
for the PangoFcFontMap::get_resolution() virtual function. This
allows to set the resolution of the PangoContext when retrieving
it.
* clutter/clutter-label.c (clutter_label_init): Set the
resolution of the font map with the one the backend gives us.
* clutter/clutter-entry.c (clutter_entry_init): Ditto.
* clutter/clutter-stage.[ch]: Fix clutter_stage_set_user_resizable()
name, and add a getter for the property.
* clutter/glx/clutter-stage-glx.c: Use the accessor, not
g_object_get() to retrieve the value of the resizable property.
* clutter/clutter-backend.[ch]: Add clutter_backend_set_resolution()
and clutter_backend_get_resolution(); backends should use the former
to set the resolution of the display when initialising, while actors
should use the latter when sizing themselves depending on the
resolution or the font size.
* clutter/glx/clutter-backend-glx.c: Set the resolution as 96 dpi
as a default and query the X server when opening the display.
* clutter/clutter-entry.c: Drop the hardcoded dpi value and use
clutter_backend_get_resolution() to compute the default size.
* clutter/clutter-types.h: Document ClutterGravity enumeration
and remove the only incomplete symbol of the api reference. Now
we are up to 79% documented symbols.
* clutter/clutter-media.c: Document ClutterMedia signals;
replace the implementation of clutter_media_set_filename() with
something a wee bit more robust (and portable) than a sprintf().
* clutter/clutter-actor.[ch]: Use GInitiallyUnowned
as the parent structure in the ClutterActor structure
definition; somehow, this has escaped everyone attention
in one year and a half. Luckily, GInitiallyUnowned is
as big as GObject.
(clutter_actor_get_abs_position_units),
(clutter_actor_get_abs_position): Check parameters.
* clutter/clutter-texture.h: Unmangle the flags enum
type declaration, so that dumb parsers like h2defs.py
are not fooled.
* clutter/clutter-behaviour-ellipse.[ch]:
* clutter/clutter-effect.c: Fix some documentation
issues and make gtk-doc happy.
* clutter/clutter-feature.h:
Add new stage feature flags and document.
* clutter/eglnative/clutter-backend-egl.c:
* clutter/eglx/clutter-backend-egl.c:
* clutter/sdl/clutter-backend-sdl.c:
Set new feature flags.
* clutter/glx/clutter-backend-glx.c:
* clutter/glx/clutter-stage-glx.c:
* clutter/clutter-stage.c:
* clutter/clutter-stage.h:
Add a 'user_resizeable' setting to the backend and implement
for glx backend.
* clutter/clutter-entry.c: (offset_to_bytes),
(clutter_entry_ensure_cursor_position),
(clutter_entry_new_with_text), (clutter_entry_new),
(clutter_entry_insert_unichar), (clutter_entry_delete_chars):
Fixed utf8 support so it actually works now, for both inserting and deleting
chars.
Fixed positioning of cursor for utf8 chars. Both GString and Pnago need
bytes (not documented!) for string manipulation, so making sure all values
were bytes and not char positions fixed the issue.
Set a default size of 50x50 for the entry, otherwise no chars can be seen
if the size is not set after creation (which confuses the developer).
* clutter/clutter-behaviour.h:
* clutter/clutter-behaviour.c: Rename clutter_behaviour_clear()
to clutter_behaviour_remove_all() to avoid method clashes in
bindings.
* clutter/clutter-behaviour-bspline.c: Kill off some deep pointer
indirections; use CLUTTER_NOTE() instead of ifdeffed out g_debug();
add checks in every public entry point; move some initialisations
of private data structures out of the constructor and into the
init function, where they belong.
* clutter/clutter-behaviour-rotate.c:
* clutter/clutter-behaviour-rotate.h:
Split 'center' prop into 3 seperate props for each axis.
Use clutter_behaviour_actors_foreach() rather than
clutter_behaviour_get_actors() to avoid copying list.
Call fixed point rotation funcs internally.
* clutter/clutter-effect.c:
* clutter/clutter-effect.h:
Add new simple rotation based effect funcs.
* clutter/eglx/clutter-backend-egl.c:
* clutter/eglnative/clutter-backend-egl.c:
* clutter/sdl/clutter-backend-sdl.c: Destroy the stage in every
backend.
* clutter/clutter-texture.[ch]: Add a ClutterTextureError
to be returned by the loader functions; use the GObject API
to allocate the private data structure instead of managing it
ourselves; add documentation.
* clutter/clutter-media.c: (clutter_media_base_init):
Remove #if 0! signal - assume causing issues with binding generation.
(#407)
* clutter/cogl/gl/cogl.c:
Check GL_TEXTURE_RECTANGLE_ARB and GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB
are defined in gl.h (#404)
* clutter/clutter-texture.c: (texture_render_to_gl_quad),
(clutter_texture_paint):
Dont be over aggressive in throwing criticals for unrealized
textures. Doesn't make sense for sub classes. (#403)
Two small fixes for correctly debugging the deinitialisation
phase of the backend:
* clutter/glx/clutter-backend-glx.c: Remove the event source
after we unref the main stage.
* clutter/glx/clutter-stage-glx.c: Add a mark at the end of the
unrealize call (the perl bindings seem to crash before we reach
this point).
* clutter/clutter-behaviour-ellipse.c: Remove pointer indirections;
add sanity checks on the public entry points; make all the public
properties floating point (where needed) andconvert them to fixed
point internally. (Partial fix for #389)
* clutter/clutter-behaviour.[ch]: Rename ClutterBehaviour::apply
and ClutterBehaviour::remove to ClutterBehaviour::applied and
ClutterBehaviour::removed respectively, and emit them when the
behaviour has been applied (or does no longer apply) to an actor.
(clutter_behaviour_dispose), (clutter_behaviour_finalize),
(clutter_behaviour_class_init): Move the actor removal to the
::dispose virtual function, and remove the ::finalize one;
document the missing properties and signals.
(clutter_behaviour_clear): Add function to clear a behaviour:
every actor will be unreffed and the ClutterBehaviour::removed
signal will be emitted.
* clutter/clutter-event.c:
Correct clutter_event_get_state () return type. Fixes#398
* clutter/glx/clutter-stage-glx.c:
Disable use XFixes cursor visibility funcs. Appears to have issues
on feisty X Server at least. Fallback should work generally better.
Fix non offscreen clutter_stage_snapshot to also rotate read pixel
data to correct orientation.
* TODO:
Updates.
* clutter/clutter-stage.c:
* clutter/glx/clutter-stage-glx.c:
Fix cursor visibility property.
Force a repaint before mapping to attempt to avoid flicker.
* clutter/Makefile.am:
* clutter/eglnative/Makefile.am:
* clutter/eglnative/clutter-backend-egl.c:
* clutter/eglnative/clutter-backend-egl.h:
* clutter/eglnative/clutter-egl.h:
* clutter/eglnative/clutter-event-egl.c:
* clutter/eglnative/clutter-stage-egl.c:
* clutter/eglnative/clutter-stage-egl.h:
* clutter/eglx/Makefile.am:
* clutter/eglx/clutter-backend-egl.c:
* clutter/eglx/clutter-egl.h:
* clutter/eglx/clutter-event-egl.c:
* clutter/eglx/clutter-stage-egl.c:
* configure.ac:
Add a new 'native' EGL backend for non X based EGL's
(i.e on framebuffer).
Rename old backend to 'eglx' and namespace public funcs with this.
* clutter/pango/pangoclutter-private.h:
Add extra checks for expected defines.
* clutter/clutter-box.c: (clutter_box_pick):
Call clutter_box_paint rather than actor paint method avoiding
infinte loop (Fixes test-boxes crasher).
* clutter/glx/clutter-stage-glx.c: (clutter_stage_glx_unrealize):
Trap the X calls to avoid potential X errors.
* clutter/clutter-main.c (clutter_redraw): Move the stage
paint init call from the main redraw function...
* clutter/clutter-stage.c (clutter_stage_paint): ... to the
ClutterActor::paint() overridden method in ClutterStage.
* clutter/clutter.h:
* clutter/Makefile.am: ClutterBackend is marked as public API,
so install the clutter-backend.h header and include it when
including clutter.h.
* clutter/clutter-entry.[ch]: Various fixes to ClutterEntry:
fix code style issues; add documentation for the various
properties; add ClutterEntry:entry-padding property, for controlling
the text padding (until we have style properties separated from
the object properties); notify property changes; free resources
in the ::finalize method; rename clutter_entry_add() to
clutter_entry_insert_unichar(), and clutter_entry_remove() to
clutter_entry_delete_chars() - for bindings and for matching the
insert_text() and delete_text() existing methods; add a getter
method for the max-length property.
* clutter/clutter-entry.c: (clutter_entry_handle_key_event),
(clutter_entry_add), (clutter_entry_remove):
Check if unichar == 0, and if so, return, as it will cause a delete in
the GString.
* clutter/clutter-texture.c: (texture_upload_data):
Fix a SEGV for GL ES textures.
* clutter/cogl/gles/cogl.c: (cogl_setup_viewport):
Tweak default z_camera for 60 degrees like GL.
* clutter/egl/clutter-backend-egl.c::
* clutter/egl/clutter-stage-egl.c:
Fix edpy usage (thanks to Kaj Gronholm).
* NEWS:
* README.in:
* TODO:
Update for 0.3 release.
* clutter/clutter-actor.c:
Minor doc fixups
* clutter/clutter-texture.c:
Various minor additions for handling non RGBA data.
Fix a typo breaking clutter_texture_get_pixbuf() on tiled textures.
* tests/test-actors.c:
Disable scaling to avoid drifting (temporary till API is fixed)
* TODO:
Sync up a little.
* clutter/clutter-main.c:
Set a default window title based on g_prgname().
* clutter/clutter-stage.c:
* clutter/clutter-stage.h:
* clutter/egl/clutter-stage-egl.c:
* clutter/glx/clutter-stage-glx.c:
* clutter/sdl/clutter-stage-sdl.c:
Alter draw_to_pixbuf to return a pixbuf
* configure.ac:
Only full in gdk-pixbuf-xlib as a GLX backend dep.
* tests/test-entry.c:
Fix a couple of warnings.
* clutter/sdl/clutter-event-sdl.c:
Seemingly fix SDL Event source.
Add some very basic SDL keysym translation.
(Thanks to Thomas Van Machelen for initial translation code)
* tests/test-events.c:
Dump some info on keysyms pressed.
* clutter/clutter-actor.h:
* clutter/clutter-stage.h: Add 32 padding slots; when we
reach 1.0 it'll be a long road until the following ABI
break.
* tests/test-behave.c: Don't forget to include headers.
* clutter/clutter-container.h:
* clutter/clutter-layout.h: Interfaces are not checked
at compile-time, so there's not need to add padding to
avoid ABI breaks.
* configure.ac: If the programs required to build the manual
are not found and --enable-manual was passed, then just print
a warning and disable the manual build instead of aborting the
configure.
* doc/manual/Makefile.am: Use the full path gathered by the
configure script when invoking jw and xmlto.
* clutter/clutter-actor.c:
Fix typo in x rotation transform (Thanks to Johan Billen #138)
* configure.ac:
* doc/manual/Makefile.am:
Fix manual build and required program check.
* tests/Makefile.am:
Another typo fix.
* clutter/clutter-box.[ch]: Base class for layout containers.
* clutter/clutter-hbox.[ch]: Horizontal box actor.
* clutter/clutter-vbox.[ch]: Vertical box actor.
* clutter/clutter.h:
* clutter/Makefile.am: Build glue
* tests/Makefile.am:
* tests/test-boxes.c: Test suite for ClutterBox API and
implementations.
* clutter/cogl/gl/cogl.c: (cogl_check_extension):
Actually populate this func and remove the static alternate
named one. Means GLX actually checks for available extensions.
Other minor tidy ups.
* clutter/glx/clutter-backend-glx.c:
* clutter/glx/clutter-backend-glx.h:
Add support for GLX_SGI_swap_control to do vblanking prefering
over glXGetVideoSyncSGI. Should fix issues on Intel chips with
very slow frame rates due to vblank problems.
Thanks to Michel Danzer for tips, see;
http://bugs.freedesktop.org/show_bug.cgi?id=10542
* test/test-actors.c:
Change FPS to 60.
* clutter/clutter-timeout-pool.c: Make ClutterTimeoutPool
more thread-safe, using a static lock.
(clutter_timeout_pool_dispatch), (clutter_timeout_pool_remove): Fix
a race condition-turned-in-memory corruption bug, triggered by
removing a timeout from the pool while still spinning the pool
source.
* clutter/clutter-container.[ch]: Add a generic actor container
interface, for actors to implement without subclassing ClutterGroup.
* clutter/clutter-group.[ch]: Make ClutterGroup implement the
ClutterContainer interface, and deprecate the colliding methods.
* clutter/clutter-layout.[ch]: Add extended layout interface.
Actors and containers requiring or honouring complex layout
management should implement this interface and provide at least
one of the available layout types: width for height, height for
width, natural size, iterative size request.
* clutter/clutter-label.c: A ClutterLabel requires height for
width layout management, so it implements the ClutterLayout
interface.
* clutter/Makefile.am: Add new files to the build.
* tests/*.c:
* examples/*.c: Update tests and examples code to use the
new ClutterContainer API instead of ClutterGroup.
* clutter/clutter-entry.c: (clutter_entry_set_property),
(clutter_entry_get_property), (clutter_entry_class_init),
(clutter_entry_init), (clutter_entry_set_text),
(clutter_entry_set_max_length):
* clutter/clutter-entry.h:
* examples/test-entry.c: (main):
Added a max-length property whihc limits the length of the text in the
entry.
boundries.
Text will move within the clip region to keep the cursor always
visible.
Added some padding to the left and right to make sure cursor is
always show.
* clutter/clutter-behaviour-ellipse.c:
Remove uneeded knot signal
* clutter/clutter-behaviour-path.c:
Fix so knot signal is emitted only when a knot is reached.
* clutter/clutter-effect.c:
* clutter/clutter-effect.h:
Add a scale effect.
* configure.ac:
* doc/manual/Makefile.am:
* doc/manual/clutter-manual.xml.in:
* doc/manual/manual.xsl:
* doc/manual/style.css:
Add various bits for application developers manual.
* clutter/clutter-stage.c: (clutter_stage_get_actor_at_pos):
Fix for GL/ES. Barring texture reads this means all clutter
functionality now works on GL/ES! (no doubt with a few yet to
be discovered bugs)
* clutter/clutter-backend.c:
* clutter/clutter-backend.h:
* clutter/glx/clutter-stage-glx.c:
* clutter/glx/clutter-backend-glx.c:
Fix up rendering pipeline removing clutter_backend_XXX_stage_paint
and adding clutter_backend_XXX_redraw instead. Duplicates less
code in backends, avoids clutter_actor_paint() getting called
before stage is set up (viewport wise) and unbreaks things like
picking.
* clutter/clutter-actor.c:
* clutter/clutter-actor.h:
* clutter/clutter-main.c:
* clutter/clutter-private.h:
* clutter/clutter-stage.c: (clutter_stage_get_actor_at_pos):
Redo picking functionality a different way (via color indexing)
as to provide more flexibility, possibly speed and more likely
work with GL/ES (doesn't currently however - not sure why).
* clutter/clutter-group.c:
Add groups own 'pick' method.
* clutter/cogl/cogl.h:
* clutter/cogl/gl/cogl.c:
* clutter/cogl/gles/cogl.c:
Move clipping funtionality into cogl.
* clutter/cogl/gles/cogl-defines.h:
Hack around missing BGR format in GL/ES.
* clutter/egl/clutter-backend-egl.c:
* clutter/egl/clutter-backend-egl.h:
* clutter/egl/clutter-stage-egl.c:
* clutter/sdl/clutter-backend-sdl.c:
* clutter/sdl/clutter-backend-sdl.h:
* clutter/sdl/clutter-event-sdl.c:
* clutter/sdl/clutter-stage-sdl.c:
Update backends to newer API.
Add basic mouse event translation to SDL.
* clutter/clutter-color.c: (clutter_color_parse):
Handle #rrggbbaa color setting strings (i.e with alpha).
Set alpha to 0xff if it is not specified.
* clutter/clutter-stage.c: (clutter_stage_get_actor_at_pos)
Increase select buffer.
* examples/super-oh.c:
Fix up use of clutter_group_show_all()
Add a semi-private function, called clutter_base_init(), which initialises
the basic Clutter functionalities (at the moment, just the GLib type system)
without calling in the backend-specific code. This function is only useful
for gtk-doc, to introspect the library when generating documentation for
signals, properties and class hierarchy.
Also, change the documentation build system to use clutter_base_init() when
launching the scanner program.
* clutter/clutter-backend.c:
* clutter/clutter-backend.h:
* clutter/clutter-event.c:
* clutter/clutter-main.c:
* clutter/clutter-private.h:
* clutter/glx/clutter-backend-glx.c:
* clutter/glx/clutter-backend-glx.h:
* clutter/glx/clutter-event-glx.c:
Rejig backend event code as to simplify a little.
NOTE: This breaks non glx backends.
* tests/Makefile.am:
* tests/test-events.c:
Add a very simple event test.
* tests/test-textures.c: (main):
Add some more sizes to the test.
* clutter/clutter-texture.c:
Fix typos with new cogl using texture code. Fixes tiled textures.
Add a check for max npots size.
* configure.ac:
* Makefile.am:
* tests/Makefile.am:
* tests/test-textures.c:
Add a simple texture test.
* clutter/Makefile.am:
* clutter/clutter-stage.c:
* clutter/sdl/Makefile.am:
* clutter/sdl/clutter-backend-sdl.c:
* clutter/sdl/clutter-backend-sdl.h:
* clutter/sdl/clutter-event-sdl.c:
* clutter/sdl/clutter-sdl.h:
* clutter/sdl/clutter-stage-sdl.c:
* clutter/sdl/clutter-stage-sdl.h:
* configure.ac:
Add a basic SDL based backend. Lacks real input event handling
(translation) as yet.
Also allows for clutter to be built against dgles.
* clutter/clutter-actor.c:
* clutter/cogl/gles/cogl.c:
Fix rotation + other fixed point cleanups.
* clutter/clutter-texture.h:
Sketch out an updated API.
* clutter/clutter-rectangle.c:
Comment out color match check for now as appears to be causing
borders to always get pained.
* clutter/clutter-texture.h:
Add some format defines (unused as yet)
* clutter/cogl/gles/cogl.c:
* clutter/egl/clutter-stage-egl.c:
* configure.ac:
Various OpenGL ES backend related fixes and tweaks.
* clutter/Makefile.am:
* clutter/clutter-debug.h:
* clutter/clutter-fixed.h:
* clutter/clutter-main.c:
* clutter/cogl/gles/Makefile.am:
* clutter/cogl/gles/cogl-defines.h:
* clutter/cogl/gles/cogl.c:
* clutter/egl/clutter-backend-egl.c:
* clutter/egl/clutter-backend-egl.h:
* clutter/egl/clutter-stage-egl.c:
* configure.ac:
Populate most stubs for cogl GL/ES implementation.
(against vincent - see http://svn.o-hand.com/repos/misc/ogles)
Add various fixups to EGL backend.
Code builds and runs (on 16bpp) but yet displays much (is close!)
* clutter/pango/pangoclutter-render.c:
comment out some rouge glBegin/end calls.
* clutter/Makefile.am:
* clutter/clutter-actor.c:
* clutter/clutter-clone-texture.c:
* clutter/clutter-rectangle.c:
* clutter/clutter-stage.c:
* clutter/clutter-texture.c:
* clutter/cogl/cogl.h:
* clutter/cogl/gl/Makefile.am:
* clutter/cogl/gl/cogl-defines.h:
* clutter/cogl/gl/cogl.c:
* clutter/cogl/gles/Makefile.am:
* clutter/cogl/gles/cogl-defines.h:
* clutter/cogl/gles/cogl.c:
* clutter/glx/Makefile.am:
* clutter/glx/clutter-stage-glx.c:
* clutter/pango/Makefile.am:
* clutter/pango/pangoclutter-render.c:
* configure.ac:
Add initial 'cogl' implementation. 'cogl' is a simple abstration
layer over GL and GL/ES used by clutter internally. It should
eventually allow clutter applications to be run on both GL and GL/ES
with just a recompile as well as provide more debugging and potentially
profiling information for GL and GL/ES usage.
This commit contains the initial GL implementation.
Merge from clutter.git/master
* clutter/glx/clutter-event-glx.c:
* clutter/glx/clutter-stage-glx.c: Implement the _NET_WM_PING
protocol handling on the main stage window.
* clutter/clutter-stage.h:
* clutter/clutter-stage.c:
* clutter/clutter-main.c: Handle CLUTTER_DELETE events internally,
by calling clutter_main_quit(), and remove the ::delete-event
signal from ClutterStage; clean up the signal emission sequence
for the events: emit the ::event signal before emitting any signal
and the ::event-after signal after the signal has been emitted; move
the signal emission calls inside ClutterStage so we can call
g_signal_emit() instead of g_signal_emit_by_name(), thus sparing us
a lookup for each event.
* examples/test.c: Remove ::delete-event signal handling.
* clutter/cogl/Makefile.am:
* clutter/cogl/cogl.h:
* clutter/cogl/gles/Makefile.am:
* clutter/cogl/gles/cogl.c:
Begin poplulating cogl GLES code.
* configure.ac:
* clutter/egl/clutter-event-egl.c:
* clutter/egl/clutter-stage-egl.c:
* clutter/egl/clutter-stage-egl.h:
* clutter/egl/clutter-backend-egl.c:
* clutter/egl/clutter-backend-egl.h:
* clutter/egl/clutter-egl.h:
Add initial EGL/X backend work mostly ported from backend branch.
Builds but untested as yet.
* clutter/glx/clutter-stage-glx.c:
Only include XFixes Header if we have have it.
* clutter/clutter-behaviour.c: (clutter_behaviour_apply):
* clutter/clutter-behaviour.h:
Add clutter_behaviour_is_applied()
* clutter/clutter-backend.c: Clear the event queue when
disposing the backend object; remove the initialisation
of the backend structure members...
* clutter/glx/clutter-backend-glx.c: ... and keep it here
in the backends where it belongs.
* clutter/clutter-private.h:
* clutter/clutter-backend.h: Move the backend functions
into the private header.
* clutter/glx/clutter-stage-glx.c:
* clutter/glx/clutter-event-glx.c:
* clutter/clutter-main.c:
* clutter/clutter-stage.c: Update the calls to the private
backend functions.
* clutter/clutter-backend.[ch]: Add an ::init_features
vfunc to ClutterBackend.
Assorted build fixes to pass distcheck.
* clutter/glx/Makefile.am: Install the clutter-glx.h header.
* clutter/Makefile.am: Actually apply linker flags.
* configure.ac: Use a more readable CLUTTER_API_VERSION instead
of CLUTTER_MAJORMINOR; require gobject-2.0 with glib-2.0 >= 2.10,
as we are using GObject and the slice allocator from glib 2.10.
* clutter.pc.in: Add the apiversion variable.
* clutter/clutter-event.c: Pop and peek the event queue
from the tail - it's a queue, not a stack.
* clutter/clutter-private.h:
* clutter/clutter-main.c: Add a boolean signal accumulator.
* clutter/clutter-stage.[ch]: Add an event argument to
the 'delete-event' signal; rename the 'input-event' signal
to 'event'; add the static scope flag to all the stage
events.
* clutter/clutter-private.h: Remove inclusion of backend-specific
headers; update the main context object; add the declarations for
the event queue functions.
* clutter/clutter-backend.[ch]: Add the abstract ClutterBackend
object, which holds backend-specific settings, the main stage,
and the event queue. Every backend must implement a subclass of
ClutterBackend and ClutterStage.
* clutter/clutter-feature.c: Protect the GLX specific calls
behing #ifdef HAVE_CLUTTER_GLX.
* clutter/clutter-actor.c:
* clutter/clutter-group.c:
* clutter/clutter-clone-texture.c: Include GL/gl.h
* clutter/clutter-event.[ch]: Update public API and implement the
event queue private API; hold a reference on the event objects;
move out the keysym-to-unicode table; add the new event types.
* clutter/clutter-color.h: Include clutter-fixed.h
* clutter/clutter-main.c: Update API; get the main stage
from the backend object; process the event received from the
queue; lock/unlock the main mutex if we have one; move the
initialisation process sooner in the init sequence, in order to
have the backend object when we check for options; call the
backed vfuncs in the pre/post parse hooks.
* clutter/clutter-stage.c: Make ClutterStage and abstract class,
implemented by the backends.
* clutter/clutter/glx/clutter-glx.h:
* clutter/clutter/glx/clutter-backend-glx.[ch]:
* clutter/clutter/glx/clutter-event-glx.c:
* clutter/clutter/glx/clutter-stage-glx.[ch]:
* clutter/clutter/glx/Makefile.am: Add the GLX backend.
* clutter/clutter/egl/clutter-backend-egl.[ch]:
* clutter/clutter/egl/clutter-event-egl.c:
* clutter/clutter/egl/clutter-stage-egl.[ch]:
* clutter/clutter/egl/Makefile.am: Add the stub for a EGL backend.
* examples/*.c: Update for the new API.
* clutter/clutter-label.c:
Simple doc fix.
* clutter/clutter-texture.c: (clutter_texture_get_pixbuf):
Backport of fix to get_pixbuf on non alpha textures from 0_2 branch.
Allow the ClutterGroup subclasses to override the add and
remove operations.
* clutter/clutter-group.c: Move the add and remove code from
clutter_group_add() and clutter_group_remove() to the signal
class closures; make the "add" and "remove" signals as
RUN_FIRST.
* clutter/clutter-group.h: Add public functions
clutter_group_get_n_children() and clutter_group_get_nth_child().
* clutter/clutter-behaviour.h:
* clutter/clutter-behaviour.c: Fix header alignment; fix argument
name for apidoc.
* clutter/clutter-fixed.h: Remove some inline documentation to
make the header more readable.
* clutter/clutter-behaviour.c: The actors are store inside a
GSList and not in a GList, so change the list operations to
use the right API.
* clutter/clutter-feature.c: Use clutter_vblank_method() to
get the VBlank method name from the environment variable OR
the command line switch.
(clutter_feature_do_init): Move the check on the features
state here, to avoid an expensive function call, and inline
the function.
* clutter/clutter-fixed.c: Fix gtk-doc.
* clutter/clutter-main.c: Add a --clutter-vblank command line
switch controlling the VBlank method to be used: it overrides
the CLUTTER_VBLANK environment variable.
(pre_parse_hook), (clutter_init),
(clutter_init_with_args): Move thread initialisation before
type init, to avoid the warning that comes with newer GLib
versions.
* clutter/clutter-group.h:
* clutter/clutter-group.c: Mark clutter_group_show_all() and
clutter_group_hide_all() as deprecated.
* clutter/clutter-actor.c: (clutter_actor_allocate_coords):
Fix an amazingly not noticed until now typo.
Minor doc tweaks.
* clutter/clutter-behaviour-opacity.c:
(clutter_behaviour_alpha_notify):
Take into account initial opacity value when calculating from alpha.
* clutter/clutter-group.c:
Add new get_nth_child() and get_n_children() api calls.
* clutter/clutter-actor.c:
* clutter/clutter-actor.h:
Add new set_width/height API calls.
Tweak scaling by reseting matrix.
Make set_opactiy() take parent opacity into account.
Fix clipping.
* clutter/clutter-alpha.c:
Add more sine functionality.
* clutter/clutter-behaviour-opacity.c:
Dont make a copy of all applied actors but use a foreach()
* clutter/clutter-behaviour-scale.c:
Give correct limits to propertys.
Tweak gravity a little more.
Update docs.
:
* clutter/clutter-behaviour.c: (clutter_behaviour_remove):
Minor warning text change.
* clutter/clutter-feature.c: (clutter_feature_wait_for_vblank):
Minor dri ioctl tweak.
* clutter/clutter-label.c:
* clutter/clutter-label.h:
Add new label_full api call.
* clutter/clutter-label.c: Remove some gtk-isms; always take
a reference before calling g_object_notify(), as the object
might get disposed while calling the closures inside the
notify queue; notify the changes of the ellipsize property.
* clutter/clutter-color.h:
* clutter/clutter-color.c: Expose clutter_color_copy()
and clutter_color_free() for the python bindings, so that
they can manager the conversion automatically; use the
slice allocator when copying/freeing a ClutterColor.
Rework part of the show/hide machinery. Allow groups sub-classes
and composite actors to override show_all/hide_all in order to
decide which children they wish to show/hide. This means that
if an actor overrides the default show/hide virtual methods, it'll
have to chain up to the parent class show/hide. While we're at it,
provide the fully recursive clutter_actor_show_all() and
clutter_actor_hide_all() methods.
* clutter/clutter-behaviour-path.c: Add apidoc for the ClutterKnot
functions; add pathological equality case for clutter_knot_equal().
* clutter/clutter-event.h:
* clutter/clutter-feature.h:
* clutter/clutter-behaviour.c:
* clutter/clutter-behaviour-scale.c:Fix parameters name so that
gtk-doc doesn't complain.
* clutter/clutter-actor.c:
* clutter/clutter-event.c: Add apidoc
* clutter/clutter-actor.h:
* clutter/clutter-actor.c: Add a clutter_actor_show_all() and a
clutter_actor_hide_all() functions; provide a mechanism for
groups and composited actors to programmatically select what to
show/hide when clutter_actor_show_all() and clutter_actor_hide_all()
are called. If you are overriding the ClutterActor::show or
the ClutterActor::hide virtual methods you should chain up with
the parent class.
* clutter/clutter-group.c: Override show_all and hide_all and
recursively show/hide every child inside the group;
clutter_group_show_all() and clutter_group_hide_all() remain as non
recursive versions of clutter_actor_show_all() and
clutter_actor_hide_all() (maybe we should rename them in order
to avoid name clashes with the bindings).
* clutter/clutter-stage.c:
* clutter/clutter-texture.c: Chain up with parent class show
and hide vfuncs.
* clutter/clutter-clone-texture.h:
* clutter/clutter-clone-texture.c: Provide API for changing the
parent texture of a clone texture actor.
* examples/behave.c:
* examples/super-oh.c:
* examples/test.c: Use clutter_actor_show_all() instead of
clutter_group_show_all().
* clutter/clutter-behaviour.h: Add a function prototype
for the foreach function: we need something more specific
than GFunc; add clutter_behaviour_get_actors(), used to
get a list of the actors.
* clutter/clutter-behaviour.c: Add debugging notes; add
a warning for behaviour implementations missing the
alpha_notify vfunc; add api documentation
* clutter/clutter-behaviour-opacity.c:
* clutter/clutter-behaviour-path.c:
* clutter/clutter-behaviour-scale.c: Reimplement the
alpha_notify functions using the new foreach function
and, where possible, by directly iterating on the
actors: this shaves off the number of recalculations
of the property/alpha values, and the number of
functions.
* clutter/clutter-color.h:
* clutter/clutter-color.c: Add clutter_color_parse(),
which parses a string containing a color definition as
understood by XParseColor() (or pango_color_parse()).
Avoid clutter segfaulting when used without invoking
clutter_init(). This is needed when using api documentation
tools and every other tool relying on the GObject
introspection API (esp. on a headless box). see the
note in clutter/clutter-feature.c:clutter_feature_init
for a full explanation.
* clutter/clutter-feature.c: Call clutter_feature_init()
when needed by one of the accessors of the features
structure.
* clutter/clutter-main.c:
* clutter/clutter-private.h: Remove clutter_feature_init()
public declaration: the features support check is done the
first time a feature is needed.
* clutter/clutter-main.c: Do not ever access the clutter
main context pointer directly; instead, obtain a pointer
to it via clutter_context_get_default(), which will always
return something valid.
* clutter/clutter-private.h: Add our own READABLE,
WRITABLE and READWRITE paramspec flags, declaring the
string components of the properties GParamSpec as static;
this should shave off some bytes in the memory footprint
and avoid relocations.
* clutter/clutter-actor.c:
* clutter/clutter-behaviour.c:
* clutter/clutter-behaviour-opacity.c:
* clutter/clutter-behaviour-path.c:
* clutter/clutter-behavuour-scale.c:
* clutter/clutter-clone-texture.c:
* clutter/clutter-label.c:
* clutter/clutter-rectangle.c:
* clutter/clutter-stage.c:
* clutter/clutter-texture.c:
* clutter/clutter-timeline.c: Use the CLUTTER_PARAM_*
macros we just added.
* clutter/clutter-behaviour-scale.c: Add properties for
the scale begin, scale end and gravity parameters.
* clutter/clutter-behaviour-path.h: Mark the ClutterKnot
memory management functions as public (for the bindings),
since we use the slice allocator for copying knots around;
add a clutter_knot_equal() function.
* clutter/clutter-behaviour-path.c:
(node_distance): Use clutter_knot_equal() as a fast path
to avoid the sqrt() in case the nodes we are using are
at the same position.
(path_total_length): Additional check on the existence
of the next node.
* examples/behave.c: Do not leak the ClutterBehaviour
objects around.
* clutter/clutter-texture.h: Clean up.
* clutter/clutter-texture.c: Typo fix in the name
of ClutterTextureTileDimension.
* clutter/clutter-behaviour.c: Allow passing NULL
to clutter_behaviour_set_alpha() (as we pass NULL
in the finalize process).
* clutter/clutter-stage.h:
* clutter/clutter-stage.c:
(clutter_stage_swap_buffers): Remove, as the same is done
via clutter_redraw() and clutter_actor_queue_redraw().
(clutter_stage_unrealize), (clutter_stage_init),
(clutter_stage_set_xwindow_foreign): Do not call
XDestroyWindow() on the stage Window if we are using a
foreign Window, as we don't control its lifetime.
* Makefile.am: Remove the gtk directory from the SUBDIRS.
* clutter/clutter-stage.h:
* clutter/clutter-stage.c: Add clutter_stage_swap_buffers(),
which swaps the GL buffers. This fixes the redraw in the
GTK widget.