1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-02 09:03:37 +00:00

Correct depth buffer removal:

if depth buffer removed, clear pointers on it for all frame buffers.
This commit is contained in:
Sergey Lipskiy 2016-03-06 21:12:23 +06:00
parent fbbbe147c6
commit c504b9b216
3 changed files with 11 additions and 0 deletions

View File

@ -282,6 +282,7 @@ void DepthBufferList::removeBuffer(u32 _address )
{
for (DepthBuffers::iterator iter = m_list.begin(); iter != m_list.end(); ++iter)
if (iter->m_address == _address) {
frameBufferList().clearDepthBuffer(&(*iter));
m_list.erase(iter);
return;
}

View File

@ -716,6 +716,15 @@ void FrameBufferList::attachDepthBuffer()
assert(checkFBO());
}
void FrameBufferList::clearDepthBuffer(DepthBuffer * _pDepthBuffer)
{
for (FrameBuffers::iterator iter = m_list.begin(); iter != m_list.end(); ++iter) {
if (iter->m_pDepthBuffer == _pDepthBuffer) {
iter->m_pDepthBuffer = NULL;
}
}
}
void FrameBuffer_Init()
{
frameBufferList().init();

View File

@ -66,6 +66,7 @@ public:
void removeBuffer(u32 _address);
void removeBuffers(u32 _width);
void attachDepthBuffer();
void clearDepthBuffer(DepthBuffer * _pDepthBuffer);
FrameBuffer * findBuffer(u32 _startAddress);
FrameBuffer * findTmpBuffer(u32 _address);
FrameBuffer * getCurrent() const {return m_pCurrent;}