mirror of
https://github.com/gligli/nulldc-360.git
synced 2025-04-02 11:11:56 -04:00
40 lines
No EOL
802 B
C++
40 lines
No EOL
802 B
C++
#include "drkPvr.h"
|
|
#include "helper_classes.h"
|
|
|
|
u8* buffer_pool[(64*1024*1024)/ChunkSize];
|
|
u32 buffer_pool_count;
|
|
|
|
u8* GetBuffer()
|
|
{
|
|
if (buffer_pool_count!=0)
|
|
{
|
|
u8* rv=buffer_pool[--buffer_pool_count];
|
|
//VirtualLock(rv,ChunkSize);
|
|
return rv;
|
|
}
|
|
else
|
|
{
|
|
u8* ptr=(u8*)malloc(ChunkSize/*+8192*/);
|
|
/*DWORD old;
|
|
VirtualProtect(ptr,4096,PAGE_NOACCESS,&old);
|
|
VirtualProtect(&ptr[ChunkSize+4096],4096,PAGE_NOACCESS,&old);*/
|
|
|
|
//VirtualAlloc(ptr,ChunkSize,MEM_RESET,PAGE_READWRITE);
|
|
//VirtualLock(ptr,ChunkSize);
|
|
return ptr /*+4096*/;
|
|
}
|
|
}
|
|
|
|
void FreeBuffer(u8* buffer)
|
|
{
|
|
if (buffer_pool_count!=1024)
|
|
{
|
|
//VirtualUnlock(buffer,ChunkSize);
|
|
//VirtualAlloc(buffer,ChunkSize,MEM_RESET,PAGE_READWRITE);
|
|
buffer_pool[buffer_pool_count++]=buffer;
|
|
}
|
|
else
|
|
{
|
|
free(buffer/*-4096*/);
|
|
}
|
|
} |