55 lines
1.5 KiB
Diff
55 lines
1.5 KiB
Diff
From 72886b6a61b918d376fd118cb2687b9ecd5d9ebe Mon Sep 17 00:00:00 2001
|
|
From: songchuanfei <songchuanfei@kylinos.com.cn>
|
|
Date: Tue, 10 Nov 2020 13:43:05 +0800
|
|
Subject: [PATCH] fix[xrandr]: Fix virtual screens not recognized
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
- 修复无法通过hotplug_mode_update属性区分虚拟屏幕的问题
|
|
---
|
|
libmate-desktop/mate-rr.c | 20 +++++++++++---------
|
|
1 file changed, 11 insertions(+), 9 deletions(-)
|
|
|
|
diff --git a/libmate-desktop/mate-rr.c b/libmate-desktop/mate-rr.c
|
|
index ed2607e..36b0fc0 100644
|
|
--- a/libmate-desktop/mate-rr.c
|
|
+++ b/libmate-desktop/mate-rr.c
|
|
@@ -1206,22 +1206,24 @@ read_edid_data (MateRROutput *output, int *len)
|
|
static gboolean check_hotplug_mode_update(MateRROutput *output)
|
|
{
|
|
#ifdef HAVE_RANDR
|
|
+ GdkDisplay *display;
|
|
Atom atom;
|
|
- int len;
|
|
- guint8 *result;
|
|
+ XRRPropertyInfo *info = NULL;
|
|
|
|
atom = XInternAtom(DISPLAY(output), "hotplug_mode_update", FALSE);
|
|
if (atom == None)
|
|
return FALSE;
|
|
- result = get_property (DISPLAY (output),
|
|
- output->id, atom, &len);
|
|
|
|
- if (result) {
|
|
- g_free(result);
|
|
- return TRUE;
|
|
- } else
|
|
- return FALSE;
|
|
+ display = gdk_display_get_default ();
|
|
+ gdk_x11_display_error_trap_push (display);
|
|
+ info = XRRQueryOutputProperty (DISPLAY(output), output->id, atom);
|
|
+ gdk_x11_display_error_trap_pop_ignored (display);
|
|
|
|
+ if (info) {
|
|
+ XFree(info);
|
|
+ return TRUE;
|
|
+ }
|
|
+ return FALSE;
|
|
#else
|
|
return FALSE;
|
|
#endif
|
|
--
|
|
2.18.4
|
|
|