diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2018-12-30 12:58:31 +0100 |
---|---|---|
committer | Jonas Ã…dahl <jadahl@gmail.com> | 2019-05-24 15:30:30 +0000 |
commit | 0200f4fcd9bc5921f15a8547cce6c5ba85f4cea9 (patch) | |
tree | 49bd4fb501331caa067fefea8feca84b5e0533da /src/x11/meta-x11-display.c | |
parent | 439afb3f19adff751d8a643dc57e07046190483a (diff) | |
download | mutter-0200f4fcd9bc5921f15a8547cce6c5ba85f4cea9.tar.gz |
x11: Move focus sentinel to MetaX11Display
This focus sentinel is a mechanism to avoid some X11-specific race
conditions in focus-follows-pointer, using X11 mechanisms. Move it to
MetaX11Display altogether.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/420
Diffstat (limited to 'src/x11/meta-x11-display.c')
-rw-r--r-- | src/x11/meta-x11-display.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/x11/meta-x11-display.c b/src/x11/meta-x11-display.c index af8ae7a8d..2aece19a8 100644 --- a/src/x11/meta-x11-display.c +++ b/src/x11/meta-x11-display.c @@ -2177,3 +2177,34 @@ prefs_changed_callback (MetaPreference pref, set_workspace_names (x11_display); } } + +void +meta_x11_display_increment_focus_sentinel (MetaX11Display *x11_display) +{ + unsigned long data[1]; + + data[0] = meta_display_get_current_time (x11_display->display); + + XChangeProperty (x11_display->xdisplay, + x11_display->xroot, + x11_display->atom__MUTTER_SENTINEL, + XA_CARDINAL, + 32, PropModeReplace, (guchar*) data, 1); + + x11_display->sentinel_counter += 1; +} + +void +meta_x11_display_decrement_focus_sentinel (MetaX11Display *x11_display) +{ + x11_display->sentinel_counter -= 1; + + if (x11_display->sentinel_counter < 0) + x11_display->sentinel_counter = 0; +} + +gboolean +meta_x11_display_focus_sentinel_clear (MetaX11Display *x11_display) +{ + return (x11_display->sentinel_counter == 0); +} |