DRI2: Don't leave empty entries in private->buffers
This should fix bug #21130. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
parent
b3e3154cce
commit
de1e43181b
|
@ -408,7 +408,7 @@ dri2GetBuffers(__DRIdrawable *driDrawable,
|
||||||
__GLXDRIdrawable *private = loaderPrivate;
|
__GLXDRIdrawable *private = loaderPrivate;
|
||||||
DRI2BufferPtr buffers;
|
DRI2BufferPtr buffers;
|
||||||
int i;
|
int i;
|
||||||
int skip = 0;
|
int j;
|
||||||
|
|
||||||
buffers = DRI2GetBuffers(private->base.pDraw,
|
buffers = DRI2GetBuffers(private->base.pDraw,
|
||||||
width, height, attachments, count, out_count);
|
width, height, attachments, count, out_count);
|
||||||
|
@ -422,23 +422,24 @@ dri2GetBuffers(__DRIdrawable *driDrawable,
|
||||||
|
|
||||||
/* This assumes the DRI2 buffer attachment tokens matches the
|
/* This assumes the DRI2 buffer attachment tokens matches the
|
||||||
* __DRIbuffer tokens. */
|
* __DRIbuffer tokens. */
|
||||||
|
j = 0;
|
||||||
for (i = 0; i < *out_count; i++) {
|
for (i = 0; i < *out_count; i++) {
|
||||||
/* Do not send the real front buffer of a window to the client.
|
/* Do not send the real front buffer of a window to the client.
|
||||||
*/
|
*/
|
||||||
if ((private->base.pDraw->type == DRAWABLE_WINDOW)
|
if ((private->base.pDraw->type == DRAWABLE_WINDOW)
|
||||||
&& (buffers[i].attachment == DRI2BufferFrontLeft)) {
|
&& (buffers[i].attachment == DRI2BufferFrontLeft)) {
|
||||||
skip++;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
private->buffers[i].attachment = buffers[i].attachment;
|
private->buffers[j].attachment = buffers[i].attachment;
|
||||||
private->buffers[i].name = buffers[i].name;
|
private->buffers[j].name = buffers[i].name;
|
||||||
private->buffers[i].pitch = buffers[i].pitch;
|
private->buffers[j].pitch = buffers[i].pitch;
|
||||||
private->buffers[i].cpp = buffers[i].cpp;
|
private->buffers[j].cpp = buffers[i].cpp;
|
||||||
private->buffers[i].flags = buffers[i].flags;
|
private->buffers[j].flags = buffers[i].flags;
|
||||||
|
j++;
|
||||||
}
|
}
|
||||||
|
|
||||||
*out_count -= skip;
|
*out_count = j;
|
||||||
return private->buffers;
|
return private->buffers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user