• C
    qxl: Don't notify userspace when monitors config is unchanged · 9e3b3178
    Christophe Fergeau 提交于
    When the QXL driver receives a QXL_INTERRUPT_CLIENT_MONITORS_CONFIG interrupt,
    we currently always notify userspace that there was some hotplug event.
    
    However, gnome-shell/mutter is reacting to this event by attempting a
    resolution change, which it does by issueing drmModeRmFB, drmModeAddFB,
    and then drmModeSetCrtc. This has the side-effect of causing
    qxl_crtc_mode_set() to tell the QXL virtual hardware that a primary
    surface was destroyed and created. After going through QEMU and then the
    remote SPICE client, a new identical monitors config message will be
    sent, resulting in a QXL_INTERRUPT_CLIENT_MONITORS_CONFIG interrupt to
    be emitted, and the same scenario occurring again.
    
    As destroying/creating the primary surface causes a visible screen
    flicker, this makes the guest hard to use (
    https://bugzilla.redhat.com/show_bug.cgi?id=1266484 ).
    
    This commit checks if the screen configuration we received is the same
    one as the current one, and does not notify userspace about it if that's
    the case.
    Signed-off-by: NChristophe Fergeau <cfergeau@redhat.com>
    Acked-by: NFrediano Ziglio <fziglio@redhat.com>
    Message-id: 20161108091209.25568-7-cfergeau@redhat.com
    Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
    9e3b3178
qxl_display.c 31.9 KB