#include "config.h"
#endif
+#include "clutter-timeout-pool.h"
#include "clutter-timeline.h"
#include "clutter-main.h"
#include "clutter-marshal.h"
#define FPS_TO_INTERVAL(f) (1000 / (f))
+static ClutterTimeoutPool *timeline_pool = NULL;
+
struct _ClutterTimelinePrivate
{
guint timeout_id;
if (priv->delay_id)
{
- g_source_remove (priv->delay_id);
+ clutter_timeout_pool_remove (timeline_pool, priv->delay_id);
priv->delay_id = 0;
}
if (priv->timeout_id)
{
- g_source_remove (priv->timeout_id);
+ clutter_timeout_pool_remove (timeline_pool, priv->timeout_id);
priv->timeout_id = 0;
}
static void
clutter_timeline_class_init (ClutterTimelineClass *klass)
{
- GObjectClass *object_class;
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
- object_class = (GObjectClass*) klass;
+ timeline_pool = clutter_timeout_pool_new (G_PRIORITY_DEFAULT + 30);
object_class->set_property = clutter_timeline_set_property;
object_class->get_property = clutter_timeline_get_property;
priv->delay_id = 0;
- priv->timeout_id = g_timeout_add_full (G_PRIORITY_DEFAULT + 20,
- FPS_TO_INTERVAL (priv->fps),
- timeline_timeout_func,
- timeline,
- NULL);
+ priv->timeout_id = clutter_timeout_pool_add (timeline_pool,
+ FPS_TO_INTERVAL (priv->fps),
+ timeline_timeout_func,
+ timeline,
+ NULL);
g_signal_emit (timeline, timeline_signals[STARTED], 0);
if (priv->delay)
{
- priv->delay_id = g_timeout_add_full (G_PRIORITY_DEFAULT + 20,
- priv->delay,
- delay_timeout_func,
- timeline,
- NULL);
+ priv->delay_id = clutter_timeout_pool_add (timeline_pool,
+ priv->delay,
+ delay_timeout_func,
+ timeline,
+ NULL);
}
else
{
- priv->timeout_id = g_timeout_add_full (G_PRIORITY_DEFAULT + 20,
- FPS_TO_INTERVAL (priv->fps),
- timeline_timeout_func,
- timeline,
- NULL);
+ priv->timeout_id = clutter_timeout_pool_add (timeline_pool,
+ FPS_TO_INTERVAL (priv->fps),
+ timeline_timeout_func,
+ timeline,
+ NULL);
+
g_signal_emit (timeline, timeline_signals[STARTED], 0);
}
}
if (priv->delay_id)
{
- g_source_remove (priv->delay_id);
+ clutter_timeout_pool_remove (timeline_pool, priv->delay_id);
priv->delay_id = 0;
}
if (priv->timeout_id)
{
- g_source_remove (priv->timeout_id);
+ clutter_timeout_pool_remove (timeline_pool, priv->timeout_id);
priv->timeout_id = 0;
}
/* if the timeline is playing restart */
if (priv->timeout_id)
{
- g_source_remove (priv->timeout_id);
+ clutter_timeout_pool_remove (timeline_pool, priv->timeout_id);
- priv->timeout_id = g_timeout_add (FPS_TO_INTERVAL (priv->fps),
- timeline_timeout_func,
- timeline);
+ priv->timeout_id = clutter_timeout_pool_add (timeline_pool,
+ FPS_TO_INTERVAL (priv->fps),
+ timeline_timeout_func,
+ timeline, NULL);
}
g_object_notify (G_OBJECT (timeline), "fps");