1
0
Fork 0
mutter-performance-source/config.h.meson
Christian Hergert 0810238d22 clutter/frame-clock: Use timerfd for clock timing
Currently, ClutterFrameClock uses g_source_set_ready_time() to determine
the usec timing of the next frame. That translates into a poll() with a
millisecond timeout if no trigger occurs to break the poll() out early.

To avoid spinning the CPU, GLib always rounds *up* to the next millisecond
value unless a timeout of 0 was provided by a GSource.

This means that timeouts for the ClutterFrameClock can easily skew beyond
their expected time as the precision is too coarse.

This applies the same concept as  but just for the
ClutterFrameClock. That may be more ideal than adding a timerfd for every
GMainContext, but we'll see if that lands upstream. I wanted to provide
this here because it could easily be cherry-picked in the mean time if
this is found to be useful.

From a timer stability perspective, this improves things from erratically
jumping between 100s and 1000s off of the expected awake time to single
or low double digits.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3636>
2024-03-06 23:10:13 +00:00

134 lines
3.2 KiB
Text

/* The prefix for our gettext translation domains. */
#mesondefine GETTEXT_PACKAGE
/* Version number of package */
#mesondefine VERSION
/* Name of package */
#mesondefine PACKAGE_NAME
/* Version number of package */
#mesondefine PACKAGE_VERSION
/* Search path for plugins */
#mesondefine MUTTER_PLUGIN_DIR
/* */
#mesondefine MUTTER_LOCALEDIR
/* */
#mesondefine MUTTER_LIBEXECDIR
/* */
#mesondefine MUTTER_PKGDATADIR
/* Defined if EGL support is enabled */
#mesondefine HAVE_EGL
/* Defined if EGLDevice support is enabled */
#mesondefine HAVE_EGL_DEVICE
/* Have GLX for rendering */
#mesondefine HAVE_GLX
#mesondefine HAVE_EGL_PLATFORM_XLIB
/* Have GL for rendering */
#mesondefine HAVE_GL
/* Have GLES 2.0 for rendering */
#mesondefine HAVE_GLES2
/* Defined if EGLStream support is enabled */
#mesondefine HAVE_WAYLAND_EGLSTREAM
/* Building with gudev for device type detection */
#mesondefine HAVE_LIBGUDEV
/* Building with libwacom for advanced tablet management */
#mesondefine HAVE_LIBWACOM
/* Building with libsystemd */
#mesondefine HAVE_LIBSYSTEMD
/* Define if you want to enable the native (KMS) backend based on systemd */
#mesondefine HAVE_NATIVE_BACKEND
/* Define if you want to enable Wayland support */
#mesondefine HAVE_WAYLAND
/* Define if you want to enable XWayland support */
#mesondefine HAVE_XWAYLAND
/* Define if you want to enable X11 backend support */
#mesondefine HAVE_X11
/* Define if either XWayland or X11 backend are enabled */
#mesondefine HAVE_X11_CLIENT
/* Defined if screen cast and remote desktop support is enabled */
#mesondefine HAVE_REMOTE_DESKTOP
/* Defined if gnome-desktop is enabled */
#mesondefine HAVE_GNOME_DESKTOP
/* Defined if sound player is enabled */
#mesondefine HAVE_SOUND_PLAYER
/* Building with SM support */
#mesondefine HAVE_SM
/* Building with startup notification support */
#mesondefine HAVE_STARTUP_NOTIFICATION
/* Building with Sysprof profiling support */
#mesondefine HAVE_PROFILER
/* Path to Xwayland executable */
#mesondefine XWAYLAND_PATH
/* Xwayland applications allowed to issue keyboard grabs */
#mesondefine XWAYLAND_GRAB_DEFAULT_ACCESS_RULES
/* XKB base prefix */
#mesondefine XKB_BASE
/* Whether <sys/prctl.h> exists and it defines prctl() */
#mesondefine HAVE_SYS_PRCTL
/* Either <sys/random.h> or <linux/random.h> */
#mesondefine HAVE_SYS_RANDOM
#mesondefine HAVE_LINUX_RANDOM
/* Whether Xwayland has -initfd option */
#mesondefine HAVE_XWAYLAND_INITFD
/* Whether Xwayland has -listenfd option */
#mesondefine HAVE_XWAYLAND_LISTENFD
/* Whether the mkostemp function exists */
#mesondefine HAVE_MKOSTEMP
/* Whether the posix_fallocate function exists */
#mesondefine HAVE_POSIX_FALLOCATE
/* Whether the memfd_create function exists */
#mesondefine HAVE_MEMFD_CREATE
/* Whether the Xwayland -terminate supports a delay */
#mesondefine HAVE_XWAYLAND_TERMINATE_DELAY
/* Whether the Xwayland supports +/-byteswappedclients */
#mesondefine HAVE_XWAYLAND_BYTE_SWAPPED_CLIENTS
/* Defined if libdisplay-info is enabled */
#mesondefine HAVE_LIBDISPLAY_INFO
/* Whether the Xwayland has -enable-ei-portal option */
#mesondefine HAVE_XWAYLAND_ENABLE_EI_PORTAL
/* Supports PangoFt2 */
#mesondefine HAVE_PANGO_FT2
/* Supports timerfd_create/timerfd_settime */
#mesondefine HAVE_TIMERFD