This makes sure the cursor doesn't appear on the output at some later time, as when leased by an X client.
Signed-off-by: Keith Packard <[email protected]> --- hw/xfree86/drivers/modesetting/drmmode_display.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c index b5a03256e..89e972538 100644 --- a/hw/xfree86/drivers/modesetting/drmmode_display.c +++ b/hw/xfree86/drivers/modesetting/drmmode_display.c @@ -54,6 +54,11 @@ static Bool drmmode_xf86crtc_resize(ScrnInfoPtr scrn, int width, int height); static PixmapPtr drmmode_create_pixmap_header(ScreenPtr pScreen, int width, int height, int depth, int bitsPerPixel, int devKind, void *pPixData); + +static Bool drmmode_set_cursor(xf86CrtcPtr crtc); + +static void drmmode_hide_cursor(xf86CrtcPtr crtc); + static Bool drmmode_zaphod_string_matches(ScrnInfoPtr scrn, const char *s, char *output_name) { @@ -494,6 +499,16 @@ drmmode_crtc_dpms(xf86CrtcPtr crtc, int mode) { drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; drmmode_crtc->dpms_mode = mode; + + if (mode == DPMSModeOn) { + if (drmmode_crtc->cursor_up) + drmmode_set_cursor(crtc); + } else { + if (drmmode_crtc->cursor_up) { + drmmode_hide_cursor(crtc); + drmmode_crtc->cursor_up = TRUE; + } + } } #ifdef GLAMOR_HAS_GBM @@ -789,8 +804,6 @@ drmmode_set_cursor(xf86CrtcPtr crtc) return TRUE; } -static void drmmode_hide_cursor(xf86CrtcPtr crtc); - /* * The load_cursor_argb_check driver hook. * -- 2.11.0 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
