From db7e36617bca979517a6cc6bc3d45f9e85982e56 Mon Sep 17 00:00:00 2001 From: Viktor Odintsev <zakhams@gmail.com> Date: Sun, 2 Jul 2017 18:32:42 +0300 Subject: [PATCH] Remove deprecated gdk_screen_make_display_name --- common/xfwm-common.c | 37 +++++++++++++++++++++++++++++++++++++ common/xfwm-common.h | 2 ++ src/screen.c | 2 +- src/terminate.c | 18 +++++++++++++++--- 4 files changed, 55 insertions(+), 4 deletions(-) diff --git a/common/xfwm-common.c b/common/xfwm-common.c index a89fc9307..fd698465e 100644 --- a/common/xfwm-common.c +++ b/common/xfwm-common.c @@ -123,3 +123,40 @@ xfwm_get_n_monitors (GdkScreen *screen) return gdk_screen_get_n_monitors (screen); #endif } + + + +static gchar * +substitute_screen_number (const gchar *display_name, + gint screen_number) +{ + GString *str; + gchar *p; + + str = g_string_new (display_name); + + p = strrchr (str->str, '.'); + if (p != NULL && p > strchr (str->str, ':')) + { + /* remove screen number from string */ + g_string_truncate (str, p - str->str); + } + + g_string_append_printf (str, ".%d", screen_number); + + return g_string_free (str, FALSE); +} + + + +gchar * +xfwm_make_display_name (GdkScreen *screen) +{ + const gchar *name; + gint number; + + name = gdk_display_get_name (gdk_screen_get_display (screen)); + number = gdk_x11_screen_get_screen_number (screen); + + return substitute_screen_number (name, number); +} diff --git a/common/xfwm-common.h b/common/xfwm-common.h index 742767fb5..e2e8c97b4 100644 --- a/common/xfwm-common.h +++ b/common/xfwm-common.h @@ -38,4 +38,6 @@ void xfwm_get_primary_monitor_geometry (GdkScreen *screen, gint xfwm_get_n_monitors (GdkScreen *screen); +gchar *xfwm_make_display_name (GdkScreen *screen); + #endif /* !__COMMON_H__ */ diff --git a/src/screen.c b/src/screen.c index 0d80916d0..609ca9431 100644 --- a/src/screen.c +++ b/src/screen.c @@ -92,7 +92,7 @@ myScreenSetWMAtom (ScreenInfo *screen_info, gboolean replace_wm) display_info = screen_info->display_info; g_snprintf (selection, sizeof (selection), "WM_S%d", screen_info->screen); wm_sn_atom = XInternAtom (display_info->dpy, selection, FALSE); - display_name = gdk_screen_make_display_name (screen_info->gscr); + display_name = xfwm_make_display_name (screen_info->gscr); wm_name = gdk_x11_screen_get_window_manager_name (screen_info->gscr); XSync (display_info->dpy, FALSE); diff --git a/src/terminate.c b/src/terminate.c index 6e83d4b0e..c1d8ff4c2 100644 --- a/src/terminate.c +++ b/src/terminate.c @@ -29,6 +29,8 @@ #include <unistd.h> #include <errno.h> +#include <common/xfwm-common.h> + #include "client.h" #include "terminate.h" @@ -91,6 +93,14 @@ terminateProcessIO (GIOChannel *channel, return FALSE; } +static void +terminateShowDialogSetEnvironment (gpointer user_data) +{ + GdkScreen *screen = user_data; + + g_setenv ("DISPLAY", xfwm_make_display_name (screen), TRUE); +} + gboolean terminateShowDialog (Client *c) { @@ -116,9 +126,11 @@ terminateShowDialog (Client *c) argv[3] = NULL; err = NULL; - if (!gdk_spawn_on_screen_with_pipes (screen_info->gscr, NULL, argv, NULL, - 0, NULL, NULL, &child_pid, NULL, &outpipe, - NULL, &err)) + if (!g_spawn_async_with_pipes (NULL, argv, NULL, 0, + terminateShowDialogSetEnvironment, + screen_info->gscr, + &child_pid, NULL, &outpipe, + NULL, &err)) { g_warning (_("Cannot spawn helper-dialog: %s\n"), err->message); g_error_free (err); -- GitLab