• Daniel Stone's avatar
    dix: Add hybrid full-size/empty-clip mode to SetRootClip · e957a2e5
    Daniel Stone authored
    216bdbc7 removed the SetRootClip call in the XWayland output-hotplug
    handler when running rootless (e.g. as a part of Weston/Mutter), since
    the root window has no storage, so generating exposures will result in
    writes to invalid memory.
    
    Unfortunately, preventing the segfault also breaks sprite confinement.
    SetRootClip updates winSize and borderSize for the root window, which
    when combined with RRScreenSizeChanged calling ScreenRestructured,
    generates a new sprite-confinment area to update it to the whole screen.
    
    Removing this call results in the window geometry being reported
    correctly, but winSize/borderSize never changing from their values at
    startup, i.e. out of sync with the root window geometry / screen
    information in the connection info / XRandR.
    
    This patch introduces a hybrid mode, where we update winSize and
    borderSize for the root window, enabling sprite confinement to work
    correctly, but keep the clip emptied so exposures are never generated.
    Signed-off-by: Daniel Stone's avatarDaniel Stone <daniels@collabora.com>
    Tested-by: default avatarOlivier Fourdan <ofourdan@redhat.com>
    Reviewed-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
    e957a2e5
xf86RandR12.c 61.1 KB