mirror of
https://github.com/brl/mutter.git
synced 2025-04-08 19:29:39 +00:00
* clutter/clutter-timeline.c: (clutter_timeline_get_delta): return the
number of milliseconds passed between new-frame events instead of since new-frame events, thus making sure that the sum of _get_delta's returned for all new-frame events is equal to total time elapsed.
This commit is contained in:
parent
97631bffd5
commit
3def17d9d2
@ -1,3 +1,10 @@
|
|||||||
|
2007-11-30 Øyvind Kolås <pippin@o-hand.com>
|
||||||
|
|
||||||
|
* clutter/clutter-timeline.c: (clutter_timeline_get_delta): return the
|
||||||
|
number of milliseconds passed between new-frame events instead of
|
||||||
|
since new-frame events, thus making sure that the sum of _get_delta's
|
||||||
|
returned for all new-frame events is equal to total time elapsed.
|
||||||
|
|
||||||
2007-11-30 Emmanuele Bassi <ebassi@openedhand.com>
|
2007-11-30 Emmanuele Bassi <ebassi@openedhand.com>
|
||||||
|
|
||||||
* clutter/clutter-actor.c (parse_units),
|
* clutter/clutter-actor.c (parse_units),
|
||||||
|
@ -74,6 +74,7 @@ struct _ClutterTimelinePrivate
|
|||||||
|
|
||||||
gulong last_frame_msecs;
|
gulong last_frame_msecs;
|
||||||
gulong start_frame_secs;
|
gulong start_frame_secs;
|
||||||
|
guint msecs_delta;
|
||||||
|
|
||||||
guint loop : 1;
|
guint loop : 1;
|
||||||
};
|
};
|
||||||
@ -445,6 +446,7 @@ clutter_timeline_init (ClutterTimeline *self)
|
|||||||
|
|
||||||
self->priv->fps = clutter_get_default_frame_rate ();
|
self->priv->fps = clutter_get_default_frame_rate ();
|
||||||
self->priv->n_frames = 0;
|
self->priv->n_frames = 0;
|
||||||
|
self->priv->msecs_delta = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@ -505,6 +507,7 @@ timeline_timeout_func (gpointer data)
|
|||||||
+ (timeval.tv_usec / 1000);
|
+ (timeval.tv_usec / 1000);
|
||||||
n_frames = (msecs - priv->last_frame_msecs)
|
n_frames = (msecs - priv->last_frame_msecs)
|
||||||
/ (1000 / priv->fps);
|
/ (1000 / priv->fps);
|
||||||
|
priv->msecs_delta = msecs - priv->last_frame_msecs;
|
||||||
|
|
||||||
if (n_frames <= 0)
|
if (n_frames <= 0)
|
||||||
{
|
{
|
||||||
@ -528,6 +531,7 @@ timeline_timeout_func (gpointer data)
|
|||||||
/* First frame, set up timings.*/
|
/* First frame, set up timings.*/
|
||||||
priv->start_frame_secs = timeval.tv_sec;
|
priv->start_frame_secs = timeval.tv_sec;
|
||||||
priv->skipped_frames = 0;
|
priv->skipped_frames = 0;
|
||||||
|
priv->msecs_delta = 0;
|
||||||
|
|
||||||
msecs = timeval.tv_usec / 1000;
|
msecs = timeval.tv_usec / 1000;
|
||||||
n_frames = 1;
|
n_frames = 1;
|
||||||
@ -1254,19 +1258,7 @@ clutter_timeline_get_delta (ClutterTimeline *timeline,
|
|||||||
|
|
||||||
if (msecs)
|
if (msecs)
|
||||||
{
|
{
|
||||||
GTimeVal timeval;
|
*msecs = timeline->priv->msecs_delta;
|
||||||
|
|
||||||
g_get_current_time (&timeval);
|
|
||||||
|
|
||||||
if (priv->last_frame_msecs)
|
|
||||||
{
|
|
||||||
*msecs = ((timeval.tv_sec - priv->start_frame_secs) * 1000)
|
|
||||||
+ (timeval.tv_usec / 1000);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
*msecs = timeval.tv_usec / 1000;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return priv->skipped_frames + 1;
|
return priv->skipped_frames + 1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user