[PATCH xserver 1/3] modesetting: ms_dri2_create_buffer: check screen of existing front buffers
Hans de Goede
hdegoede at redhat.com
Tue Aug 16 09:10:06 UTC 2016
If a frontbuffer drawable already has a pixmap, make sure it was created
on the right screen.
Signed-off-by: Hans de Goede <hdegoede at redhat.com>
---
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
More information about the xorg-devel
mailing list