110 lines
3.5 KiB
Diff
110 lines
3.5 KiB
Diff
From 0efbc16b6e3c765e3e7ab0fa55b94489a3151be6 Mon Sep 17 00:00:00 2001
|
|
From: Matthias Clasen <mclasen@redhat.com>
|
|
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 <gdk/gdkx.h>
|
|
+#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 <gdk/gdkx.h>
|
|
+#endif
|
|
+
|
|
ProcInfo::UserMap ProcInfo::users;
|
|
ProcInfo::List ProcInfo::all;
|
|
std::map<pid_t, guint64> 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
|
|
|