diff options
| author | Sunderland93 <[email protected]> | 2026-08-01 11:17:58 +0400 |
|---|---|---|
| committer | Luke from DC <[email protected]> | 2026-08-19 19:15:44 +0000 |
| commit | 537e98c4ca8dc78f25d796af12f7f3a25b070e9b (patch) | |
| tree | c55a8fc7ed9ce3f8178ce50eb4a16f2a4c16ce85 /plugins/xsettings | |
| parent | 7a53cc78e1418f37593055fa8c7a1ce0cbd5643f (diff) | |
| download | mate-settings-daemon-537e98c4ca8dc78f25d796af12f7f3a25b070e9b.tar.bz2 mate-settings-daemon-537e98c4ca8dc78f25d796af12f7f3a25b070e9b.tar.xz | |
Initial Wayland support
Diffstat (limited to 'plugins/xsettings')
| -rw-r--r-- | plugins/xsettings/msd-xsettings-manager.c | 51 | ||||
| -rw-r--r-- | plugins/xsettings/wm-common.c | 23 |
2 files changed, 54 insertions, 20 deletions
diff --git a/plugins/xsettings/msd-xsettings-manager.c b/plugins/xsettings/msd-xsettings-manager.c index 86ff376..6656ccb 100644 --- a/plugins/xsettings/msd-xsettings-manager.c +++ b/plugins/xsettings/msd-xsettings-manager.c @@ -36,7 +36,9 @@ #include <glib.h> #include <glib/gi18n.h> #include <gdk/gdk.h> +#ifdef GDK_WINDOWING_X11 #include <gdk/gdkx.h> +#endif /* GDK_WINDOWING_X11 */ #include <gtk/gtk.h> #include <gio/gio.h> @@ -108,6 +110,7 @@ struct _TranslationEntry { struct MateXSettingsManagerPrivate { XSettingsManager **managers; + Display *xdisplay; GHashTable *gsettings; GSettings *gsettings_font; GSettings *plugin_settings; @@ -249,6 +252,10 @@ get_window_scale_auto (void) display = gdk_display_get_default (); monitor = gdk_display_get_primary_monitor (display); + /* If no monitor is available, use the current value as the default */ + if (monitor == NULL) + return 1; + /* Use current value as the default */ window_scale = 1; @@ -322,10 +329,10 @@ get_dpi_from_x_server (void) if (screen != NULL) { double width_dpi, height_dpi; - Screen *xscreen = gdk_x11_screen_get_xscreen (screen); - - width_dpi = dpi_from_pixels_and_mm (WidthOfScreen (xscreen), WidthMMOfScreen (xscreen)); - height_dpi = dpi_from_pixels_and_mm (HeightOfScreen (xscreen), HeightMMOfScreen (xscreen)); + width_dpi = dpi_from_pixels_and_mm (gdk_screen_get_width (screen), + gdk_screen_get_width_mm (screen)); + height_dpi = dpi_from_pixels_and_mm (gdk_screen_get_height (screen), + gdk_screen_get_height_mm (screen)); if (width_dpi < DPI_LOW_REASONABLE_VALUE || width_dpi > DPI_HIGH_REASONABLE_VALUE || height_dpi < DPI_LOW_REASONABLE_VALUE || height_dpi > DPI_HIGH_REASONABLE_VALUE) { @@ -628,7 +635,11 @@ xft_settings_set_xresources (MateXftSettings *settings) /* get existing properties */ dpy = XOpenDisplay (NULL); - g_return_if_fail (dpy != NULL); + if (dpy == NULL) { + g_warning ("Unable to open X display for X resources"); + mate_settings_profile_end (NULL); + return; + } add_string = g_string_new (XResourceManagerString (dpy)); g_debug("xft_settings_set_xresources: orig res '%s'", add_string->str); @@ -871,29 +882,30 @@ terminate_cb (void *data) static gboolean setup_xsettings_managers (MateXSettingsManager *manager) { - GdkDisplay *display; - gboolean res; - gboolean terminated; + Display *xdisplay; + gboolean res; + gboolean terminated; - display = gdk_display_get_default (); + xdisplay = XOpenDisplay (NULL); + if (xdisplay == NULL) { + g_warning ("Unable to open X display; xsettings manager disabled"); + return FALSE; + } - res = xsettings_manager_check_running (gdk_x11_display_get_xdisplay (display), - gdk_x11_screen_get_screen_number (gdk_screen_get_default ())); + res = xsettings_manager_check_running (xdisplay, DefaultScreen (xdisplay)); if (res) { g_warning ("You can only run one xsettings manager at a time; exiting"); + XCloseDisplay (xdisplay); return FALSE; } + manager->priv->xdisplay = xdisplay; manager->priv->managers = g_new0 (XSettingsManager *, 2); terminated = FALSE; - GdkScreen *screen; - - screen = gdk_display_get_default_screen (display); - - manager->priv->managers [0] = xsettings_manager_new (gdk_x11_display_get_xdisplay (display), - gdk_x11_screen_get_screen_number (screen), + manager->priv->managers [0] = xsettings_manager_new (xdisplay, + DefaultScreen (xdisplay), terminate_cb, &terminated); if (! manager->priv->managers [0]) { @@ -1011,6 +1023,11 @@ mate_xsettings_manager_stop (MateXSettingsManager *manager) p->managers = NULL; } + if (p->xdisplay != NULL) { + XCloseDisplay (p->xdisplay); + p->xdisplay = NULL; + } + if (p->gsettings != NULL) { g_hash_table_destroy (p->gsettings); p->gsettings = NULL; diff --git a/plugins/xsettings/wm-common.c b/plugins/xsettings/wm-common.c index 8b5be13..804a727 100644 --- a/plugins/xsettings/wm-common.c +++ b/plugins/xsettings/wm-common.c @@ -1,11 +1,13 @@ - #include <X11/Xatom.h> -#include <gdk/gdkx.h> -#include <gdk/gdk.h> #include <string.h> #include <glib.h> #include <glib-object.h> #include "wm-common.h" +#ifdef GDK_WINDOWING_X11 +#include <X11/Xatom.h> +#include <gdk/gdkx.h> +#include <gdk/gdk.h> + /* Our WM Window */ static Window wm_window = None; @@ -112,3 +114,18 @@ wm_common_update_window () { update_wm_window(); } + +#else /* !GDK_WINDOWING_X11 */ + +gchar* +wm_common_get_current_window_manager (void) +{ + return g_strdup (WM_COMMON_UNKNOWN); +} + +void +wm_common_update_window () +{ +} + +#endif /* GDK_WINDOWING_X11 */ |
