[libwnck] core: Add Screen argument to _wnck_get_cardinal(), _wnck_get_pid()
- From: Vincent Untz <vuntz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libwnck] core: Add Screen argument to _wnck_get_cardinal(), _wnck_get_pid()
- Date: Thu, 20 Jan 2011 15:35:27 +0000 (UTC)
commit edb4c29daa701fd9d3bc236c25a45afac551f3a5
Author: Vincent Untz <vuntz gnome org>
Date: Wed Jan 19 22:21:00 2011 +0100
core: Add Screen argument to _wnck_get_cardinal(), _wnck_get_pid()
libwnck/application.c | 3 ++-
libwnck/screen.c | 9 ++++++---
libwnck/util.c | 20 ++++++++++++--------
libwnck/window.c | 6 ++++--
libwnck/xutils.c | 13 +++++++++----
libwnck/xutils.h | 6 ++++--
6 files changed, 37 insertions(+), 20 deletions(-)
---
diff --git a/libwnck/application.c b/libwnck/application.c
index 936bc5d..85d7506 100644
--- a/libwnck/application.c
+++ b/libwnck/application.c
@@ -536,7 +536,8 @@ _wnck_application_create (Window xwindow,
if (application->priv->name)
application->priv->name_from_leader = TRUE;
- application->priv->pid = _wnck_get_pid (application->priv->xwindow);
+ application->priv->pid = _wnck_get_pid (WNCK_SCREEN_XSCREEN (screen),
+ application->priv->xwindow);
application->priv->startup_id = _wnck_get_utf8_property (application->priv->xwindow,
_wnck_atom_get ("_NET_STARTUP_ID"));
diff --git a/libwnck/screen.c b/libwnck/screen.c
index d51b472..a78c460 100644
--- a/libwnck/screen.c
+++ b/libwnck/screen.c
@@ -1730,7 +1730,8 @@ update_workspace_list (WnckScreen *screen)
++reentrancy_guard;
n_spaces = 0;
- if (!_wnck_get_cardinal (screen->priv->xroot,
+ if (!_wnck_get_cardinal (WNCK_SCREEN_XSCREEN (screen),
+ screen->priv->xroot,
_wnck_atom_get ("_NET_NUMBER_OF_DESKTOPS"),
&n_spaces))
n_spaces = 1;
@@ -1963,7 +1964,8 @@ update_active_workspace (WnckScreen *screen)
screen->priv->need_update_active_workspace = FALSE;
number = 0;
- if (!_wnck_get_cardinal (screen->priv->xroot,
+ if (!_wnck_get_cardinal (WNCK_SCREEN_XSCREEN (screen),
+ screen->priv->xroot,
_wnck_atom_get ("_NET_CURRENT_DESKTOP"),
&number))
number = -1;
@@ -2170,7 +2172,8 @@ update_showing_desktop (WnckScreen *screen)
screen->priv->need_update_showing_desktop = FALSE;
showing_desktop = FALSE;
- _wnck_get_cardinal (screen->priv->xroot,
+ _wnck_get_cardinal (WNCK_SCREEN_XSCREEN (screen),
+ screen->priv->xroot,
_wnck_atom_get ("_NET_SHOWING_DESKTOP"),
&showing_desktop);
diff --git a/libwnck/util.c b/libwnck/util.c
index be7f9af..6ef020a 100644
--- a/libwnck/util.c
+++ b/libwnck/util.c
@@ -278,12 +278,13 @@ wnck_gulong_equal (gconstpointer a,
}
static gulong
-wnck_check_window_for_pid (Window win,
- XID match_xid,
- XID mask)
+wnck_check_window_for_pid (Screen *screen,
+ Window win,
+ XID match_xid,
+ XID mask)
{
if ((win & ~mask) == match_xid) {
- return _wnck_get_pid (win);
+ return _wnck_get_pid (screen, win);
}
return 0;
@@ -291,6 +292,7 @@ wnck_check_window_for_pid (Window win,
static void
wnck_find_pid_for_resource_r (Display *xdisplay,
+ Screen *screen,
Window win_top,
XID match_xid,
XID mask,
@@ -308,7 +310,7 @@ wnck_find_pid_for_resource_r (Display *xdisplay,
while (gtk_events_pending ())
gtk_main_iteration ();
- found_pid = wnck_check_window_for_pid (win_top, match_xid, mask);
+ found_pid = wnck_check_window_for_pid (screen, win_top, match_xid, mask);
if (found_pid != 0)
{
*xid = win_top;
@@ -325,7 +327,7 @@ wnck_find_pid_for_resource_r (Display *xdisplay,
for (i = 0; i < n_children; i++)
{
- wnck_find_pid_for_resource_r (xdisplay, children[i],
+ wnck_find_pid_for_resource_r (xdisplay, screen, children[i],
match_xid, mask, xid, pid);
if (*pid != 0)
@@ -401,14 +403,16 @@ wnck_pid_read_resource_usage_fill_cache (struct xresclient_state *state)
for (i = 0; i < ScreenCount (state->xdisplay); i++)
{
- Window root;
+ Screen *screen;
+ Window root;
+ screen = ScreenOfDisplay (state->xdisplay, i);
root = RootWindow (state->xdisplay, i);
if (root == None)
continue;
- wnck_find_pid_for_resource_r (state->xdisplay, root, match_xid,
+ wnck_find_pid_for_resource_r (state->xdisplay, screen, root, match_xid,
state->clients[state->next].resource_mask,
&xid, &pid);
diff --git a/libwnck/window.c b/libwnck/window.c
index 97dda53..01c9e96 100644
--- a/libwnck/window.c
+++ b/libwnck/window.c
@@ -530,7 +530,8 @@ _wnck_window_create (Window xwindow,
_wnck_get_session_id (window->priv->xwindow);
window->priv->pid =
- _wnck_get_pid (window->priv->xwindow);
+ _wnck_get_pid (WNCK_SCREEN_XSCREEN (window->priv->screen),
+ window->priv->xwindow);
window->priv->x = 0;
window->priv->y = 0;
@@ -2802,7 +2803,8 @@ update_workspace (WnckWindow *window)
old = window->priv->workspace;
val = ALL_WORKSPACES;
- _wnck_get_cardinal (window->priv->xwindow,
+ _wnck_get_cardinal (WNCK_SCREEN_XSCREEN (window->priv->screen),
+ window->priv->xwindow,
_wnck_atom_get ("_NET_WM_DESKTOP"),
&val);
diff --git a/libwnck/xutils.c b/libwnck/xutils.c
index 394c1d5..8696b7f 100644
--- a/libwnck/xutils.c
+++ b/libwnck/xutils.c
@@ -32,10 +32,12 @@
#include "inlinepixbufs.h"
gboolean
-_wnck_get_cardinal (Window xwindow,
+_wnck_get_cardinal (Screen *screen,
+ Window xwindow,
Atom atom,
int *val)
{
+ Display *display;
Atom type;
int format;
gulong nitems;
@@ -43,11 +45,13 @@ _wnck_get_cardinal (Window xwindow,
gulong *num;
int err, result;
+ display = DisplayOfScreen (screen);
+
*val = 0;
_wnck_error_trap_push ();
type = None;
- result = XGetWindowProperty (_wnck_get_default_display(),
+ result = XGetWindowProperty (display,
xwindow,
atom,
0, G_MAXLONG,
@@ -1138,11 +1142,12 @@ _wnck_get_session_id (Window xwindow)
}
int
-_wnck_get_pid (Window xwindow)
+_wnck_get_pid (Screen *screen,
+ Window xwindow)
{
int val;
- if (!_wnck_get_cardinal (xwindow,
+ if (!_wnck_get_cardinal (screen, xwindow,
_wnck_atom_get ("_NET_WM_PID"),
&val))
return 0;
diff --git a/libwnck/xutils.h b/libwnck/xutils.h
index 2b35d09..8246d48 100644
--- a/libwnck/xutils.h
+++ b/libwnck/xutils.h
@@ -38,7 +38,8 @@ G_BEGIN_DECLS
#define WNCK_APP_WINDOW_EVENT_MASK (PropertyChangeMask | StructureNotifyMask)
-gboolean _wnck_get_cardinal (Window xwindow,
+gboolean _wnck_get_cardinal (Screen *screen,
+ Window xwindow,
Atom atom,
int *val);
int _wnck_get_wm_state (Window xwindow);
@@ -112,7 +113,8 @@ void _wnck_change_viewport (Screen *screen,
int y);
char* _wnck_get_session_id (Window xwindow);
-int _wnck_get_pid (Window xwindow);
+int _wnck_get_pid (Screen *screen,
+ Window xwindow);
char* _wnck_get_name (Window xwindow);
char* _wnck_get_icon_name (Window xwindow);
char* _wnck_get_res_class_utf8 (Window xwindow);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]