auxiliary: fix util_framebuffer_copy

util_framebuffer_copy was attempting to copy all elements of the
source framebuffer state.

However, this breaks if the user does not zero initialize the structure.
Instead, only copy the elements up to nr_cbufs, and clear elements up
to dst->nr_cbufs, if the destination was larger than the source.
This commit is contained in:
Luca Barbieri 2010-08-06 11:08:45 +02:00
parent 10ce6779e8
commit deb809ec98
1 changed files with 4 additions and 2 deletions

View File

@ -85,9 +85,11 @@ util_copy_framebuffer_state(struct pipe_framebuffer_state *dst,
dst->width = src->width;
dst->height = src->height;
for (i = 0; i < Elements(src->cbufs); i++) {
for (i = 0; i < src->nr_cbufs; i++)
pipe_surface_reference(&dst->cbufs[i], src->cbufs[i]);
}
for (i = src->nr_cbufs; i < dst->nr_cbufs; i++)
pipe_surface_reference(&dst->cbufs[i], NULL);
dst->nr_cbufs = src->nr_cbufs;