diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2010-12-30 15:32:40 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2010-12-30 16:48:52 +0000 |
commit | 53fbc9f1760ee481cba1f6dceb9e7c97282a2976 (patch) | |
tree | 77ab04daca51090b0ac3e81e33932df5d6b596f2 /src/intel_uxa.c | |
parent | 7667ad8432c032aec3a2aa004fc4dfc1877971b3 (diff) |
Don't replace the scanout bo through PutImage
As the bo may be pinned for either use by the scanout or through sharing
with another application, under those circumstances we cannot replace
the bo itself but must force the blit for PutImage.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=31367
Reported-and-tested-by: Bjørn Mork <bjorn@mork.no>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src/intel_uxa.c')
-rw-r--r-- | src/intel_uxa.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/intel_uxa.c b/src/intel_uxa.c index 3f231ad2..1a591f1d 100644 --- a/src/intel_uxa.c +++ b/src/intel_uxa.c @@ -770,7 +770,8 @@ static Bool intel_uxa_put_image(PixmapPtr pixmap, } else { ScreenPtr screen = pixmap->drawable.pScreen; - if (x == 0 && y == 0 && + if (!priv->pinned && + x == 0 && y == 0 && w == pixmap->drawable.width && h == pixmap->drawable.height) { @@ -1101,7 +1102,7 @@ void intel_uxa_create_screen_resources(ScreenPtr screen) } else { PixmapPtr pixmap = screen->GetScreenPixmap(screen); intel_set_pixmap_bo(pixmap, bo); - intel_get_pixmap_private(pixmap)->busy = 1; + intel_get_pixmap_private(pixmap)->pinned = 1; screen->ModifyPixmapHeader(pixmap, scrn->virtualX, scrn->virtualY, |