]> git.jsancho.org Git - lugaru.git/commitdiff
Got rid of global texture var. Calling load_image directly
authorCôme Chilliet <come@chilliet.eu>
Sat, 26 Nov 2016 08:47:44 +0000 (16:47 +0800)
committerCôme Chilliet <come@chilliet.eu>
Sat, 26 Nov 2016 08:48:50 +0000 (16:48 +0800)
Source/GameInitDispose.cpp
Source/GameTick.cpp
Source/Globals.cpp
Source/ImageIO.cpp
Source/ImageIO.h
Source/Terrain.cpp
Source/Texture.cpp

index 0ce61eeb704cbb2a8a4faa017e86e406dc96d2b0..79a6a8de030f85980efbef4bff5d2f3aadcb8ab6 100644 (file)
@@ -52,7 +52,6 @@ extern float multiplier;
 extern int netdatanew;
 extern float mapinfo;
 extern bool stillloading;
-extern ImageRec texture;
 extern short vRefNum;
 extern long dirID;
 extern int mainmenu;
@@ -120,10 +119,6 @@ void Dispose()
     }
 
     OPENAL_Close();
-    if (texture.data) {
-        free(texture.data);
-    }
-    texture.data = 0;
 #endif
 }
 
@@ -170,7 +165,8 @@ void LoadSave(const char *fileName, GLuint *textureid, bool mipmap, GLubyte *arr
     texdetail = 1;
 
     //Load Image
-    upload_image(ConvertFileName(fileName));
+    ImageRec texture;
+    load_image(ConvertFileName(fileName), texture);
     texdetail = temptexdetail;
 
     int bytesPerPixel = texture.bpp / 8;
@@ -569,8 +565,6 @@ void Game::InitGame()
 
     stillloading = 1;
 
-    texture.data = ( GLubyte* )malloc( 1024 * 1024 * 4 );
-
     int temptexdetail = texdetail;
     texdetail = 1;
     text->LoadFontTexture(":Data:Textures:Font.png");
index c7670974c7fcd01dc1c2ec000363a5ffba1fd8a8..ea591632aaa143dd4a42aa6badb6c22f98e3d051 100644 (file)
@@ -125,7 +125,6 @@ extern float damagedealt;
 extern int maptype;
 extern int editoractive;
 extern int editorpathtype;
-extern ImageRec texture;
 
 extern float hostiletime;
 
@@ -388,7 +387,8 @@ bool Game::AddClothes(const char *fileName, GLubyte *array)
 {
     LOGFUNC;
     //Load Image
-    bool opened = upload_image(fileName);
+    ImageRec texture;
+    bool opened = load_image(fileName, texture);
 
     float alphanum;
     //Is it valid?
index 2969af52c1347281223aa8118e4a0776ea23105a..2d3da97cb6ce681eb10963ba4b1c3491995ff4a6 100644 (file)
@@ -178,7 +178,6 @@ bool tiltweird = false;
 bool midweird = false;
 bool proportionweird = false;
 bool vertexweird[6] = {0};
-ImageRec texture;
 bool debugmode = false;
 
 
index eaeef5f2751764f2c62cab33b2ffe40979b1e6fb..affcb8c58c29d40cc1a9dc2a96cfedac9b7cb020 100644 (file)
@@ -28,7 +28,6 @@ along with Lugaru.  If not, see <http://www.gnu.org/licenses/>.
 #include "Game.h"
 #include "ImageIO.h"
 
-extern ImageRec texture;
 extern bool visibleloading;
 
 /* These two are needed for screenshot */
@@ -39,9 +38,15 @@ static bool load_png(const char * fname, ImageRec & tex);
 static bool load_jpg(const char * fname, ImageRec & tex);
 static bool save_screenshot_png(const char * fname);
 
-bool upload_image(const char* fileName)
+ImageRec::ImageRec()
 {
-    return load_image(fileName, texture);
+    data = ( GLubyte* )malloc( 1024 * 1024 * 4 );
+}
+
+ImageRec::~ImageRec()
+{
+    free(data);
+    data = NULL;
 }
 
 bool load_image(const char *file_name, ImageRec &tex)
index 7fc2ff96f44f7aa1fe236b8a6494dc67d391b7f1..b3d0a498c66ae4165508b27cb8362508c6527ffe 100644 (file)
@@ -41,14 +41,20 @@ along with Lugaru.  If not, see <http://www.gnu.org/licenses/>.
 #endif
 
 /**> DATA STRUCTURES <**/
-typedef struct ImageRec {
+class ImageRec {
+public:
     GLubyte *data; // Image Data (Up To 32 Bits)
     GLuint bpp; // Image Color Depth In Bits Per Pixel.
     GLuint sizeX;
     GLuint sizeY;
-} ImageRec;
+    ImageRec();
+    ~ImageRec();
+private:
+    /* Make sure this class cannot be copied to avoid memory problems */
+    ImageRec(ImageRec const &);
+    ImageRec& operator=(ImageRec const &);
+};
 
-bool upload_image(const char* filePath);
 bool load_image(const char * fname, ImageRec & tex);
 bool save_screenshot(const char * fname);
 
index af56b86150c8deb9a76120fed91add01a81187cd..9061f37559694f06f3bcb8ab4f8834f9da0367b7 100644 (file)
@@ -35,7 +35,6 @@ extern bool decals;
 extern float blurness;
 extern float targetblurness;
 extern Objects objects;
-extern ImageRec texture;
 extern bool visibleloading;
 extern bool skyboxtexture;
 extern int tutoriallevel;
@@ -405,8 +404,10 @@ bool Terrain::load(const char *fileName)
 
     float temptexdetail = texdetail;
 
+    ImageRec texture;
+
     //Load Image
-    upload_image(ConvertFileName(fileName));
+    load_image(ConvertFileName(fileName), texture);
 
     //Is it valid?
     if (texture.bpp > 24) {
index adbef9f7819403a8dcdc16c2fe0d4c56debdb563..08010c389f3ed0c84951e768edbf61424c8111ec 100644 (file)
@@ -24,15 +24,16 @@ along with Lugaru.  If not, see <http://www.gnu.org/licenses/>.
 
 using namespace std;
 
-extern ImageRec texture;
 extern bool trilinear;
 
 vector<TextureRes*> TextureRes::list;
 
 void TextureRes::load()
 {
-    //load image into 'texture' global var
-    upload_image(ConvertFileName(filename.c_str()));
+    ImageRec texture;
+
+    //load image into 'texture'
+    load_image(ConvertFileName(filename.c_str()), texture);
 
     skinsize = texture.sizeX;
     GLuint type = GL_RGBA;