212c4a0ee8
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(). |
||
---|---|---|
.. | ||
clutter-logo-800x600.png | ||
Makefile.am | ||
media-actions-pause.png | ||
media-actions-start.png | ||
README | ||
rects.py | ||
redhand.png | ||
super-oh.c | ||
test-text.c | ||
test.c | ||
vid-panel.png | ||
video-cube.c | ||
video-player.c |
examples/ === This directory contains a number of simple hacks come tests come examples come clutter demos. There are: o test Lots of randomness. Scratchpad to test new features. o test.py Like above but more randomness in python. o super-oh Spinning OH logos. Click to dissapear. o video-player. Simple fullscreen video player. - Move mouse to see controls. - Hit q or Esc to exit, p to toggle pause state. - Has some useless cheesy effects built in. - Hit e to flip the video. o video-cube. Pure evil. A nasty hack to do a video cube with clutter. Could be done much nicer. Also see http://svn.o-hand.com/repos/misc/trunk/opt for a simple clutter based presentation program.