mirror of
https://github.com/brl/mutter.git
synced 2024-11-30 03:50:47 -05:00
a93a93d007
Bug 1495 - Timelines run 4% short Previously the timelines were timed by calculating the interval between each frame stored as an integer number of milliseconds so some precision is lost. For example, requesting 60 frames per second gets converted to 16 ms per frame which is actually 62.5 frames per second. This makes the timeline shorter by 4%. This patch merges the common code for timing from the timeout pools and frame sources into an internal clutter-timeout-interval file. This stores the interval directly as the FPS and counts the number of frames that have been reached instead of the elapsed time.
57 lines
1.9 KiB
C
57 lines
1.9 KiB
C
/*
|
|
* Clutter.
|
|
*
|
|
* An OpenGL based 'interactive canvas' library.
|
|
*
|
|
* Authored By Neil Roberts <neil@linux.intel.com>
|
|
*
|
|
* Copyright (C) 2009 Intel Corporation.
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef __CLUTTER_TIMEOUT_INTERVAL_H__
|
|
#define __CLUTTER_TIMEOUT_INTERVAL_H__
|
|
|
|
#include <glib.h>
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
typedef struct _ClutterTimeoutInterval ClutterTimeoutInterval;
|
|
|
|
struct _ClutterTimeoutInterval
|
|
{
|
|
GTimeVal start_time;
|
|
guint frame_count, fps;
|
|
};
|
|
|
|
void _clutter_timeout_interval_init (ClutterTimeoutInterval *interval,
|
|
guint fps);
|
|
|
|
gboolean _clutter_timeout_interval_prepare (const GTimeVal *current_time,
|
|
ClutterTimeoutInterval *interval,
|
|
gint *delay);
|
|
|
|
gboolean _clutter_timeout_interval_dispatch (ClutterTimeoutInterval *interval,
|
|
GSourceFunc callback,
|
|
gpointer user_data);
|
|
|
|
gint _clutter_timeout_interval_compare_expiration
|
|
(const ClutterTimeoutInterval *a,
|
|
const ClutterTimeoutInterval *b);
|
|
|
|
G_END_DECLS
|
|
|
|
#endif /* __CLUTTER_TIMEOUT_INTERVAL_H__ */
|