From be3d4d300c7dc07ac13a1e98488063e1a804b17d Mon Sep 17 00:00:00 2001 From: SoftCoder Date: Thu, 28 Nov 2013 16:20:40 -0800 Subject: [PATCH] - bugfix for headless server mode (null pixmaps) shown by stacktrace on fakir --- source/glest_game/world/minimap.cpp | 36 +++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/source/glest_game/world/minimap.cpp b/source/glest_game/world/minimap.cpp index b12304a2..20d4a1b9 100644 --- a/source/glest_game/world/minimap.cpp +++ b/source/glest_game/world/minimap.cpp @@ -152,12 +152,20 @@ void Minimap::incFowTextureAlphaSurface(const Vec2i &sPos, float alpha, } void Minimap::copyFowTexAlphaSurface() { - fowPixmap1_default->copy(fowPixmap1); - fowPixmap1Copy_default->copy(fowPixmap1Copy); + if(fowPixmap1_default != NULL && fowPixmap1 != NULL) { + fowPixmap1_default->copy(fowPixmap1); + } + if(fowPixmap1Copy_default != NULL && fowPixmap1Copy != NULL) { + fowPixmap1Copy_default->copy(fowPixmap1Copy); + } } void Minimap::restoreFowTexAlphaSurface() { - fowPixmap1->copy(fowPixmap1_default); - fowPixmap1Copy->copy(fowPixmap1Copy_default); + if(fowPixmap1 != NULL && fowPixmap1_default != NULL) { + fowPixmap1->copy(fowPixmap1_default); + } + if(fowPixmap1Copy != NULL && fowPixmap1Copy_default != NULL) { + fowPixmap1Copy->copy(fowPixmap1Copy_default); + } } void Minimap::setFogOfWar(bool value) { @@ -166,16 +174,24 @@ void Minimap::setFogOfWar(bool value) { } void Minimap::copyFowTex() { - fowPixmap0Copy->copy(fowPixmap0); - fowPixmap1Copy->copy(fowPixmap1); + if(fowPixmap0Copy != NULL && fowPixmap0 != NULL) { + fowPixmap0Copy->copy(fowPixmap0); + } + if(fowPixmap1Copy != NULL && fowPixmap1 != NULL) { + fowPixmap1Copy->copy(fowPixmap1); + } } void Minimap::restoreFowTex() { - fowPixmap0->copy(fowPixmap0Copy); - fowPixmap1->copy(fowPixmap1Copy); + if(fowPixmap0 != NULL && fowPixmap0Copy != NULL) { + fowPixmap0->copy(fowPixmap0Copy); + } + if(fowPixmap1 != NULL && fowPixmap1Copy != NULL) { + fowPixmap1->copy(fowPixmap1Copy); + } } void Minimap::resetFowTex() { - if(fowTex) { + if(fowTex && fowPixmap0 && fowPixmap1) { Pixmap2D *tmpPixmap= fowPixmap0; fowPixmap0= fowPixmap1; fowPixmap1= tmpPixmap; @@ -226,7 +242,7 @@ void Minimap::resetFowTex() { } void Minimap::updateFowTex(float t) { - if(fowPixmap0 && fowTex) { + if(fowTex && fowPixmap0 && fowPixmap1) { for(int indexPixelWidth = 0; indexPixelWidth < fowPixmap0->getW(); ++indexPixelWidth){