477db755b7
* clutter/clutter-score.[ch]: Remove all the API changes, and just add a clutter_score_append_at_marker(); the implementation remains the same, but the marker must be explicitly created by the developer. The ids are no longer used to create implicit markers, so they can return to be unsigned integers. * clutter/clutter-timeline.[ch]: (clutter_timeline_has_marker): Add a function to query a timeline for a marker being set. * tests/test-score.c (main): Update with the API changes. * clutter.symbols: Update exported symbols.
111 lines
3.1 KiB
C
111 lines
3.1 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <clutter/clutter.h>
|
|
|
|
static gint level = 1;
|
|
|
|
static void
|
|
on_timeline_started (ClutterScore *score,
|
|
ClutterTimeline *timeline)
|
|
{
|
|
gint i;
|
|
|
|
for (i = 0; i < level; i++)
|
|
g_print (" ");
|
|
|
|
g_print ("Started timeline: `%s'\n",
|
|
(gchar *) g_object_get_data (G_OBJECT (timeline), "timeline-name"));
|
|
|
|
level += 1;
|
|
}
|
|
|
|
static void
|
|
on_timeline_completed (ClutterScore *score,
|
|
ClutterTimeline *timeline)
|
|
{
|
|
gint i;
|
|
|
|
level -= 1;
|
|
|
|
for (i = 0; i < level; i++)
|
|
g_print (" ");
|
|
|
|
g_print ("Completed timeline: `%s'\n",
|
|
(gchar *) g_object_get_data (G_OBJECT (timeline), "timeline-name"));
|
|
}
|
|
|
|
int
|
|
main (int argc, char **argv)
|
|
{
|
|
ClutterScore *score;
|
|
ClutterTimeline *timeline_1;
|
|
ClutterTimeline *timeline_2;
|
|
ClutterTimeline *timeline_3;
|
|
ClutterTimeline *timeline_4;
|
|
ClutterTimeline *timeline_5;
|
|
GSList *timelines;
|
|
|
|
clutter_init (&argc, &argv);
|
|
|
|
timeline_1 = clutter_timeline_new_for_duration (1000);
|
|
g_object_set_data_full (G_OBJECT (timeline_1),
|
|
"timeline-name", g_strdup ("Timeline 1"),
|
|
g_free);
|
|
|
|
timeline_2 = clutter_timeline_new_for_duration (1000);
|
|
clutter_timeline_add_marker_at_time (timeline_2, "foo", 500);
|
|
g_object_set_data_full (G_OBJECT (timeline_2),
|
|
"timeline-name", g_strdup ("Timeline 2"),
|
|
g_free);
|
|
|
|
timeline_3 = clutter_timeline_new_for_duration (1000);
|
|
g_object_set_data_full (G_OBJECT (timeline_3),
|
|
"timeline-name", g_strdup ("Timeline 3"),
|
|
g_free);
|
|
|
|
timeline_4 = clutter_timeline_new_for_duration (1000);
|
|
g_object_set_data_full (G_OBJECT (timeline_4),
|
|
"timeline-name", g_strdup ("Timeline 4"),
|
|
g_free);
|
|
|
|
timeline_5 = clutter_timeline_new_for_duration (1000);
|
|
g_object_set_data_full (G_OBJECT (timeline_5),
|
|
"timeline-name", g_strdup ("Timeline 5"),
|
|
g_free);
|
|
|
|
score = clutter_score_new();
|
|
g_signal_connect (score, "timeline-started",
|
|
G_CALLBACK (on_timeline_started),
|
|
NULL);
|
|
g_signal_connect (score, "timeline-completed",
|
|
G_CALLBACK (on_timeline_completed),
|
|
NULL);
|
|
g_signal_connect (score, "completed",
|
|
G_CALLBACK (clutter_main_quit),
|
|
NULL);
|
|
|
|
clutter_score_append (score, NULL, timeline_1);
|
|
clutter_score_append (score, timeline_1, timeline_2);
|
|
clutter_score_append (score, timeline_1, timeline_3);
|
|
clutter_score_append (score, timeline_3, timeline_4);
|
|
|
|
clutter_score_append_at_marker (score, timeline_2, "foo", timeline_5);
|
|
|
|
timelines = clutter_score_list_timelines (score);
|
|
g_assert (5 == g_slist_length (timelines));
|
|
g_slist_free (timelines);
|
|
|
|
clutter_score_start (score);
|
|
|
|
clutter_main ();
|
|
|
|
g_object_unref (timeline_1);
|
|
g_object_unref (timeline_2);
|
|
g_object_unref (timeline_3);
|
|
g_object_unref (timeline_4);
|
|
g_object_unref (timeline_5);
|
|
g_object_unref (score);
|
|
|
|
return EXIT_SUCCESS;
|
|
}
|