Gdk.FrameClock¶
- Subclasses:
- None 
Methods¶
- Inherited:
- Structs:
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | 
Virtual Methods¶
- Inherited:
Properties¶
None
Signals¶
- Inherited:
| Name | Short Description | 
|---|---|
| This signal ends processing of the frame. | |
| Begins processing of the frame. | |
| Used to flush pending motion events that are being batched up and compressed together. | |
| Emitted as the second step of toolkit and application processing of the frame. | |
| Emitted as the third step of toolkit and application processing of the frame. | |
| Emitted after processing of the frame is finished. | |
| Emitted as the first step of toolkit and application processing of the frame. | 
Fields¶
- Inherited:
Class Details¶
- class Gdk.FrameClock(**kwargs)¶
- Bases:
- Abstract:
- Yes 
- Structure:
 - Tells the application when to update and repaint a surface. - This may be synced to the vertical refresh rate of the monitor, for example. Even when the frame clock uses a simple timer rather than a hardware-based vertical sync, the frame clock helps because it ensures everything paints at the same time (reducing the total number of frames). - The frame clock can also automatically stop painting when it knows the frames will not be visible, or scale back animation framerates. - GdkFrameClockis designed to be compatible with an OpenGL-based implementation or with mozRequestAnimationFrame in Firefox, for example.- A frame clock is idle until someone requests a frame with [method`Gdk`.FrameClock.request_phase]. At some later point that makes sense for the synchronization being implemented, the clock will process a frame and emit signals for each phase that has been requested. (See the signals of the - GdkFrameClockclass for documentation of the phases.- Gdk.FrameClockPhase.UPDATEand the [signal`Gdk`.FrameClock::update] signal are most interesting for application writers, and are used to update the animations, using the frame time given by [method`Gdk`.FrameClock.get_frame_time].- The frame time is reported in microseconds and generally in the same timescale as - GLib.get_monotonic_time(), however, it is not the same as- GLib.get_monotonic_time(). The frame time does not advance during the time a frame is being painted, and outside of a frame, an attempt is made so that all calls to [method`Gdk`.FrameClock.get_frame_time] that are called at a “similar” time get the same value. This means that if different animations are timed by looking at the difference in time between an initial value from [method`Gdk`.FrameClock.get_frame_time] and the value inside the [signal`Gdk`.FrameClock::update] signal of the clock, they will stay exactly synchronized.- begin_updating()[source]¶
- Starts updates for an animation. - Until a matching call to [method`Gdk`.FrameClock.end_updating] is made, the frame clock will continually request a new frame with the - Gdk.FrameClockPhase.UPDATEphase. This function may be called multiple times and frames will be requested until- Gdk.FrameClock.end_updating() is called the same number of times.
 - end_updating()[source]¶
- Stops updates for an animation. - See the documentation for [method`Gdk`.FrameClock.begin_updating]. 
 - get_current_timings()[source]¶
- Returns:
- the - GdkFrameTimingsfor the frame currently being processed, or even no frame is being processed, for the previous frame. Before any frames have been processed, returns- None.
- Return type:
 - Gets the frame timings for the current frame. 
 - get_fps()[source]¶
- Returns:
- the current fps, as a - double
- Return type:
 - Calculates the current frames-per-second, based on the frame timings of self. 
 - get_frame_counter()[source]¶
- Returns:
- inside frame processing, the value of the frame counter for the current frame. Outside of frame processing, the frame counter for the last frame. 
- Return type:
 - GdkFrameClockmaintains a 64-bit counter that increments for each frame drawn.
 - get_frame_time()[source]¶
- Returns:
- a timestamp in microseconds, in the timescale of of - GLib.get_monotonic_time().
- Return type:
 - Gets the time that should currently be used for animations. - Inside the processing of a frame, it’s the time used to compute the animation position of everything in a frame. Outside of a frame, it’s the time of the conceptual “previous frame,” which may be either the actual previous frame time, or if that’s too old, an updated time. 
 - get_history_start()[source]¶
- Returns:
- the frame counter value for the oldest frame that is available in the internal frame history of the - GdkFrameClock
- Return type:
 - Returns the frame counter for the oldest frame available in history. - GdkFrameClockinternally keeps a history of- GdkFrameTimingsobjects for recent frames that can be retrieved with [method`Gdk`.FrameClock.get_timings]. The set of stored frames is the set from the counter values given by [method`Gdk`.FrameClock.get_history_start] and [method`Gdk`.FrameClock.get_frame_counter], inclusive.
 - get_refresh_info(base_time)[source]¶
- Parameters:
- base_time ( - int) – base time for determining a presentaton time
- Returns:
- refresh_interval_return:
- a location to store the determined refresh interval, or - None. A default refresh interval of 1/60th of a second will be stored if no history is present.
- presentation_time_return:
- a location to store the next candidate presentation time after the given base time. 0 will be will be stored if no history is present. 
 
- Return type:
- (refresh_interval_return: - int, presentation_time_return:- int)
 - Predicts a presentation time, based on history. - Using the frame history stored in the frame clock, finds the last known presentation time and refresh interval, and assuming that presentation times are separated by the refresh interval, predicts a presentation time that is a multiple of the refresh interval after the last presentation time, and later than base_time. 
 - get_timings(frame_counter)[source]¶
- Parameters:
- frame_counter ( - int) – the frame counter value identifying the frame to be received
- Returns:
- the - GdkFrameTimingsobject for the specified frame, or- Noneif it is not available
- Return type:
 - Retrieves a - GdkFrameTimingsobject holding timing information for the current frame or a recent frame.- The - GdkFrameTimingsobject may not yet be complete: see [method`Gdk`.FrameTimings.get_complete] and [method`Gdk`.FrameClock.get_history_start].
 - request_phase(phase)[source]¶
- Parameters:
- phase ( - Gdk.FrameClockPhase) – the phase that is requested
 - Asks the frame clock to run a particular phase. - The signal corresponding the requested phase will be emitted the next time the frame clock processes. Multiple calls to - Gdk.FrameClock.request_phase() will be combined together and only one frame processed. If you are displaying animated content and want to continually request the- Gdk.FrameClockPhase.UPDATEphase for a period of time, you should use [method`Gdk`.FrameClock.begin_updating] instead, since this allows GTK to adjust system parameters to get maximally smooth animations.
 
Signal Details¶
- Gdk.FrameClock.signals.after_paint(frame_clock)¶
- Signal Name:
- after-paint
- Flags:
- Parameters:
- frame_clock ( - Gdk.FrameClock) – The object which received the signal
 - This signal ends processing of the frame. - Applications should generally not handle this signal. 
- Gdk.FrameClock.signals.before_paint(frame_clock)¶
- Signal Name:
- before-paint
- Flags:
- Parameters:
- frame_clock ( - Gdk.FrameClock) – The object which received the signal
 - Begins processing of the frame. - Applications should generally not handle this signal. 
- Gdk.FrameClock.signals.flush_events(frame_clock)¶
- Signal Name:
- flush-events
- Flags:
- Parameters:
- frame_clock ( - Gdk.FrameClock) – The object which received the signal
 - Used to flush pending motion events that are being batched up and compressed together. - Applications should not handle this signal. 
- Gdk.FrameClock.signals.layout(frame_clock)¶
- Signal Name:
- layout
- Flags:
- Parameters:
- frame_clock ( - Gdk.FrameClock) – The object which received the signal
 - Emitted as the second step of toolkit and application processing of the frame. - Any work to update sizes and positions of application elements should be performed. GTK normally handles this internally. 
- Gdk.FrameClock.signals.paint(frame_clock)¶
- Signal Name:
- paint
- Flags:
- Parameters:
- frame_clock ( - Gdk.FrameClock) – The object which received the signal
 - Emitted as the third step of toolkit and application processing of the frame. - The frame is repainted. GDK normally handles this internally and emits [signal`Gdk`.Surface::render] signals which are turned into GtkWidget::snapshot signals by GTK. 
- Gdk.FrameClock.signals.resume_events(frame_clock)¶
- Signal Name:
- resume-events
- Flags:
- Parameters:
- frame_clock ( - Gdk.FrameClock) – The object which received the signal
 - Emitted after processing of the frame is finished. - This signal is handled internally by GTK to resume normal event processing. Applications should not handle this signal. 
- Gdk.FrameClock.signals.update(frame_clock)¶
- Signal Name:
- update
- Flags:
- Parameters:
- frame_clock ( - Gdk.FrameClock) – The object which received the signal
 - Emitted as the first step of toolkit and application processing of the frame. - Animations should be updated using [method`Gdk`.FrameClock.get_frame_time]. Applications can connect directly to this signal, or use gtk_widget_add_tick_callback() as a more convenient interface.