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.