From 0efbc16b6e3c765e3e7ab0fa55b94489a3151be6 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 22 Aug 2015 20:19:05 -0400 Subject: [PATCH] Work under wayland even when built with wnck There is really no need to ask libwnck for X resource consumption when the display we are using is not an X display. This makes gnome-system-monitor work under Wayland, even when the X resource support is compiled in. https://bugzilla.gnome.org/show_bug.cgi?id=753972 --- configure.ac | 2 +- src/prettytable.cpp | 17 ++++++++++++----- src/proctable.cpp | 20 +++++++++++++++----- 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/configure.ac b/configure.ac index 39bf5f5..32d1682 100644 --- a/configure.ac +++ b/configure.ac @@ -57,7 +57,7 @@ AC_PATH_PROG(DESKTOP_FILE_VALIDATE, desktop-file-validate) AC_ARG_ENABLE(wnck, AS_HELP_STRING([--enable-wnck], [enable wnck support]),enable_wnck="$enableval",enable_wnck=no) if test "x$enable_wnck" != "xno"; then - PKG_CHECK_MODULES(WNCK, libwnck-3.0 >= $LIBWNCK_REQUIRED) + PKG_CHECK_MODULES(WNCK, libwnck-3.0 >= $LIBWNCK_REQUIRED gdk-x11-3.0) AC_DEFINE(HAVE_WNCK, 1, [Define if libwnck is available]) fi AM_CONDITIONAL(HAVE_WNCK, [test "enable_wnck" = "yes"]) diff --git a/src/prettytable.cpp b/src/prettytable.cpp index cb1f3bb..0d5e0bb 100644 --- a/src/prettytable.cpp +++ b/src/prettytable.cpp @@ -24,6 +24,9 @@ #include "proctable.h" #include "util.h" +#ifdef GDK_WINDOWING_X11 +#include +#endif namespace { @@ -34,11 +37,15 @@ namespace PrettyTable::PrettyTable() { #ifdef HAVE_WNCK - WnckScreen* screen = wnck_screen_get_default(); - g_signal_connect(G_OBJECT(screen), "application_opened", - G_CALLBACK(PrettyTable::on_application_opened), this); - g_signal_connect(G_OBJECT(screen), "application_closed", - G_CALLBACK(PrettyTable::on_application_closed), this); +#ifdef GDK_WINDOWING_X11 + if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { + WnckScreen* screen = wnck_screen_get_default(); + g_signal_connect(G_OBJECT(screen), "application_opened", + G_CALLBACK(PrettyTable::on_application_opened), this); + g_signal_connect(G_OBJECT(screen), "application_closed", + G_CALLBACK(PrettyTable::on_application_closed), this); + } +#endif #endif // init GIO apps cache diff --git a/src/proctable.cpp b/src/proctable.cpp index 2caeaf2..ee3d6df 100644 --- a/src/proctable.cpp +++ b/src/proctable.cpp @@ -59,6 +59,10 @@ #include "treeview.h" #include "systemd.h" +#ifdef GDK_WINDOWING_X11 +#include +#endif + ProcInfo::UserMap ProcInfo::users; ProcInfo::List ProcInfo::all; std::map ProcInfo::cpu_times; @@ -715,14 +719,20 @@ static void get_process_memory_info(ProcInfo *info) { glibtop_proc_mem procmem; + #ifdef HAVE_WNCK - WnckResourceUsage xresources; + info->memxserver = 0; +#ifdef GDK_WINDOWING_X11 + if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { + WnckResourceUsage xresources; - wnck_pid_read_resource_usage (gdk_screen_get_display (gdk_screen_get_default ()), - info->pid, - &xresources); + wnck_pid_read_resource_usage (gdk_display_get_default (), + info->pid, + &xresources); - info->memxserver = xresources.total_bytes_estimate; + info->memxserver = xresources.total_bytes_estimate; + } +#endif #endif glibtop_get_proc_mem(&procmem, info->pid); -- 2.5.0