Address feedback
This commit is contained in:
parent
7f0f119cfe
commit
71ae6e3ad2
1 changed files with 19 additions and 7 deletions
|
@ -509,12 +509,9 @@ void FramebufferManagerCommon::DestroyFramebuf(VirtualFramebuffer *v) {
|
|||
prevPrevDisplayFramebuf_ = nullptr;
|
||||
|
||||
// Remove any depth buffer tracking related to this vfb.
|
||||
for (auto it = trackedDepthBuffers_.begin(); it != trackedDepthBuffers_.end(); it) {
|
||||
for (auto it = trackedDepthBuffers_.begin(); it != trackedDepthBuffers_.end(); it++) {
|
||||
if ((*it)->vfb == v) {
|
||||
delete *it;
|
||||
it = trackedDepthBuffers_.erase(it);
|
||||
} else {
|
||||
it++;
|
||||
(*it)->vfb = nullptr; // Mark for deletion in the next Decimate
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -565,8 +562,13 @@ TrackedDepthBuffer *FramebufferManagerCommon::GetOrCreateTrackedDepthBuffer(Virt
|
|||
continue;
|
||||
}
|
||||
|
||||
if (vfb->z_address == tracked->z_address && vfb->z_stride == tracked->z_stride) {
|
||||
return tracked;
|
||||
if (vfb->z_address == tracked->z_address) {
|
||||
if (vfb->z_stride == tracked->z_stride) {
|
||||
return tracked;
|
||||
} else {
|
||||
// Stride has changed, mark as bad.
|
||||
tracked->vfb = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1321,6 +1323,16 @@ void FramebufferManagerCommon::DecimateFBOs() {
|
|||
bvfbs_.erase(bvfbs_.begin() + i--);
|
||||
}
|
||||
}
|
||||
|
||||
// Also clean up the TrackedDepthBuffer array...
|
||||
for (auto it = trackedDepthBuffers_.begin(); it != trackedDepthBuffers_.end(); it) {
|
||||
if ((*it)->vfb == nullptr) {
|
||||
delete *it;
|
||||
it = trackedDepthBuffers_.erase(it);
|
||||
} else {
|
||||
it++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Requires width/height to be set already.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue