#ifdef G_OS_WIN32
LARGE_INTEGER start;
LARGE_INTEGER frequency;
+ guint64 ratio;
#endif /* G_OS_WIN32 */
#ifdef __APPLE__
struct mach_timebase_info mach_timebase;
#endif
};
-#define GST_SYSTEM_CLOCK_GET_PRIVATE(obj) \
- (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GST_TYPE_SYSTEM_CLOCK, \
- GstSystemClockPrivate))
-
#ifdef HAVE_POSIX_TIMERS
# ifdef HAVE_MONOTONIC_CLOCK
# define DEFAULT_CLOCK_TYPE GST_CLOCK_TYPE_MONOTONIC
/* static guint gst_system_clock_signals[LAST_SIGNAL] = { 0 }; */
#define gst_system_clock_parent_class parent_class
-G_DEFINE_TYPE (GstSystemClock, gst_system_clock, GST_TYPE_CLOCK);
+G_DEFINE_TYPE_WITH_PRIVATE (GstSystemClock, gst_system_clock, GST_TYPE_CLOCK);
static void
gst_system_clock_class_init (GstSystemClockClass * klass)
gobject_class = (GObjectClass *) klass;
gstclock_class = (GstClockClass *) klass;
- g_type_class_add_private (klass, sizeof (GstSystemClockPrivate));
-
gobject_class->dispose = gst_system_clock_dispose;
gobject_class->set_property = gst_system_clock_set_property;
gobject_class->get_property = gst_system_clock_get_property;
GST_CLOCK_FLAG_CAN_DO_PERIODIC_SYNC |
GST_CLOCK_FLAG_CAN_DO_PERIODIC_ASYNC);
- clock->priv = priv = GST_SYSTEM_CLOCK_GET_PRIVATE (clock);
+ clock->priv = priv = gst_system_clock_get_instance_private (clock);
priv->clock_type = DEFAULT_CLOCK_TYPE;
priv->timer = gst_poll_new_timer ();
if (priv->frequency.QuadPart != 0)
/* we take a base time so that time starts from 0 to ease debugging */
QueryPerformanceCounter (&priv->start);
+ priv->ratio = GST_SECOND / priv->frequency.QuadPart;
#endif /* G_OS_WIN32 */
#ifdef __APPLE__
/**
* gst_system_clock_set_default:
- * @new_clock: a #GstClock
+ * @new_clock: (allow-none): a #GstClock
*
* Sets the default system clock that can be obtained with
* gst_system_clock_obtain().
/* we prefer the highly accurate performance counters on windows */
QueryPerformanceCounter (&now);
- return gst_util_uint64_scale (now.QuadPart - sysclock->priv->start.QuadPart,
- GST_SECOND, sysclock->priv->frequency.QuadPart);
+ return ((now.QuadPart -
+ sysclock->priv->start.QuadPart) * sysclock->priv->ratio);
} else
#endif /* G_OS_WIN32 */
#if !defined HAVE_POSIX_TIMERS || !defined HAVE_CLOCK_GETTIME