summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlberts Muktupāvels <alberts.muktupavels@gmail.com>2016-05-12 19:29:36 +0300
committerAlberts Muktupāvels <alberts.muktupavels@gmail.com>2016-06-29 16:58:59 +0300
commite3d4a008804bcc87b57933981afa1c0fa40a61b8 (patch)
tree6aae66288f11400fbb0af578ea006abba87bc2cc
parentb00cbe1ace14c274d324a9a1d8904b11f1591b38 (diff)
downloadmetacity-e3d4a008804bcc87b57933981afa1c0fa40a61b8.tar.gz
constraints: validate fullscreen monitors before using them
https://bugzilla.gnome.org/show_bug.cgi?id=766156
-rw-r--r--src/core/constraints.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/core/constraints.c b/src/core/constraints.c
index 0f284ea1..f5bb0e38 100644
--- a/src/core/constraints.c
+++ b/src/core/constraints.c
@@ -338,6 +338,27 @@ meta_window_constrain (MetaWindow *window,
g_free (info.borders);
}
+static gboolean
+validate_fullscreen_monitors (MetaWindow *window)
+{
+ gint i;
+
+ if (window->fullscreen_monitors[0] == -1)
+ return FALSE;
+
+ for (i = 0; i < 4; i++)
+ {
+ gint monitor;
+
+ monitor = window->fullscreen_monitors[i];
+
+ if (monitor < 0 || monitor > window->screen->n_xinerama_infos)
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
static void
setup_constraint_info (ConstraintInfo *info,
MetaWindow *window,
@@ -413,7 +434,7 @@ setup_constraint_info (ConstraintInfo *info,
xinerama_info->number,
&info->work_area_xinerama);
- if (!window->fullscreen || window->fullscreen_monitors[0] == -1)
+ if (!window->fullscreen || !validate_fullscreen_monitors (window))
{
info->entire_xinerama = xinerama_info->rect;
}