Fix texture cache bug in OpenGL plugin
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@393 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
432084ebe7
commit
db303de0db
|
@ -82,6 +82,9 @@ void TextureMngr::TCacheEntry::SetTextureParameters(TexMode0& newmode)
|
||||||
void TextureMngr::TCacheEntry::Destroy()
|
void TextureMngr::TCacheEntry::Destroy()
|
||||||
{
|
{
|
||||||
glDeleteTextures(1, &texture);
|
glDeleteTextures(1, &texture);
|
||||||
|
u32 *ptr = (u32*)g_VideoInitialize.pGetMemoryPointer(addr + hashoffset*4);
|
||||||
|
if (*ptr == hash)
|
||||||
|
*ptr = oldpixel;
|
||||||
texture = 0;
|
texture = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -123,12 +126,9 @@ void TextureMngr::Cleanup()
|
||||||
{
|
{
|
||||||
TexCache::iterator iter = textures.begin();
|
TexCache::iterator iter = textures.begin();
|
||||||
|
|
||||||
while(iter!=textures.end()) {
|
while(iter != textures.end()) {
|
||||||
if (frameCount > 20 + iter->second.frameCount) {
|
if (frameCount > 20 + iter->second.frameCount) {
|
||||||
if (!iter->second.isRenderTarget) {
|
if (!iter->second.isRenderTarget) {
|
||||||
u32 *ptr = (u32*)g_VideoInitialize.pGetMemoryPointer(iter->second.addr + iter->second.hashoffset*4);
|
|
||||||
if (*ptr == iter->second.hash)
|
|
||||||
*ptr = iter->second.oldpixel;
|
|
||||||
iter->second.Destroy();
|
iter->second.Destroy();
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
iter = textures.erase(iter);
|
iter = textures.erase(iter);
|
||||||
|
|
Loading…
Reference in New Issue