mesa/st: take ownership rather than adding reference for new renderbuffers
This avoids locking in the reference calls and fixes a leak after the
RefCount initialisation was change from 0 to 1.
Fixes: 32141e53d1 (mesa: tidy up renderbuffer RefCount initialisation)
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Tested-by: Bartosz Tomczyk <bartosz.tomczyk86@gmail.com>
This commit is contained in:
@@ -312,13 +312,21 @@ st_framebuffer_add_renderbuffer(struct st_framebuffer *stfb,
|
||||
return FALSE;
|
||||
|
||||
if (idx != BUFFER_DEPTH) {
|
||||
_mesa_add_renderbuffer(&stfb->Base, idx, rb);
|
||||
_mesa_add_renderbuffer_without_ref(&stfb->Base, idx, rb);
|
||||
return TRUE;
|
||||
}
|
||||
else {
|
||||
if (util_format_get_component_bits(format, UTIL_FORMAT_COLORSPACE_ZS, 0))
|
||||
_mesa_add_renderbuffer(&stfb->Base, BUFFER_DEPTH, rb);
|
||||
if (util_format_get_component_bits(format, UTIL_FORMAT_COLORSPACE_ZS, 1))
|
||||
|
||||
bool rb_ownership_taken = false;
|
||||
if (util_format_get_component_bits(format, UTIL_FORMAT_COLORSPACE_ZS, 0)) {
|
||||
_mesa_add_renderbuffer_without_ref(&stfb->Base, BUFFER_DEPTH, rb);
|
||||
rb_ownership_taken = true;
|
||||
}
|
||||
|
||||
if (util_format_get_component_bits(format, UTIL_FORMAT_COLORSPACE_ZS, 1)) {
|
||||
if (rb_ownership_taken)
|
||||
_mesa_add_renderbuffer(&stfb->Base, BUFFER_STENCIL, rb);
|
||||
else
|
||||
_mesa_add_renderbuffer_without_ref(&stfb->Base, BUFFER_STENCIL, rb);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
|
||||
Reference in New Issue
Block a user