[gnome-panel/wip/geiger/geometry: 8/8] panel-multiscreen: remove global geometries variable
- From: Sebastian Geiger <segeiger src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-panel/wip/geiger/geometry: 8/8] panel-multiscreen: remove global geometries variable
- Date: Sun, 7 Jan 2018 18:56:42 +0000 (UTC)
commit 72f4ddb6f4fc9876ee409f172ca7a55c991d25fe
Author: Sebastian Geiger <sbastig gmx net>
Date: Sat Jan 6 22:38:52 2018 +0100
panel-multiscreen: remove global geometries variable
gnome-panel/panel-multiscreen.c | 69 ++++++++++++++++-----------------------
1 files changed, 28 insertions(+), 41 deletions(-)
---
diff --git a/gnome-panel/panel-multiscreen.c b/gnome-panel/panel-multiscreen.c
index 56b6d40..655ebca 100644
--- a/gnome-panel/panel-multiscreen.c
+++ b/gnome-panel/panel-multiscreen.c
@@ -26,35 +26,10 @@
#include "config.h"
#include "panel-multiscreen.h"
-static GdkRectangle *geometries = NULL;
static guint reinit_id = 0;
static void panel_multiscreen_reinit (void);
-static void
-get_monitors (GdkScreen *screen)
-{
-
- gint n_monitors;
- gint primary;
- gint i;
-
- n_monitors = gdk_screen_get_n_monitors (screen);
- primary = gdk_screen_get_primary_monitor (screen);
-
- g_free (geometries);
- geometries = g_new (GdkRectangle, n_monitors);
-
- gdk_screen_get_monitor_geometry (screen, primary, &(geometries[0]));
-
- for (i = 1; i < n_monitors; i++)
- {
- if (i == primary)
- continue;
- gdk_screen_get_monitor_geometry (screen, i, &(geometries[i]));
- }
-}
-
static gboolean
panel_multiscreen_reinit_idle (gpointer data)
{
@@ -88,21 +63,13 @@ panel_multiscreen_init (void)
G_CALLBACK(panel_multiscreen_queue_reinit), NULL);
g_signal_connect (screen, "monitors-changed",
G_CALLBACK(panel_multiscreen_queue_reinit), NULL);
-
- get_monitors(screen);
}
static void
panel_multiscreen_reinit (void)
{
- GdkScreen *screen;
GList *toplevels, *l;
- screen = gdk_screen_get_default ();
- g_signal_handlers_disconnect_by_func (screen, panel_multiscreen_queue_reinit, NULL);
-
- panel_multiscreen_init ();
-
toplevels = gtk_window_list_toplevels ();
for (l = toplevels; l; l = l->next)
@@ -117,7 +84,11 @@ panel_multiscreen_x (GdkScreen *screen,
{
g_return_val_if_fail (monitor >= 0 && monitor < gdk_screen_get_n_monitors (screen), 0);
- return geometries [monitor].x;
+ int x;
+
+ panel_multiscreen_get_monitor_geometry (monitor, &x, NULL, NULL, NULL);
+
+ return x;
}
int
@@ -126,7 +97,11 @@ panel_multiscreen_y (GdkScreen *screen,
{
g_return_val_if_fail (monitor >= 0 && monitor < gdk_screen_get_n_monitors (screen), 0);
- return geometries [monitor].y;
+ int y;
+
+ panel_multiscreen_get_monitor_geometry (monitor, NULL, &y, NULL, NULL);
+
+ return y;
}
int
@@ -135,7 +110,11 @@ panel_multiscreen_width (GdkScreen *screen,
{
g_return_val_if_fail (monitor >= 0 && monitor < gdk_screen_get_n_monitors (screen), 0);
- return geometries [monitor].width;
+ int width;
+
+ panel_multiscreen_get_monitor_geometry (monitor, NULL, NULL, NULL, &width);
+
+ return width;
}
int
@@ -144,7 +123,11 @@ panel_multiscreen_height (GdkScreen *screen,
{
g_return_val_if_fail (monitor >= 0 && monitor < gdk_screen_get_n_monitors (screen), 0);
- return geometries [monitor].height;
+ int height;
+
+ panel_multiscreen_get_monitor_geometry (monitor, NULL, NULL, &height, NULL);
+
+ return height;
}
typedef struct {
@@ -160,10 +143,14 @@ get_monitor_bounds (int n_monitor,
{
g_assert (bounds != NULL);
- bounds->x0 = geometries [n_monitor].x;
- bounds->y0 = geometries [n_monitor].y;
- bounds->x1 = bounds->x0 + geometries [n_monitor].width;
- bounds->y1 = bounds->y0 + geometries [n_monitor].height;
+ int x, y, height, width;
+
+ panel_multiscreen_get_monitor_geometry (n_monitor, &x, &y, &height, &width);
+
+ bounds->x0 = x;
+ bounds->y0 = y;
+ bounds->x1 = bounds->x0 + width;
+ bounds->y1 = bounds->y0 + height;
}
/* determines whether a given monitor is along the visible
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]