Use a per-class timeout pool into ClutterTimeline so that every timeline
instance will use a pooled timeout function to execute the tick. This
should make multiple timelines not starve the main loop.
A ClutterTimeoutPool is a source for the GLib main loop which pools
multiple timeout functions. The pool is always sorted so that the first
timeout to expire is also the first element of the pool; hence, extraction
is a constant time operation. This also makes the usage of multiple
timeouts at the same priority not compete for a timeslice of the main
loop, leading to starvation.
* 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.
This patch adds a "delay" property to the timeline object. If set,
it will delay the start of the timeline of a number of milliseconds.
If the timeline is looping, the delay will be applied just the first
time and not for every loop.
* 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()
Use clutter_base_init() instead of g_type_init(), as it calls the type
function for ClutterActor and allows the compiler to use a constant value
instead of the computed result.
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.
Use the right marshaller signature (boolean:boxed) for the delete-event
signal handlers. Add a debug note in clutter_main_do_event() to track the
signal return. Test the delete-event handler inside test.c.
Supporting WM_PROTOCOLS allows handling the WM_DELETE_WINDOW ClientMessage,
which is then relayed to the ClutterStage actor in form of the "delete-event"
signal. Returning TRUE will block the propagation and won't close the
stage window.
Add clutter_backend_get_n_screens(), which returns the number of screens
manager by the ClutterBackend, and change clutter_backend_get_screen_number()
to return the screen number of the currently used screen; this is semantically
equivalent to clutter_glx_get_default_screen(), but leaves the door open for
a "screen" abstraction in Clutter, handled by the backend. Update the GLX
and EGL backends to retrieve and set the screen_num and n_screens members of
ClutterBackend using Xlib calls.
Add functions to retrieve some of the properties of the screen used by
the backend, like its dimensions (also physical, in millimeters); the
number of screens. Also add setters and getters for the double click
time (in milliseconds) and distance.
Add the XEMBED protocol support in the GLX backend, for embedding the
stage window into another X window. This allows cross-toolkit inclusion
and makes clutter-gtk possible.
Revert to copying GdkPixbuf areas to correctly implement the texture
tiling. This fixes segmentation faults occurring with cards with a
small texture memory area.
Call g_object_freeze_notify() (and take a reference on the actor) inside
clutter_actor_request_size() so that the notifications get unqueued at the
end of the size request.
Add the XEMBED protocol support in the GLX backend, for embedding the
stage window into another X window. This allows cross-toolkit inclusion
and makes clutter-gtk possible.
Revert to copying GdkPixbuf areas to correctly implement the texture
tiling. This fixes segmentation faults occurring with cards with a
small texture memory area.
Call g_object_freeze_notify() (and take a reference on the actor) inside
clutter_actor_request_size() so that the notifications get unqueued at the
end of the size request.
Add initial implementation of a rotate behaviour; this behaviour rotates
actors along a chosen axis, with a chosen direction, between two angles.
Missing: API documentation and the implementation for the angle boundaries
setters (double and fixed API).
* 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()
GL and not GLX. Removed the get_actor_at_pos() and flush() vfuncs
from ClutterStageClass: clutter_stage_flush() becomes the private
_clutter_stage_sync_viewport() function, which should only be used
internally.
* 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.
* clutter/clutter-actor.c:
* clutter/clutter-alpha.c:
* clutter/clutter-behaviour-opacity.c:
* clutter/clutter-behaviour-scale.c:
* clutter/clutter-clone-texture.c:
* clutter/clutter-feature.c:
* clutter/clutter-label.c:
* clutter/clutter-main.c:
* clutter/clutter-stage.c:
* clutter/clutter-texture.c
* clutter/clutter-timeline.c:
* clutter/clutter-debug.h:
Make CLUTTER_NOTE() just take a string rather than a func.
Add more default context to output.
* configure.ac:
Fix flag and add more help docs for --ebable-debug option.
* configure.ac: Enable debug messages also when
--enable-debug is set to "minimum".
* clutter/Makefile.am:
* clutter/clutter-debug.h: Move all debugging macros inside
this private header; make all debug macros depend on the
CLUTTER_ENABLE_DEBUG compile time define, controlled by
the --enable-debug configure switch; add G_LOG_DOMAIN define.
* clutter/clutter-main.c: Clean up the debug stuff; add
command line argument parsing using GOption; the debug
messages now are triggered like this:
CLUTTER_DEBUG=section:section:... clutter-app
or like this:
clutter-app --clutter-debug=section:section:...
where "section" is one of the sections listed in clutter-main.c,
or "all", for all sections; each section is bound to a flag,
which can be used to define a domain when adding a debug note
using the CLUTTER_NOTE() macro; the old CLUTTER_DBG() macro is
just a wrapper around that, under the CLUTTER_DEBUG_MISC domain;
CLUTTER_NOTE() is used like this:
CLUTTER_NOTE (DOMAIN, log-function);
where log function is g_printerr(), g_message(), g_warning(),
g_critical() or directly g_log() - for instance:
CLUTTER_NOTE (PANGO, g_warning ("Cache miss: %d", glyph));
will print the warning only if the "pango" flag has been
set to the CLUTTER_DEBUG envvar or passed to the --clutter-debug
command line argument.
similar to CLUTTER_SHOW_FPS, there's also the --clutter-show-fps
command line switch; also, the --display and --screen command
line switches have been added: the first overrides the DISPLAY
envvar and the second controls the X screen used by Clutter to
get the root window on the display.
* clutter/clutter-main.h:
* clutter/clutter-main.c: Add extended support for GOption
in Clutter; use clutter_init_with_args() to let Clutter
parse your own command line arguments; use instead
clutter_get_option_group() to get the GOptionGroup used by
Clutter if you want to do the parsing yourself with
g_option_context_parse(). The init sequence has been verified,
updated and moved into common functions where possible.
* clutter/pango/pangoclutter-render.c:
* clutter/*.c: Include "clutter-debug.h" where needed; use
CLUTTER_NOTE() instead of CLUTTER_DBG().
* examples/super-oh.c: Use the new clutter_init_with_args()
function, and add a --num-hands command line switch to
the SuperOH example code controlling the number of hands at
runtime.
* clutter/clutter-rectangle.h:
* clutter/clutter-rectangle.c: Add border to the ClutterRectangle
actor; add "border-width", "border-color" and "has-border"
properties, plus their accessors. The border generation code is
pretty lame, at the moment.
* examples/behave.c: Add code to test the new rectangle properties.
* clutter/Makefile.am:
* clutter/clutter.h:
* clutter/clutter-version.h.in: Auto-generated versioning macros.
* clutter/clutter-actor.h:
* clutter/clutter-actor.c: Add a ClutterActor::parent-set signal,
for notificating changes of an actor's parent; add api-doc for
the actor's properties; add the ClutterActor "name" property; clean
up a bit some functions; emit the "parent-set" signal when setting
te parent and when unparenting; better warnings when lowering
and raising an actor.
* configure.ac:
* clutter/Makefile.am: Add a --enable-debug configure option,
with three levels of debugging: no, minimum and yes; default
for development releases (odd minor version) is "yes"; update
the version m4 defines; update the libtool macros: now just
changed the clutter_interface_age when releasing will update
everything else.
* clutter/clutter-behaviour-path.h:
* clutter/clutter-behaviour-path.c: Add "since" strings; add
a "knot" property which can be used to append a knot to the path;
fix apidoc.
* clutter/clutter-alpha.c: Add "since" strings.
* clutter/clutter-feature.c: Add apidoc.
* clutter/clutter-behaviour-opacity.c: Add the "opacity-start"
and "opacity-end" properties; rewrite constructor to use them.
* clutter/clutter-behaviour-path.h:
* clutter/clutter-behaviour-path.c: Add a "knot-reached" signal,
which is emitted when the path reaches a node in the nodes list;
flesh out the documentation a bit; sync the parameters names
so that gtk-doc doesn't complain about missing stuff.
* clutter/clutter-behaviour.h:
* clutter/clutter-behaviour.c: Add the alpha value to the
ClutterBehaviour::alpha_notify vfunc, so you don't have to
get the value from the alpha inside the behaviour implementations;
add more documentation.
* clutter/clutter-alpha.c: Flesh out the description.
* clutter/clutter-actor.h: Update the header.
* clutter/clutter-behaviour-opacity.c:
* clutter/clutter-behaviour-scale.c: Update docs.
* clutter/clutter-private.h:
* clutter/clutter-actor.c: Implement the defined
clutter_actor_reparent() method; call unrealize
when unparenting an actor.
* clutter/clutter-alpha.h:
* clutter/clutter-alpha.c: Add a data parameter to
the ClutterAlphaFunc; add a data+destroy parameter
to clutter_alpha_set_func() and to clutter_alpha_new(),
and turned the latter into clutter_alpha_new_full();
add a simple, empty constructor clutter_alpha_new().
These changes makes writing bindings a tad more easy,
as bindings require passing their own functions in
order to call the real alpha function.
* clutter/clutter-behaviour.h: Clean up the header.
* clutter/clutter-behaviours.[ch]:
* clutter/clutter-behaviour-opacity.[ch]:
* clutter/clutter-behaviour-path.[ch]:
* clutter/clutter-behaviour-scale.[ch]: Split the
ClutterBehaviourPath, ClutterBehaviourOpacity and
ClutterBehaviourScale into their own files as they
have been growing a bit. Fix ClutterBehaviourPath
API.
* clutter/clutter-media.h: Remove the commented
"metadata_available" signal: gtk-doc chokes up on that.
* clutter/clutter-timeline.h:
* clutter/clutter-timeline.c: Remove the useless
ClutterTimelineAlphaFunc signature; add missing accessor
methods for the properties; clean up a bit.
* clutter/clutter-util.h:
* clutter/clutter-util.c: Remove unneeded function
clutter_util_can_create_texture().
* clutter/clutter-feature.h: Sync the name of
clutter_feature_get_all() with the name declared
in clutter-feature.h.
* clutter/Makefile.am:
* clutter/clutter.h: Update.
* examples/behave.c: Update to the new ClutterAlpha
constructor.
* examples/super-oh.c: Use the right pointer and avoid
the compiler making a fuss about it.
* clutter/clutter-actor.h:
* clutter/clutter-actor.c:
Add new API clutter_actor_move_by(), clutter_actor_get_size()
* clutter/clutter-alpha.c:
* clutter/clutter-alpha.h:
Add clutter alpha sine func
* clutter/clutter-behaviours.h:
* clutter/clutter-behaviours.c:
Add a basic scale behaviour (needs work)
* examples/behave.c: (main):
More playing with new behaviour functionality
* clutter/clutter-feature.c:
* clutter/clutter-feature.h:
* clutter/clutter-main.c:
Add new experimental sync to vblank code
Set env CLUTTER_VBLANK=none to disable.
* clutter/clutter-alpha.h:
* clutter/clutter-alpha.c: ClutterAlpha is an initially
floating object, as it makes sense only when bound to
a ClutterBehaviour; add checks for public API.
* clutter/clutter-behaviour.h:
* clutter/clutter-behaviour.c: Remove the ClutterBehaviour
constructor: ClutterBehaviour is an abstract class which
must be implemented by subclassing; add checks for public
API; unref the actors on finalize; sink the ClutterAlpha
object.
* clutter/clutter-behaviours.h: ClutterKnot is a boxed
type: add the _get_type() function declaration and the
type macro.
* clutter/clutter-actor.c: (clutter_actor_paint):
* clutter/clutter-clone-texture.c: (clutter_clone_texture_paint):
* clutter/clutter-group.c: (clutter_group_paint):
* clutter/clutter-rectangle.c: (clutter_rectangle_paint):
* clutter/clutter-texture.c: (clutter_texture_paint):
Fix for #156.
clutter_actor_paint() now translates to actor position as
to not fix scaled groups positioning. Sub classes now paint
at 0,0.
* clutter/clutter-actor.c: (redraw_update_idle),
(clutter_actor_queue_redraw):
* clutter/clutter-main.c: (clutter_redraw):
Remove now uneeded locks
( new gst and texture code makes redundant )
* clutter/clutter-texture.c:
* clutter/clutter-texture.h:
Redo clutter texture as to not keep a reference
to underlying texture.
More fixes from Bastien Nocera (#155):
* clutter/clutter-main.c: (clutter_init):
* clutter/clutter-main.h:
Add an enum for clutter init to return an error code.
* configure.ac:
Dont check for XInitThreads, there is no need, its part of xlib.
* clutter/clutter-fixed.h:
Add basic fixed point utility defines and type.
* clutter/Makefile.am:
* clutter/clutter-actor.c:
* clutter/clutter-actor.h:
* clutter/clutter-group.c:
* clutter/clutter-stage.c:
* examples/super-oh.c: (main):
Add scale API and functionality.
Rework group sizing. Now group size requests have no effect
but can be scaled.
* clutter/clutter-feature.c: No need to call clutter_feature_init()
each time: it's private and should never be seen from the outside;
add a warning, just in case something screws up and calls it more
than once.
* clutter/clutter-private.h: Move clutter_feature_init()
declaration here: you shouldn't even need to initialise
features yourself.
* clutter/clutter-feature.c: call clutter_feature_init()
each time you try to access the feature list; add a static
lock around the feature flags container; add api documentation.
* clutter/clutter-feature.h: Add a type for the feature flags
to make bindings happy.
* clutter/Makefile.am:
* clutter/clutter-feature.c:
* clutter/clutter-feature.h:
Add new funcs for checking for available runtime GL
extensions.
* clutter/clutter-clone-texture.c:
* clutter/clutter-texture.c:
Add support for non power of two textures
if GL_TEXTURE_RECTANGLE_ARB extension available ( at runtime ).
Should lower texture memory needs a little.
* clutter/clutter-main.c:
(clutter_main): Destroy the main stage, instead of unreffing it.
(clutter_init): Ref and sink the main stage, as it is a top
level actor.
* clutter/clutter-stage.c (clutter_stage_unrealize): Access
the Window private member directly, instead of calling the
get_xwindow method.
* examples/test.c (main): Quit on button press.
* configure.ac: Mark this as 0.1.1, and change the version info
of the library.
* clutter/clutter-actor.c:
* clutter/clutter-group.c: Fix documentation.
* clutter/clutter-actor.h:
* clutter/clutter-actor.c:
(clutter_actor_class_init), (clutter_actor_set_property),
(clutter_actor_get_property): Add the "clip" and "has-clip"
properties.
(clutter_actor_set_clip), (clutter_actor_remove_clip): Emit
the notification for the changed properties.
(clutter_actor_has_clip): Simple accessor to the "has-clip"
property.
Big rework of the actor management semantics: now ClutterActor
objects behave like GtkObjects - that is they have an initial
"floating" reference that gets "sunk" when they are added to
a ClutterGroup. This makes a group responsible of de-allocating
each actor inside it, so you just have to destroy the group to
get every child actor destroyed. Also, now you can do:
clutter_group_add (group, clutter_video_texture_new ());
without having to care about reference counting and explicit
unreffing.
* clutter/clutter-private.h: Add private flags setter and
getter macros.
* clutter/clutter-actor.h:
* clutter/clutter-actor.c: Clean up; inherit from GInitiallyUnowned;
add a "visible" property; add the "destroy", "show" and "hide"
signals to ClutterActorClass.
(clutter_actor_show), (clutter_actor_hide): Refactor a bit; emit
the "show" and "hide" signals.
(clutter_actor_set_property), (clutter_actor_get_property),
(clutter_actor_class_init): Implement the "visible" property; add
signals.
(clutter_actor_finalize): Do not leak the actor's name, if it is
set.
(clutter_actor_dispose): Emit the "destroy" signal here.
(clutter_actor_init): Sink the initial floating flag if needed.
(clutter_actor_destroy): Add a function to explicitely destroy
a ClutterActor.
(clutter_actor_set_parent), (clutter_actor_get_parent),
(clutter_actor_unparent): Make set_parent require a valid parent;
add unparent; check on get_parent; ref_sink the actor when
setting its parent and unref it when unsetting it. Probably we'll
need a function that does reparenting as unparent+set_parent in
a single shot.
* clutter/clutter-group.h:
* clutter/clutter-group.c (clutter_group_dispose),
(clutter_group_finalize), (clutter_group_add),
(clutter_group_remove): Make the group destroy its children when
disposing it; clean up, and use the newly-available
clutter_actor_unparent().
* clutter/clutter-stage.h:
* clutter/clutter-stage.c (clutter_stage_init): ClutterStage is
a top-level actor; clean up.
* clutter/clutter-video-texture.h:
* clutter/clutter-video-texture.c: Clean up.
* examples/super-oh.c:
* examples/test.c:
* examples/video-player.c:
* examples/test-text.c:
* examples/video-cube.c: Remove the g_object_unref() call, as the
ClutterStage object is destroyed on clutter_main_quit().
--his line, and those below, will be ignored--
M clutter/clutter-actor.c
M ChangeLog
M doc/reference/clutter-sections.txt
M doc/reference/ChangeLog
M doc/reference/tmpl/clutter-enum-types.sgml
M doc/reference/tmpl/clutter-color.sgml
M doc/reference/tmpl/clutter-event.sgml
M doc/reference/tmpl/clutter-group.sgml
* clutter/clutter-timeline.h:
* clutter/clutter-timeline.c: Add a "started" and a "paused"
signals; add more sanity checks on the public functions.
(clutter_timeline_get_loop): Add a getter function for the
loop property.
* clutter/clutter-marshal.list: Add marshallers.
* clutter/clutter-timeline.h:
* clutter/clutter-actor.h: Add padding for future expansion
without breaking ABI.
* clutter/Makefile.am:
Make sure clutter.h included.
* clutter/clutter-stage.c: (clutter_stage_realize),
(clutter_stage_get_actor_at_pos):
Select for motion events on X window.
Return highest rather than lowest found actor for actor_at_pos.
* examples/Makefile.am:
Remove test-text, remane test video.
* examples/README:
Add info about the included examples.
* examples/test-video.c:
* examples/video-player.c:
Redo test-video a little nicer and rename.
* examples/video-cube.c:
Fix so it at least 'works' again.
* examples/test.c:
Clean up a little.
* TODO:
Update.
* clutter/clutter-group.c:
Attempt better group sizing code.
* clutter/clutter-label.c:
Minor tweaks.
* clutter/clutter-texture.c:
More debug info, make sure texture is realised for base_size()
* clutter/clutter-video-texture.c:
Seeking fixes
* examples/test.c: (main):
Populate with more randomness.
* clutter/clutter-stage.c:
* clutter/clutter-stage.h:
Add clutter_stage_set_xwindow_foreign() call
* clutter/clutter-util.c:
* clutter/clutter-util.h:
Add some X error traps
* examples/super-oh.c:
Toy with us of new clutter_stage_set_xwindow_foreign() for
optional screensaver functionality.
* clutter/clutter-main.c:
* clutter/clutter-private.h:
* clutter/clutter-stage.c:
Rework and fix offscreen rendering, also rejig GLX
context handling, moving mostly into stage.
Require at least OpenGL 1.2 ( CLAMP_TO_EDGE )
* clutter/clutter-texture.c:
Explicity set props on _init() as to avoid nasty can_create
bug failing miserably in certain situations.
Switch to CLAMP_TO_EDGE for textures to avoid tile seams.
Add some more GL error checks.
* clutter/clutter-label.c:
Extra debug info
* configure.ac:
Require gdk-pixbuf-xlib-2.0
* configure.ac:
Use pkg-config to check for X. Really Check for GL libs.
Make gtk binding optional. Cleanup a little.
* Makefile.am:
* gtk/Makefile.am:
Make gtk binding optional
* clutter/clutter-element.c:
Cleanup a little, notify on size change.
* clutter/clutter-texture.c:
Lots of cleanups. Add waste prop. Add filter quality prop.
* clutter/clutter-clone-texture.c:
Make object construction simpler to work better with bindings.
* clutter/clutter-stage.c:
* clutter/clutter-timeline.c:
Minor reformating, cleanups.
* examples/test-text.c: (main):
Random experimentation
* clutter/clutter-event.h:
Remove send_event field. Clutter shouldn't need it.
* clutter/clutter-main.c: (clutter_dispatch_x_event):
Dont malloc a new clutter event for each xevent.
* clutter/clutter-stage.h:
* clutter/clutter-stage.c: (clutter_stage_class_init),
(clutter_stage_get_default):
Dont ref stage from clutter_stage_get_default.
* examples/super-oh.c: (main):
Remove some now uneeded debug g_prints
* clutter-color.h:
* clutter-color.c: Reimplement ClutterColor as a boxed type;
add convenience API for color handling, like: add, subtract,
shade, HSL color-space conversion, packing and unpacking.
* clutter-private.h: Update ClutterMainContext, and export the
main context pointer here.
* clutter-rectangle.h:
* clutter-rectangle.c: Update the color-related code; make
clutter_rectangle_new() and empty constructor and provide
clutter_rectangle_new_with_color(); provide color setter
and getter API.
* clutter-label.h:
* clutter-label.c: Rename the "font" property to "font-name";
update the color-related code to the new ClutterColor object;
rename clutter_label_new() to clutter_label_new_with_text(),
and add setters and getters for the properties.
* clutter-marshal.list: Add VOID:OBJECT and VOID:BOXED marshallers
generators.
* clutter-stage.h:
* clutter-stage.c: Rework the API: provide a default constructor
for a singleton object, named clutter_stage_get_default(), which
supercedes the clutter_stage() function in clutter-main; provide
new events: button-press-event, button-release-event,
key-press-event and key-release-event; update the color-related
code;
(clutter_stage_snapshot): Allow negative width and height when
taking a snapshot (meaning: use full width/height).
(clutter_stage_get_element_at_pos): Rename clutter_stage_pick().
* clutter-element.c (clutter_element_paint): Clean up the
stage and color related code.
* clutter-event.h:
* clutter-event.c: Add generic ClutterAnyEvent type; add
clutter_event_new(), clutter_event_copy() and clutter_event_free();
make ClutterEvent a boxed type.
* clutter-main.h:
* clutter-main.c: Remove clutter_stage(); add clutter_main_quit(),
for cleanly quitting from clutter_main(); add multiple mainloops
support; allocate the ClutterCntx instead of adding it to the
stack; re-work the ClutterEvent dispatching.
* clutter-group.c (clutter_group_add), (clutter_group_remove): Keep
a reference on the element when added to a ClutterGroup.
* examples/rects.py
* examples/test.c:
* examples/test-text.c:
* examples/video-cube.c:
* examples/super-oh.c:
* examples/test-video.c: Update.
* clutter/clutter-element.c:
* clutter/clutter-group.c:
* clutter/clutter-group.h:
Work more on depth ( Z ) setting with sorting.
* clutter/clutter-main.c: (clutter_redraw):
Experiment with glXWaitVideoSyncSGI. Currently disabled.
* clutter/clutter-element.h:
Add missing _depth() declarations
* clutter/clutter-main.c:
* clutter/clutter-main.h:
* clutter/clutter-private.h:
* clutter/clutter-stage.c:
* clutter/clutter-stage.h:
Rejig GL setup as for stage to support an offscreen property.
Offscreen support is however a little borked.