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().
* examples/video-player.c: (size_change):
cast stage height to gint avoiding wierdness for when
video height greater than half display height. Fixed#99
--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.
* gtk/gtk-clutter.[ch]: Rewrite to use
clutter_stage_set_xwindow_foreign rather than GtkSocket.
* gtk/gtk-clutter-test.c: Add fading!1!!!!11! OMGWTFBBQ!!!
* 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.
* 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.