[gtk+/wip/matthiasc/monitor] x11: Adapt to api change
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/matthiasc/monitor] x11: Adapt to api change
- Date: Tue, 5 Apr 2016 03:37:01 +0000 (UTC)
commit bbe69dbd4b626acb2bc772ace95c2f821816b4e4
Author: Matthias Clasen <mclasen redhat com>
Date: Mon Apr 4 23:03:03 2016 -0400
x11: Adapt to api change
gdk/x11/gdkdisplay-x11.c | 36 ++++++++----
gdk/x11/gdkdisplay-x11.h | 3 +
gdk/x11/gdkscreen-x11.c | 135 +++++++++++++++++++++++-----------------------
gdk/x11/gdkscreen-x11.h | 2 -
4 files changed, 94 insertions(+), 82 deletions(-)
---
diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c
index 235d7e2..f7c79c4 100644
--- a/gdk/x11/gdkdisplay-x11.c
+++ b/gdk/x11/gdkdisplay-x11.c
@@ -180,6 +180,7 @@ G_DEFINE_TYPE_WITH_CODE (GdkX11Display, gdk_x11_display, GDK_TYPE_DISPLAY,
static void
gdk_x11_display_init (GdkX11Display *display)
{
+ display->monitors = g_ptr_array_new_with_free_func (g_object_unref);
}
static void
@@ -1903,6 +1904,8 @@ gdk_x11_display_finalize (GObject *object)
g_object_unref (display_x11->screen);
g_list_free_full (display_x11->screens, g_object_unref);
+ g_ptr_array_free (display_x11->monitors, TRUE);
+
g_free (display_x11->startup_notification_id);
/* X ID hashtable */
@@ -2903,26 +2906,34 @@ gdk_x11_display_get_default_seat (GdkDisplay *display)
return NULL;
}
-static GdkMonitor **
-gdk_x11_display_get_monitors (GdkDisplay *display,
- int *n_monitors)
+static int
+gdk_x11_display_get_n_monitors (GdkDisplay *display)
{
- GdkX11Screen *screen;
+ GdkX11Display *x11_display = GDK_X11_DISPLAY (display);
+
+ return x11_display->monitors->len;
+}
- screen = GDK_X11_SCREEN (GDK_X11_DISPLAY (display)->screen);
- *n_monitors = screen->monitors->len;
- return (GdkMonitor **)screen->monitors->pdata;
+static GdkMonitor *
+gdk_x11_display_get_monitor (GdkDisplay *display,
+ int monitor_num)
+{
+ GdkX11Display *x11_display = GDK_X11_DISPLAY (display);
+
+ if (0 <= monitor_num || monitor_num < x11_display->monitors->len)
+ return (GdkMonitor *)x11_display->monitors->pdata[monitor_num];
+
+ return NULL;
}
static GdkMonitor *
gdk_x11_display_get_primary_monitor (GdkDisplay *display)
{
- GdkX11Screen *screen;
+ GdkX11Display *x11_display = GDK_X11_DISPLAY (display);
- screen = GDK_X11_SCREEN (GDK_X11_DISPLAY (display)->screen);
- if (0 <= screen->primary_monitor && screen->primary_monitor < screen->monitors->len)
- return screen->monitors->pdata[screen->primary_monitor];
+ if (0 <= x11_display->primary_monitor && x11_display->primary_monitor < x11_display->monitors->len)
+ return x11_display->monitors->pdata[x11_display->primary_monitor];
return NULL;
}
@@ -2983,7 +2994,8 @@ gdk_x11_display_class_init (GdkX11DisplayClass * class)
display_class->get_default_seat = gdk_x11_display_get_default_seat;
- display_class->get_monitors = gdk_x11_display_get_monitors;
+ display_class->get_n_monitors = gdk_x11_display_get_n_monitors;
+ display_class->get_monitor = gdk_x11_display_get_monitor;
display_class->get_primary_monitor = gdk_x11_display_get_primary_monitor;
_gdk_x11_windowing_init ();
diff --git a/gdk/x11/gdkdisplay-x11.h b/gdk/x11/gdkdisplay-x11.h
index 004ee69..6d4614a 100644
--- a/gdk/x11/gdkdisplay-x11.h
+++ b/gdk/x11/gdkdisplay-x11.h
@@ -100,6 +100,9 @@ struct _GdkX11Display
/* input GdkWindow list */
GList *input_windows;
+ GPtrArray *monitors;
+ int primary_monitor;
+
/* Startup notification */
gchar *startup_notification_id;
diff --git a/gdk/x11/gdkscreen-x11.c b/gdk/x11/gdkscreen-x11.c
index 839ffcc..a840182 100644
--- a/gdk/x11/gdkscreen-x11.c
+++ b/gdk/x11/gdkscreen-x11.c
@@ -192,8 +192,6 @@ gdk_x11_screen_finalize (GObject *object)
g_free (x11_screen->window_manager_name);
- g_ptr_array_free (x11_screen->monitors, TRUE);
-
G_OBJECT_CLASS (gdk_x11_screen_parent_class)->finalize (object);
}
@@ -215,13 +213,14 @@ gdk_x11_screen_get_monitor_output (GdkScreen *screen,
gint monitor_num)
{
GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen);
+ GdkX11Display *x11_display = GDK_X11_DISPLAY (x11_screen->display);
GdkX11Monitor *monitor;
g_return_val_if_fail (GDK_IS_SCREEN (screen), None);
g_return_val_if_fail (monitor_num >= 0, None);
- g_return_val_if_fail (monitor_num < x11_screen->monitors->len, None);
+ g_return_val_if_fail (monitor_num < x11_display->monitors->len, None);
- monitor = x11_screen->monitors->pdata[monitor_num];
+ monitor = x11_display->monitors->pdata[monitor_num];
return monitor->output;
}
@@ -452,13 +451,13 @@ check_is_composited (GdkDisplay *display,
}
static GdkX11Monitor *
-find_monitor_by_output (GdkX11Screen *screen, RROutput output)
+find_monitor_by_output (GdkX11Display *x11_display, RROutput output)
{
int i;
- for (i = 0; i < screen->monitors->len; i++)
+ for (i = 0; i < x11_display->monitors->len; i++)
{
- GdkX11Monitor *monitor = screen->monitors->pdata[i];
+ GdkX11Monitor *monitor = x11_display->monitors->pdata[i];
if (monitor->output == output)
return monitor;
}
@@ -485,7 +484,7 @@ init_randr15 (GdkScreen *screen, gboolean *changed)
{
#ifdef HAVE_RANDR15
GdkDisplay *display = gdk_screen_get_display (screen);
- GdkX11Display *display_x11 = GDK_X11_DISPLAY (display);
+ GdkX11Display *x11_display = GDK_X11_DISPLAY (display);
GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen);
XRRScreenResources *resources;
RROutput primary_output = None;
@@ -496,7 +495,7 @@ init_randr15 (GdkScreen *screen, gboolean *changed)
int num_rr_monitors;
int old_primary;
- if (!display_x11->have_randr15)
+ if (!x11_display->have_randr15)
return FALSE;
resources = XRRGetScreenResourcesCurrent (x11_screen->xdisplay,
@@ -511,9 +510,9 @@ init_randr15 (GdkScreen *screen, gboolean *changed)
if (!rr_monitors)
return FALSE;
- for (i = 0; i < x11_screen->monitors->len; i++)
+ for (i = 0; i < x11_display->monitors->len; i++)
{
- GdkX11Monitor *monitor = x11_screen->monitors->pdata[i];
+ GdkX11Monitor *monitor = x11_display->monitors->pdata[i];
monitor->add = FALSE;
monitor->remove = TRUE;
}
@@ -566,7 +565,7 @@ init_randr15 (GdkScreen *screen, gboolean *changed)
XRRFreeCrtcInfo (crtc);
}
- monitor = find_monitor_by_output (x11_screen, output);
+ monitor = find_monitor_by_output (x11_display, output);
if (monitor)
monitor->remove = FALSE;
else
@@ -576,7 +575,7 @@ init_randr15 (GdkScreen *screen, gboolean *changed)
NULL);
monitor->output = output;
monitor->add = TRUE;
- g_ptr_array_add (x11_screen->monitors, monitor);
+ g_ptr_array_add (x11_display->monitors, monitor);
}
gdk_monitor_get_geometry (GDK_MONITOR (monitor), &geometry);
@@ -620,19 +619,19 @@ init_randr15 (GdkScreen *screen, gboolean *changed)
/* non RandR 1.2+ X driver doesn't return any usable multihead data */
if (randr12_compat)
{
- for (i = 0; i < x11_screen->monitors->len; i++)
+ for (i = 0; i < x11_display->monitors->len; i++)
{
- GdkX11Monitor *monitor = x11_screen->monitors->pdata[i];
+ GdkX11Monitor *monitor = x11_display->monitors->pdata[i];
if (monitor->remove)
gdk_display_monitor_removed (display, GDK_MONITOR (monitor));
}
- g_ptr_array_remove_range (x11_screen->monitors, 0, x11_screen->monitors->len);
+ g_ptr_array_remove_range (x11_display->monitors, 0, x11_display->monitors->len);
return FALSE;
}
- for (i = x11_screen->monitors->len - 1; i >= 0; i--)
+ for (i = x11_display->monitors->len - 1; i >= 0; i--)
{
- GdkX11Monitor *monitor = x11_screen->monitors->pdata[i];
+ GdkX11Monitor *monitor = x11_display->monitors->pdata[i];
if (monitor->add)
{
gdk_display_monitor_added (display, GDK_MONITOR (monitor));
@@ -641,21 +640,21 @@ init_randr15 (GdkScreen *screen, gboolean *changed)
else if (monitor->remove)
{
g_object_ref (monitor);
- g_ptr_array_remove (x11_screen->monitors, monitor);
+ g_ptr_array_remove (x11_display->monitors, monitor);
gdk_display_monitor_removed (display, GDK_MONITOR (monitor));
g_object_unref (monitor);
*changed = TRUE;
}
}
- old_primary = x11_screen->primary_monitor;
- x11_screen->primary_monitor = 0;
- for (i = 0; i < x11_screen->monitors->len; ++i)
+ old_primary = x11_display->primary_monitor;
+ x11_display->primary_monitor = 0;
+ for (i = 0; i < x11_display->monitors->len; ++i)
{
- GdkX11Monitor *monitor = x11_screen->monitors->pdata[i];
+ GdkX11Monitor *monitor = x11_display->monitors->pdata[i];
if (monitor->output == primary_output)
{
- x11_screen->primary_monitor = i;
+ x11_display->primary_monitor = i;
break;
}
@@ -663,19 +662,19 @@ init_randr15 (GdkScreen *screen, gboolean *changed)
if (primary_output == None &&
g_ascii_strncasecmp (gdk_monitor_get_model (GDK_MONITOR (monitor)), "LVDS", 4) == 0)
{
- x11_screen->primary_monitor = i;
+ x11_display->primary_monitor = i;
break;
}
/* No primary specified and no LVDS found */
if (monitor->output == first_output)
- x11_screen->primary_monitor = i;
+ x11_display->primary_monitor = i;
}
- if (x11_screen->primary_monitor != old_primary)
+ if (x11_display->primary_monitor != old_primary)
*changed = TRUE;
- return x11_screen->monitors->len > 0;
+ return x11_display->monitors->len > 0;
#endif
return FALSE;
@@ -686,7 +685,7 @@ init_randr13 (GdkScreen *screen, gboolean *changed)
{
#ifdef HAVE_RANDR
GdkDisplay *display = gdk_screen_get_display (screen);
- GdkX11Display *display_x11 = GDK_X11_DISPLAY (display);
+ GdkX11Display *x11_display = GDK_X11_DISPLAY (display);
GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen);
XRRScreenResources *resources;
RROutput primary_output = None;
@@ -695,7 +694,7 @@ init_randr13 (GdkScreen *screen, gboolean *changed)
gboolean randr12_compat = FALSE;
int old_primary;
- if (!display_x11->have_randr13)
+ if (!x11_display->have_randr13)
return FALSE;
resources = XRRGetScreenResourcesCurrent (x11_screen->xdisplay,
@@ -703,9 +702,9 @@ init_randr13 (GdkScreen *screen, gboolean *changed)
if (!resources)
return FALSE;
- for (i = 0; i < x11_screen->monitors->len; i++)
+ for (i = 0; i < x11_display->monitors->len; i++)
{
- GdkX11Monitor *monitor = x11_screen->monitors->pdata[i];
+ GdkX11Monitor *monitor = x11_display->monitors->pdata[i];
monitor->add = FALSE;
monitor->remove = TRUE;
}
@@ -745,7 +744,7 @@ init_randr13 (GdkScreen *screen, gboolean *changed)
}
}
- monitor = find_monitor_by_output (x11_screen, output);
+ monitor = find_monitor_by_output (x11_display, output);
if (monitor)
monitor->remove = FALSE;
else
@@ -755,7 +754,7 @@ init_randr13 (GdkScreen *screen, gboolean *changed)
NULL);
monitor->output = output;
monitor->add = TRUE;
- g_ptr_array_add (x11_screen->monitors, monitor);
+ g_ptr_array_add (x11_display->monitors, monitor);
}
gdk_monitor_get_geometry (GDK_MONITOR (monitor), &geometry);
@@ -801,19 +800,19 @@ init_randr13 (GdkScreen *screen, gboolean *changed)
if (randr12_compat)
{
- for (i = 0; i < x11_screen->monitors->len; i++)
+ for (i = 0; i < x11_display->monitors->len; i++)
{
- GdkX11Monitor *monitor = x11_screen->monitors->pdata[i];
+ GdkX11Monitor *monitor = x11_display->monitors->pdata[i];
if (monitor->remove)
gdk_display_monitor_removed (display, GDK_MONITOR (monitor));
}
- g_ptr_array_remove_range (x11_screen->monitors, 0, x11_screen->monitors->len);
+ g_ptr_array_remove_range (x11_display->monitors, 0, x11_display->monitors->len);
return FALSE;
}
- for (i = x11_screen->monitors->len - 1; i >= 0; i--)
+ for (i = x11_display->monitors->len - 1; i >= 0; i--)
{
- GdkX11Monitor *monitor = x11_screen->monitors->pdata[i];
+ GdkX11Monitor *monitor = x11_display->monitors->pdata[i];
if (monitor->add)
{
gdk_display_monitor_added (display, GDK_MONITOR (monitor));
@@ -822,24 +821,24 @@ init_randr13 (GdkScreen *screen, gboolean *changed)
else if (monitor->remove)
{
g_object_ref (monitor);
- g_ptr_array_remove (x11_screen->monitors, monitor);
+ g_ptr_array_remove (x11_display->monitors, monitor);
gdk_display_monitor_removed (display, GDK_MONITOR (monitor));
g_object_unref (monitor);
*changed = TRUE;
}
}
- old_primary = x11_screen->primary_monitor;
- x11_screen->primary_monitor = 0;
+ old_primary = x11_display->primary_monitor;
+ x11_display->primary_monitor = 0;
primary_output = XRRGetOutputPrimary (x11_screen->xdisplay,
x11_screen->xroot_window);
- for (i = 0; i < x11_screen->monitors->len; ++i)
+ for (i = 0; i < x11_display->monitors->len; ++i)
{
- GdkX11Monitor *monitor = x11_screen->monitors->pdata[i];
+ GdkX11Monitor *monitor = x11_display->monitors->pdata[i];
if (monitor->output == primary_output)
{
- x11_screen->primary_monitor = i;
+ x11_display->primary_monitor = i;
break;
}
@@ -847,19 +846,19 @@ init_randr13 (GdkScreen *screen, gboolean *changed)
if (primary_output == None &&
g_ascii_strncasecmp (gdk_monitor_get_model (GDK_MONITOR (monitor)), "LVDS", 4) == 0)
{
- x11_screen->primary_monitor = i;
+ x11_display->primary_monitor = i;
break;
}
/* No primary specified and no LVDS found */
if (monitor->output == first_output)
- x11_screen->primary_monitor = i;
+ x11_display->primary_monitor = i;
}
- if (x11_screen->primary_monitor != old_primary)
+ if (x11_display->primary_monitor != old_primary)
*changed = TRUE;
- return x11_screen->monitors->len > 0;
+ return x11_display->monitors->len > 0;
#endif
return FALSE;
@@ -869,29 +868,29 @@ static void
init_no_multihead (GdkScreen *screen, gboolean *changed)
{
GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen);
- GdkDisplay *display = gdk_screen_get_display (screen);
+ GdkX11Display *x11_display = GDK_X11_DISPLAY (x11_screen->display);
GdkX11Monitor *monitor;
GdkRectangle geometry;
int i;
- for (i = 0; i < x11_screen->monitors->len; i++)
+ for (i = 0; i < x11_display->monitors->len; i++)
{
- GdkX11Monitor *monitor = x11_screen->monitors->pdata[i];
+ GdkX11Monitor *monitor = x11_display->monitors->pdata[i];
monitor->add = FALSE;
monitor->remove = TRUE;
}
- monitor = find_monitor_by_output (x11_screen, 0);
+ monitor = find_monitor_by_output (x11_display, 0);
if (monitor)
monitor->remove = FALSE;
else
{
monitor = g_object_new (gdk_x11_monitor_get_type (),
- "display", display,
+ "display", x11_display,
NULL);
monitor->output = 0;
monitor->add = TRUE;
- g_ptr_array_add (x11_screen->monitors, monitor);
+ g_ptr_array_add (x11_display->monitors, monitor);
}
gdk_monitor_get_geometry (GDK_MONITOR (monitor), &geometry);
@@ -913,23 +912,23 @@ init_no_multihead (GdkScreen *screen, gboolean *changed)
gdk_screen_get_height_mm (screen));
gdk_monitor_set_scale_factor (GDK_MONITOR (monitor), x11_screen->window_scale);
- if (x11_screen->primary_monitor != 0)
+ if (x11_display->primary_monitor != 0)
*changed = TRUE;
- x11_screen->primary_monitor = 0;
+ x11_display->primary_monitor = 0;
- for (i = x11_screen->monitors->len - 1; i >= 0; i--)
+ for (i = x11_display->monitors->len - 1; i >= 0; i--)
{
- GdkX11Monitor *monitor = x11_screen->monitors->pdata[i];
+ GdkX11Monitor *monitor = x11_display->monitors->pdata[i];
if (monitor->add)
{
- gdk_display_monitor_added (display, GDK_MONITOR (monitor));
+ gdk_display_monitor_added (GDK_DISPLAY (x11_display), GDK_MONITOR (monitor));
*changed = TRUE;
}
else if (monitor->remove)
{
g_object_ref (monitor);
- g_ptr_array_remove (x11_screen->monitors, monitor);
- gdk_display_monitor_removed (display, GDK_MONITOR (monitor));
+ g_ptr_array_remove (x11_display->monitors, monitor);
+ gdk_display_monitor_removed (GDK_DISPLAY (x11_display), GDK_MONITOR (monitor));
g_object_unref (monitor);
*changed = TRUE;
}
@@ -952,14 +951,15 @@ static void
update_bounding_box (GdkScreen *screen)
{
GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen);
+ GdkX11Display *x11_display = GDK_X11_DISPLAY (x11_screen->display);
gint i, x1, y1, x2, y2;
x1 = y1 = G_MAXINT;
x2 = y2 = G_MININT;
- for (i = 0; i < x11_screen->monitors->len; i++)
+ for (i = 0; i < x11_display->monitors->len; i++)
{
- GdkX11Monitor *monitor = x11_screen->monitors->pdata[i];
+ GdkX11Monitor *monitor = x11_display->monitors->pdata[i];
GdkRectangle geometry;
gdk_monitor_get_geometry (GDK_MONITOR (monitor), &geometry);
@@ -1005,8 +1005,6 @@ _gdk_x11_screen_new (GdkDisplay *display,
else
x11_screen->window_scale = 1;
- x11_screen->monitors = g_ptr_array_new_with_free_func (g_object_unref);
-
init_randr_support (screen);
init_multihead (screen);
@@ -1021,6 +1019,7 @@ void
_gdk_x11_screen_set_window_scale (GdkX11Screen *x11_screen,
gint scale)
{
+ GdkX11Display *x11_display = GDK_X11_DISPLAY (x11_screen->display);
GList *toplevels, *l;
GdkWindow *root;
int i;
@@ -1042,9 +1041,9 @@ _gdk_x11_screen_set_window_scale (GdkX11Screen *x11_screen,
_gdk_x11_window_set_window_scale (window, scale);
}
- for (i = 0; i < x11_screen->monitors->len; i++)
+ for (i = 0; i < x11_display->monitors->len; i++)
{
- GdkMonitor *monitor = GDK_MONITOR (x11_screen->monitors->pdata[i]);
+ GdkMonitor *monitor = GDK_MONITOR (x11_display->monitors->pdata[i]);
gdk_monitor_set_scale_factor (monitor, scale);
}
diff --git a/gdk/x11/gdkscreen-x11.h b/gdk/x11/gdkscreen-x11.h
index 710ee7f..900218a 100644
--- a/gdk/x11/gdkscreen-x11.h
+++ b/gdk/x11/gdkscreen-x11.h
@@ -42,8 +42,6 @@ struct _GdkX11Screen
Window xroot_window;
GdkWindow *root_window;
gint screen_num;
- GPtrArray *monitors;
- gint primary_monitor;
gint width;
gint height;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]