mirror of
https://github.com/glest/glest-source.git
synced 2025-02-24 03:32:35 +01:00
- changed code to cleanup pixbuf allocation earlier to not confuse gDEbugger about an openGL memory leak.
This commit is contained in:
parent
9ea0debc51
commit
3425d4c248
@ -446,6 +446,7 @@ Game::~Game() {
|
||||
// unit particles and fade them out etc and this end method deletes the original
|
||||
// object pointers.
|
||||
renderer.endGame(true);
|
||||
BaseColorPickEntity::cleanupPBO();
|
||||
|
||||
GameConstants::updateFps = original_updateFps;
|
||||
GameConstants::cameraFps = original_cameraFps;
|
||||
|
@ -292,8 +292,11 @@ public:
|
||||
|
||||
static int getUsedColorIDListSize() { return (int)usedColorIDList.size(); }
|
||||
|
||||
static void cleanupPBO();
|
||||
|
||||
private:
|
||||
|
||||
static int bufferSizeRequired;
|
||||
unsigned char uniqueColorID[COLOR_COMPONENTS];
|
||||
|
||||
static unsigned char nextColorID[COLOR_COMPONENTS];
|
||||
|
@ -1761,6 +1761,8 @@ PixelBufferWrapper::PixelBufferWrapper(int pboCount,int bufferSize) {
|
||||
//
|
||||
|
||||
for(int i = 0; i < pboCount; ++i) {
|
||||
printf("PBO Gen i = %d\n",i);
|
||||
|
||||
pboIds.push_back(0);
|
||||
glGenBuffersARB(1, (GLuint*)&pboIds[i]);
|
||||
// create pixel buffer objects, you need to delete them when program exits.
|
||||
@ -1838,8 +1840,12 @@ void PixelBufferWrapper::end() {
|
||||
void PixelBufferWrapper::cleanup() {
|
||||
if(PixelBufferWrapper::isPBOEnabled == true) {
|
||||
if(pboIds.empty() == false) {
|
||||
printf("PBO Delete size = %d\n",(int)pboIds.size());
|
||||
|
||||
glDeleteBuffersARB((int)pboIds.size(), &pboIds[0]);
|
||||
pboIds.clear();
|
||||
|
||||
glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1850,6 +1856,7 @@ PixelBufferWrapper::~PixelBufferWrapper() {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
int BaseColorPickEntity::bufferSizeRequired = -1;
|
||||
const unsigned int BaseColorPickEntity::p = 64007;
|
||||
const unsigned int BaseColorPickEntity::k = 43067;
|
||||
unsigned int BaseColorPickEntity::nextColorRGB = BaseColorPickEntity::k;
|
||||
@ -1865,6 +1872,9 @@ vector<vector<unsigned char> > BaseColorPickEntity::nextColorIDReuseList;
|
||||
bool BaseColorPickEntity::using_loop_method = false;
|
||||
|
||||
BaseColorPickEntity::BaseColorPickEntity() {
|
||||
if(BaseColorPickEntity::bufferSizeRequired != -1) {
|
||||
BaseColorPickEntity::init(BaseColorPickEntity::bufferSizeRequired);
|
||||
}
|
||||
uniqueColorID[0] = 0;
|
||||
uniqueColorID[1] = 0;
|
||||
uniqueColorID[2] = 0;
|
||||
@ -2022,10 +2032,15 @@ void BaseColorPickEntity::resetUniqueColors() {
|
||||
}
|
||||
void BaseColorPickEntity::init(int bufferSize) {
|
||||
if(BaseColorPickEntity::pbo.get() == NULL) {
|
||||
BaseColorPickEntity::pbo.reset(new PixelBufferWrapper(2,bufferSize));
|
||||
BaseColorPickEntity::bufferSizeRequired = bufferSize;
|
||||
BaseColorPickEntity::pbo.reset(new PixelBufferWrapper(2,BaseColorPickEntity::bufferSizeRequired));
|
||||
}
|
||||
}
|
||||
|
||||
void BaseColorPickEntity::cleanupPBO() {
|
||||
BaseColorPickEntity::pbo.reset(0);
|
||||
}
|
||||
|
||||
string BaseColorPickEntity::getColorDescription() const {
|
||||
char szBuf[100]="";
|
||||
snprintf(szBuf,100,"%d.%d.%d",uniqueColorID[0],uniqueColorID[1],uniqueColorID[2]);
|
||||
|
Loading…
x
Reference in New Issue
Block a user