------------------------------------------------------------------------------
-- --
-- Copyright (C) 1998-2000 E. Briot, J. Brobecker and A. Charlet --
-- Copyright (C) 2000-2014, AdaCore --
-- --
-- This library is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
-- Software Foundation; either version 3, 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 MERCHAN- --
-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. --
-- --
-- As a special exception under Section 7 of GPL version 3, you are granted --
-- additional permissions described in the GCC Runtime Library Exception, --
-- version 3.1, as published by the Free Software Foundation. --
-- --
-- You should have received a copy of the GNU General Public License and --
-- a copy of the GCC Runtime Library Exception along with this program; --
-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
-- <http://www.gnu.org/licenses/>. --
-- --
------------------------------------------------------------------------------
-- <description>
-- A Gdk.Frame_Timings.Gdk_Frame_Timings object holds timing information for
-- a single frame of the application's displays. To retrieve
-- Gdk.Frame_Timings.Gdk_Frame_Timings objects, use
-- Gdk.Frame_Clock.Get_Timings or Gdk.Frame_Clock.Get_Current_Timings. The
-- information in Gdk.Frame_Timings.Gdk_Frame_Timings is useful for precise
-- synchronization of video with the event or audio streams, and for measuring
-- quality metrics for the application's display, such as latency and jitter.
--
-- </description>
pragma Ada_2005;
pragma Warnings (Off, "*is already use-visible*");
with Glib; use Glib;
package Gdk.Frame_Timings is
type Gdk_Frame_Timings is new Glib.C_Boxed with null record;
Null_Gdk_Frame_Timings : constant Gdk_Frame_Timings;
function From_Object (Object : System.Address) return Gdk_Frame_Timings;
function From_Object_Free (B : access Gdk_Frame_Timings'Class) return Gdk_Frame_Timings;
pragma Inline (From_Object_Free, From_Object);
------------------
-- Constructors --
------------------
function Get_Type return Glib.GType;
pragma Import (C, Get_Type, "gdk_frame_timings_get_type");
-------------
-- Methods --
-------------
function Get_Complete (Self : Gdk_Frame_Timings) return Boolean;
-- The timing information in a Gdk.Frame_Timings.Gdk_Frame_Timings is
-- filled in incrementally as the frame as drawn and passed off to the
-- window system for processing and display to the user. The accessor
-- functions for Gdk.Frame_Timings.Gdk_Frame_Timings can return 0 to
-- indicate an unavailable value for two reasons: either because the
-- information is not yet available, or because it isn't available at all.
-- Once gdk_frame_timings_complete returns True for a frame, you can be
-- certain that no further values will become available and be stored in
-- the Gdk.Frame_Timings.Gdk_Frame_Timings.
-- Since: gtk+ 3.8
function Get_Frame_Counter (Self : Gdk_Frame_Timings) return Gint64;
-- Gets the frame counter value of the Gdk.Frame_Clock.Gdk_Frame_Clock
-- when this this frame was drawn.
-- Since: gtk+ 3.8
function Get_Frame_Time (Self : Gdk_Frame_Timings) return Gint64;
-- Returns the frame time for the frame. This is the time value that is
-- typically used to time animations for the frame. See
-- Gdk.Frame_Clock.Get_Frame_Time.
function Get_Predicted_Presentation_Time
(Self : Gdk_Frame_Timings) return Gint64;
-- Gets the predicted time at which this frame will be displayed. Although
-- no predicted time may be available, if one is available, it will be
-- available while the frame is being generated, in contrast to
-- Gdk.Frame_Timings.Get_Presentation_Time, which is only available after
-- the frame has been presented. In general, if you are simply animating,
-- you should use Gdk.Frame_Clock.Get_Frame_Time rather than this function,
-- but this function is useful for applications that want exact control
-- over latency. For example, a movie player may want this information for
-- Audio/Video synchronization.
-- Since: gtk+ 3.8
function Get_Presentation_Time (Self : Gdk_Frame_Timings) return Gint64;
-- Reurns the presentation time. This is the time at which the frame
-- became visible to the user.
-- Since: gtk+ 3.8
function Get_Refresh_Interval (Self : Gdk_Frame_Timings) return Gint64;
-- Gets the natural interval between presentation times for the display
-- that this frame was displayed on. Frame presentation usually happens
-- during the "vertical blanking interval".
-- Since: gtk+ 3.8
function Ref (Self : Gdk_Frame_Timings) return Gdk_Frame_Timings;
-- Increases the reference count of Timings.
-- Since: gtk+ 3.8
procedure Unref (Self : Gdk_Frame_Timings);
-- Decreases the reference count of Timings. If Timings is no longer
-- referenced, it will be freed.
-- Since: gtk+ 3.8
private
Null_Gdk_Frame_Timings : constant Gdk_Frame_Timings := (Glib.C_Boxed with null record);
end Gdk.Frame_Timings;