summaryrefslogtreecommitdiff
path: root/libmate-desktop/mate-rr.c
diff options
context:
space:
mode:
authorMonsta <[email protected]>2015-07-24 13:26:48 +0300
committerMonsta <[email protected]>2015-07-24 13:26:48 +0300
commit6830d2560e3db172c1042b8811f744a7351cf7c2 (patch)
treec42f6a89206725d6d8853090970314571797f599 /libmate-desktop/mate-rr.c
parentfe0d234192debe109736b78f08f98a808758c42b (diff)
downloadmate-desktop-6830d2560e3db172c1042b8811f744a7351cf7c2.tar.bz2
mate-desktop-6830d2560e3db172c1042b8811f744a7351cf7c2.tar.xz
rr: fix crash when XRRSetCrtcConfig fails
from https://github.com/GNOME/gnome-desktop/commit/4a95c179de8920ee8f78ae5e1f05df173e9d5bd8
Diffstat (limited to 'libmate-desktop/mate-rr.c')
-rw-r--r--libmate-desktop/mate-rr.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/libmate-desktop/mate-rr.c b/libmate-desktop/mate-rr.c
index d2003ac..65b4811 100644
--- a/libmate-desktop/mate-rr.c
+++ b/libmate-desktop/mate-rr.c
@@ -1750,7 +1750,8 @@ mate_rr_crtc_set_config_with_time (MateRRCrtc *crtc,
for (i = 0; i < n_outputs; ++i)
g_array_append_val (output_ids, outputs[i]->id);
}
-
+
+ gdk_error_trap_push ();
status = XRRSetCrtcConfig (DISPLAY (crtc), info->resources, crtc->id,
timestamp,
x, y,
@@ -1761,16 +1762,16 @@ mate_rr_crtc_set_config_with_time (MateRRCrtc *crtc,
g_array_free (output_ids, TRUE);
- if (status == RRSetConfigSuccess)
- result = TRUE;
- else {
- result = FALSE;
- /* Translators: CRTC is a CRT Controller (this is X terminology).
- * It is *very* unlikely that you'll ever get this error, so it is
- * only listed for completeness. */
- g_set_error (error, MATE_RR_ERROR, MATE_RR_ERROR_RANDR_ERROR,
- _("could not set the configuration for CRTC %d"),
- (int) crtc->id);
+ if (gdk_error_trap_pop () || status != RRSetConfigSuccess) {
+ /* Translators: CRTC is a CRT Controller (this is X terminology).
+ * It is *very* unlikely that you'll ever get this error, so it is
+ * only listed for completeness. */
+ g_set_error (error, MATE_RR_ERROR, MATE_RR_ERROR_RANDR_ERROR,
+ _("could not set the configuration for CRTC %d"),
+ (int) crtc->id);
+ return FALSE;
+ } else {
+ result = TRUE;
}
return result;