core: Add a copy of GDK_PRIORITY_EVENTS

Quoting Carlos:
The META_PRIORITY_EVENTS ± 1 happening below are in order to set these idles
and timeouts in a priority that is relative to the literal GDK event priority,
making those diverge is a likely way to sneakily break things.
But that's unlikely to happen, and decoupling mutter from GTK further
should make it moot, so perhaps it's alright after all.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2407>
This commit is contained in:
Bilal Elmoussaoui 2022-05-09 11:48:57 +02:00
parent 809eaf6e91
commit abef37f5ee
4 changed files with 16 additions and 2 deletions

View File

@ -25,6 +25,14 @@
#include "meta/display.h" #include "meta/display.h"
/**
* META_PRIORITY_EVENTS: (value 0)
*
* This is the priority that events from the X server are given in the main loop.
*/
#define META_PRIORITY_EVENTS (G_PRIORITY_DEFAULT)
void meta_display_init_events (MetaDisplay *display); void meta_display_init_events (MetaDisplay *display);
void meta_display_free_events (MetaDisplay *display); void meta_display_free_events (MetaDisplay *display);

View File

@ -126,6 +126,9 @@ test_client = executable('mutter-test-client',
gio_unix_dep, gio_unix_dep,
x11_dep, x11_dep,
xext_dep, xext_dep,
graphene_dep,
json_glib_dep,
gsettings_desktop_schemas_dep,
], ],
install: have_installed_tests, install: have_installed_tests,
install_dir: mutter_installed_tests_libexecdir, install_dir: mutter_installed_tests_libexecdir,

View File

@ -28,6 +28,8 @@
#include <string.h> #include <string.h>
#include <X11/extensions/sync.h> #include <X11/extensions/sync.h>
#include "core/events.h"
const char *client_id = "0"; const char *client_id = "0";
static gboolean wayland; static gboolean wayland;
GHashTable *windows; GHashTable *windows;
@ -156,7 +158,7 @@ ensure_xsource_handler (GdkDisplay *gdkdisplay)
x_source->event_poll_fd.events = G_IO_IN; x_source->event_poll_fd.events = G_IO_IN;
g_source_add_poll (source, &x_source->event_poll_fd); g_source_add_poll (source, &x_source->event_poll_fd);
g_source_set_priority (source, GDK_PRIORITY_EVENTS - 1); g_source_set_priority (source, META_PRIORITY_EVENTS - 1);
g_source_set_can_recurse (source, TRUE); g_source_set_can_recurse (source, TRUE);
g_source_attach (source, NULL); g_source_attach (source, NULL);

View File

@ -31,6 +31,7 @@
#include "clutter/clutter.h" #include "clutter/clutter.h"
#include "cogl/cogl-egl.h" #include "cogl/cogl-egl.h"
#include "compositor/meta-surface-actor-wayland.h" #include "compositor/meta-surface-actor-wayland.h"
#include "core/events.h"
#include "core/meta-context-private.h" #include "core/meta-context-private.h"
#include "wayland/meta-wayland-activation.h" #include "wayland/meta-wayland-activation.h"
#include "wayland/meta-wayland-buffer.h" #include "wayland/meta-wayland-buffer.h"
@ -594,7 +595,7 @@ meta_wayland_compositor_new (MetaContext *context)
* relating to X clients when we don't know what's happened to them * relating to X clients when we don't know what's happened to them
* according to the X protocol. * according to the X protocol.
*/ */
g_source_set_priority (wayland_event_source, GDK_PRIORITY_EVENTS + 1); g_source_set_priority (wayland_event_source, META_PRIORITY_EVENTS + 1);
g_source_attach (wayland_event_source, NULL); g_source_attach (wayland_event_source, NULL);
compositor->source = wayland_event_source; compositor->source = wayland_event_source;
g_source_unref (wayland_event_source); g_source_unref (wayland_event_source);