If a frontbuffer drawable already has a pixmap, make sure it was created on the right screen.
Signed-off-by: Hans de Goede <[email protected]> --- hw/xfree86/drivers/modesetting/dri2.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/hw/xfree86/drivers/modesetting/dri2.c b/hw/xfree86/drivers/modesetting/dri2.c index 83cb3e0..b810d59 100644 --- a/hw/xfree86/drivers/modesetting/dri2.c +++ b/hw/xfree86/drivers/modesetting/dri2.c @@ -117,17 +117,6 @@ get_drawable_pixmap(DrawablePtr drawable) return screen->GetWindowPixmap((WindowPtr) drawable); } -static PixmapPtr -get_front_buffer(DrawablePtr drawable) -{ - PixmapPtr pixmap; - - pixmap = get_drawable_pixmap(drawable); - pixmap->refcnt++; - - return pixmap; -} - static DRI2Buffer2Ptr ms_dri2_create_buffer(DrawablePtr drawable, unsigned int attachment, unsigned int format) @@ -151,8 +140,13 @@ ms_dri2_create_buffer(DrawablePtr drawable, unsigned int attachment, } pixmap = NULL; - if (attachment == DRI2BufferFrontLeft) - pixmap = get_front_buffer(drawable); + if (attachment == DRI2BufferFrontLeft) { + pixmap = get_drawable_pixmap(drawable); + if (pixmap && pixmap->drawable.pScreen != screen) + pixmap = NULL; + if (pixmap) + pixmap->refcnt++; + } if (pixmap == NULL) { int pixmap_width = drawable->width; -- 2.7.4 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
