gi-gdk4-4.0.10: Gdk bindings

Copyright | Will Thompson and Iñaki García Etxebarria
License | LGPL-2.1
Maintainer | Iñaki García Etxebarria
Safe Haskell | None
Language | Haskell2010

GI.Gdk.Structs.FrameTimings

Contents

- Exported types
- Methods
  - getComplete
  - getFrameCounter
  - getFrameTime
  - getPredictedPresentationTime
  - getPresentationTime
  - getRefreshInterval
  - getResult
  - ref
  - unref

Description

Holds timing information for a single frame of the application’s displays.

To retrieve `GdkFrameTimings` objects, use `frameClockGetTimings` or `frameClockGetCurrentTimings`. The information in `GdkFrameTimings` 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.

Synopsis

- newtype FrameTimings = FrameTimings (ManagedPtr FrameTimings)
- frameTimingsGetComplete :: (HasCallStack, MonadIO m) => FrameTimings -> m Bool
- frameTimingsGetFrameCounter :: (HasCallStack, MonadIO m) => FrameTimings -> m Int64
- frameTimingsGetFrameTime :: (HasCallStack, MonadIO m) => FrameTimings -> m Int64
- frameTimingsGetPredictedPresentationTime :: (HasCallStack, MonadIO m) => FrameTimings -> m Int64
- frameTimingsGetPresentationTime :: (HasCallStack, MonadIO m) => FrameTimings -> m Int64
- frameTimingsGetRefreshInterval :: (HasCallStack, MonadIO m) => FrameTimings -> m Int64
- frameTimingsGetResult :: (HasCallStack, MonadIO m) => FrameTimings -> m FrameResult
- frameTimingsRef :: (HasCallStack, MonadIO m) => FrameTimings -> m FrameTimings
- frameTimingsUnref :: (HasCallStack, MonadIO m) => FrameTimings -> m ()

# Exported types

newtype FrameTimings Source #

Memory-managed wrapper type.

Constructors

FrameTimings (ManagedPtr FrameTimings) |

#### Instances

Instances details

Eq FrameTimings Source # |
Instance details Defined in GI.Gdk.Structs.FrameTimings Methods (==) :: FrameTimings -> FrameTimings -> Bool Source # (/=) :: FrameTimings -> FrameTimings -> Bool Source #
GBoxed FrameTimings Source # |
Instance details Defined in GI.Gdk.Structs.FrameTimings
ManagedPtrNewtype FrameTimings Source # |
Instance details Defined in GI.Gdk.Structs.FrameTimings Methods toManagedPtr :: FrameTimings -> ManagedPtr FrameTimings Source #
TypedObject FrameTimings Source # |
Instance details Defined in GI.Gdk.Structs.FrameTimings Methods glibType :: IO GType Source #
HasParentTypes FrameTimings Source # |
Instance details Defined in GI.Gdk.Structs.FrameTimings
IsGValue (Maybe FrameTimings) Source # | Convert `FrameTimings` to and from `GValue`. See `toGValue` and `fromGValue`.
Instance details Defined in GI.Gdk.Structs.FrameTimings Methods gvalueGType_ :: IO GType Source # gvalueSet_ :: Ptr GValue -> Maybe FrameTimings -> IO () Source # gvalueGet_ :: Ptr GValue -> IO (Maybe FrameTimings) Source #
type ParentTypes FrameTimings Source # |
Instance details Defined in GI.Gdk.Structs.FrameTimings type ParentTypes FrameTimings = '[] :: [Type]

# Methods

### Click to display all available methods, including inherited ones

Expand

#### Methods

ref, unref.

#### Getters

getComplete, getFrameCounter, getFrameTime, getPredictedPresentationTime, getPresentationTime, getRefreshInterval, getResult.

#### Setters

None.

## getComplete

frameTimingsGetComplete Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> FrameTimings | `timings`: a `GdkFrameTimings`
-> m Bool | Returns: `True` if all information that will be available for the frame has been filled in.

Returns whether `timings` are complete.

The timing information in a `GdkFrameTimings` 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 `GdkFrameTimings` 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 this function returns `True` for a frame, you can be certain that no further values will become available and be stored in the `GdkFrameTimings`.

## getFrameCounter

frameTimingsGetFrameCounter Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> FrameTimings | `timings`: a `GdkFrameTimings`
-> m Int64 | Returns: the frame counter value for this frame

Gets the frame counter value of the `GdkFrameClock` when this frame was drawn.

## getFrameTime

frameTimingsGetFrameTime Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> FrameTimings | `timings`: A `GdkFrameTimings`
-> m Int64 | Returns: the frame time for the frame, in the timescale of `getMonotonicTime`

Returns the frame time for the frame.

This is the time value that is typically used to time animations for the frame. See `frameClockGetFrameTime`.

## getPredictedPresentationTime

frameTimingsGetPredictedPresentationTime Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> FrameTimings | `timings`: a `GdkFrameTimings`
-> m Int64 | Returns: The predicted time at which the frame will be presented, in the timescale of `getMonotonicTime`, or 0 if no predicted presentation time is available.

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 `frameTimingsGetPresentationTime`, which is only available after the frame has been presented.

In general, if you are simply animating, you should use `frameClockGetFrameTime` 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.

## getPresentationTime

frameTimingsGetPresentationTime Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> FrameTimings | `timings`: a `GdkFrameTimings`
-> m Int64 | Returns: the time the frame was displayed to the user, in the timescale of `getMonotonicTime`, or 0 if no presentation time is available. See `frameTimingsGetComplete`

Reurns the presentation time.

This is the time at which the frame became visible to the user.

## getRefreshInterval

frameTimingsGetRefreshInterval Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> FrameTimings | `timings`: a `GdkFrameTimings`
-> m Int64 | Returns: the refresh interval of the display, in microseconds, or 0 if the refresh interval is not available. See `frameTimingsGetComplete`.

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”.

## getResult

frameTimingsGetResult Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> FrameTimings | `timings`: a `GdkFrameTimings`
-> m FrameResult | Returns: The result of the frame these timings have been recorded for.

Gets the result of the frame cycle that recorded these timings.

The timing information in a `GdkFrameTimings` 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 `GdkFrameTimings` 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. Looking at the result of the timings gives an explanation for why a value is not available.

Since: 4.24

## ref

frameTimingsRef Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> FrameTimings | `timings`: a `GdkFrameTimings`
-> m FrameTimings | Returns: `timings`

Increases the reference count of `timings`.

## unref

frameTimingsUnref Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> FrameTimings | `timings`: a `GdkFrameTimings`
-> m () |

Decreases the reference count of `timings`.

If `timings` is no longer referenced, it will be freed.