diff options
Diffstat (limited to 'src/compositor/compositor-private.h')
-rw-r--r-- | src/compositor/compositor-private.h | 43 |
1 files changed, 39 insertions, 4 deletions
diff --git a/src/compositor/compositor-private.h b/src/compositor/compositor-private.h index 4582792d4..f40db9a05 100644 --- a/src/compositor/compositor-private.h +++ b/src/compositor/compositor-private.h @@ -21,8 +21,9 @@ struct _MetaCompositor guint stage_presented_id; guint stage_after_paint_id; - gint64 server_time_query_time; - gint64 server_time_offset; + gboolean xserver_uses_monotonic_clock; + int64_t xserver_time_query_time_us; + int64_t xserver_time_offset_us; guint server_time_is_monotonic_time : 1; guint no_mipmaps : 1; @@ -61,8 +62,8 @@ void meta_end_modal_for_plugin (MetaCompositor *compositor, MetaPlugin *plugin, guint32 timestamp); -gint64 meta_compositor_monotonic_time_to_server_time (MetaDisplay *display, - gint64 monotonic_time); +int64_t meta_compositor_monotonic_to_high_res_xserver_time (MetaCompositor *compositor, + int64_t monotonic_time); void meta_compositor_flash_window (MetaCompositor *compositor, MetaWindow *window); @@ -75,4 +76,38 @@ MetaInhibitShortcutsDialog * meta_compositor_create_inhibit_shortcuts_dialog (Me void meta_compositor_unmanage_window_actors (MetaCompositor *compositor); +static inline int64_t +us (int64_t us) +{ + return us; +} + +static inline int64_t +ms2us (int64_t ms) +{ + return us (ms * 1000); +} + +static inline int64_t +s2us (int64_t s) +{ + return ms2us(s * 1000); +} + +/* + * This function takes a 64 bit time stamp from the monotonic clock, and clamps + * it to the scope of the X server clock, without losing the granularity. + */ +static inline int64_t +meta_translate_to_high_res_xserver_time (int64_t time_us) +{ + int64_t us; + int64_t ms; + + us = time_us % 1000; + ms = time_us / 1000; + + return ms2us (ms & 0xffffffff) + us; +} + #endif /* META_COMPOSITOR_PRIVATE_H */ |