GSdx: memory leak fix.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4332 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
gabest11 2011-02-20 23:53:00 +00:00
parent eeb9757e94
commit a2b7176cab
5 changed files with 15 additions and 15 deletions

View File

@ -24,6 +24,7 @@
#include "GSUtil.h"
#include "GSRendererSW.h"
#include "GSRendererNull.h"
#include "GSDeviceSW.h"
#include "GSDeviceNull.h"
#ifdef _WINDOWS
@ -194,6 +195,7 @@ static int _GSopen(void** dsp, char* title, int renderer, int threads = -1)
#ifdef _WINDOWS
case 0: case 1: case 2: dev = new GSDevice9(); break;
case 3: case 4: case 5: dev = new GSDevice11(); break;
// case 3: case 4: case 5: dev = new GSDeviceSW(); break;
#endif
case 12: case 13: dev = new GSDeviceNull(); break;
}

View File

@ -355,7 +355,7 @@ void GSRenderer::VSync(int field)
s += " | Recording...";
}
if (m_wnd.IsManaged())
if(m_wnd.IsManaged())
{
m_wnd.SetWindowText(s.c_str());
}

View File

@ -783,7 +783,7 @@ GSTextureCache::Source* GSTextureCache::CreateSource(const GIFRegTEX0& TEX0, con
GSTextureCache::Target* GSTextureCache::CreateTarget(const GIFRegTEX0& TEX0, int w, int h, int type)
{
Target* t = new Target(m_renderer);
Target* t = new Target(m_renderer, m_temp);
t->m_TEX0 = TEX0;
@ -816,8 +816,9 @@ GSTextureCache::Target* GSTextureCache::CreateTarget(const GIFRegTEX0& TEX0, int
// GSTextureCache::Surface
GSTextureCache::Surface::Surface(GSRenderer* r)
GSTextureCache::Surface::Surface(GSRenderer* r, uint8* temp)
: m_renderer(r)
, m_temp(temp)
, m_texture(NULL)
, m_age(0)
{
@ -837,13 +838,12 @@ void GSTextureCache::Surface::Update()
// GSTextureCache::Source
GSTextureCache::Source::Source(GSRenderer* r, uint8* temp)
: Surface(r)
: Surface(r, temp)
, m_palette(NULL)
, m_initpalette(true)
, m_fmt(0)
, m_target(false)
, m_complete(false)
, m_temp(temp)
{
memset(m_valid, 0, sizeof(m_valid));
@ -1048,8 +1048,8 @@ void GSTextureCache::Source::Flush(uint32 count)
// GSTextureCache::Target
GSTextureCache::Target::Target(GSRenderer* r)
: Surface(r)
GSTextureCache::Target::Target(GSRenderer* r, uint8* temp)
: Surface(r, temp)
, m_type(-1)
, m_used(false)
{
@ -1091,13 +1091,11 @@ void GSTextureCache::Target::Update()
}
else
{
static uint8* buff = (uint8*)::_aligned_malloc(1024 * 1024 * 4, 32);
int pitch = ((w + 3) & ~3) * 4;
m_renderer->m_mem.ReadTexture(o, r, buff, pitch, TEXA);
m_renderer->m_mem.ReadTexture(o, r, m_temp, pitch, TEXA);
t->Update(r.rsize(), buff, pitch);
t->Update(r.rsize(), m_temp, pitch);
}
// m_renderer->m_perfmon.Put(GSPerfMon::Unswizzle, w * h * 4);

View File

@ -49,9 +49,10 @@ public:
GIFRegTEX0 m_TEX0;
GIFRegTEXA m_TEXA;
int m_age;
uint8* m_temp;
public:
explicit Surface(GSRenderer* r);
Surface(GSRenderer* r, uint8* temp);
virtual ~Surface();
virtual void Update();
@ -72,7 +73,6 @@ public:
int m_fmt;
bool m_target;
bool m_complete;
uint8* m_temp;
public:
Source(GSRenderer* r, uint8* temp);
@ -90,7 +90,7 @@ public:
GSVector4i m_valid;
public:
explicit Target(GSRenderer* r);
Target(GSRenderer* r, uint8* temp);
virtual void Update();
};

View File

@ -47,7 +47,7 @@ void* vmalloc(size_t size, bool code)
void vmfree(void* ptr, size_t size)
{
VirtualFree(ptr, size, MEM_RELEASE);
VirtualFree(ptr, 0, MEM_RELEASE);
}
#else