summaryrefslogtreecommitdiff
authorIan Romanick <ian.d.romanick@intel.com>2009-04-27 22:11:10 (GMT)
committer Ian Romanick <ian.d.romanick@intel.com>2009-05-01 16:47:12 (GMT)
commit0d9d3f3e361f769822caedccf4c2a58cc9930ecc (patch) (side-by-side diff)
tree15ba254a8a0b036de90045d0b7867a276f4618f6
parent57aff88c7d0761e590806d07bee1c9410680c89f (diff)
downloadxserver-0d9d3f3e361f769822caedccf4c2a58cc9930ecc.zip
xserver-0d9d3f3e361f769822caedccf4c2a58cc9930ecc.tar.gz
DRI2: Force allocation of real-front buffer for non-windows as well
For redirected rendering we end up with pixmaps (which the app thinks are windows) that are double buffered. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Tested-by: Pierre Willenbrock <pierre@pirsoft.de>
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--hw/xfree86/dri2/dri2.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c
index 9ded048..1d49d7c 100644
--- a/hw/xfree86/dri2/dri2.c
+++ b/hw/xfree86/dri2/dri2.c
@@ -206,18 +206,21 @@ do_get_buffers(DrawablePtr pDraw, int *width, int *height,
* attachments. The counting logic in the loop accounts for the case
* where the client requests both the fake and real front-buffer.
*/
- if (pDraw->type == DRAWABLE_WINDOW) {
- if (attachment == DRI2BufferBackLeft) {
- need_real_front++;
- front_format = format;
- }
+ if (attachment == DRI2BufferBackLeft) {
+ need_real_front++;
+ front_format = format;
+ }
- if (attachment == DRI2BufferFrontLeft) {
- need_real_front--;
+ if (attachment == DRI2BufferFrontLeft) {
+ need_real_front--;
+ front_format = format;
+
+ if (pDraw->type == DRAWABLE_WINDOW) {
need_fake_front++;
- front_format = format;
}
+ }
+ if (pDraw->type == DRAWABLE_WINDOW) {
if (attachment == DRI2BufferFakeFrontLeft) {
need_fake_front--;
have_fake_front = 1;