Pārlūkot izejas kodu

don't show assert at the end
minor fixes

Denis Muratshin 12 gadi atpakaļ
vecāks
revīzija
a086f20733

+ 2 - 2
.hg_archival.txt

@@ -1,5 +1,5 @@
 repo: b6d71054df5712e643a0685bc3ba54b123db5729
-node: 7385c535f22550454cc07e36812df23543bda156
+node: cbc5547cb445aef286f2022d646de4d0b48e1907
 branch: default
 latesttag: oldrender
-latesttagdistance: 183
+latesttagdistance: 186

+ 2 - 0
.hgignore

@@ -108,5 +108,7 @@ examples/HelloWorld/proj.win32/Debug/
 examples/Match3/proj.win32/Debug/
 examples/HelloWorld/proj.android/bin/
 examples/HelloWorld/proj.android/gen/
+examples/Game/part1/proj.win32/Debug/
+examples/Game/part4/proj.win32/Debug/
 syntax: regexp
 ^build/

BIN
doc.zip


+ 3 - 3
oxygine/src/DebugActor.cpp

@@ -122,7 +122,7 @@ namespace oxygine
 		addButton(x, "t2p", "t2p");
 #endif
 
-#ifdef OXYGINE_DEBUG_OBJECTS
+#ifdef OXYGINE_DEBUG_TRACE_LEAKS
 		
 		addButton(x, "images", "images");		
 #endif
@@ -242,8 +242,8 @@ namespace oxygine
 		s << "fps=" << fps << " mem=" << mem_used << endl;
 		s << "mfree=" << mem_free << endl;
 
-#ifdef OXYGINE_DEBUG_OBJECTS
-		s << "objects=" << (int)__objects.size() << endl;
+#ifdef OXYGINE_DEBUG_TRACE_LEAKS
+		s << "objects=" << (int)ObjectBase::__getCreatedObjects().size() << endl;
 #endif
 		s << "batches="<< _videoStats.batches << " triangles=" << _videoStats.triangles << endl;
 		s << "update=" << getRoot()->_statUpdate << "ms ";

+ 2 - 2
oxygine/src/core/NativeTexture.cpp

@@ -56,8 +56,8 @@ namespace oxygine
 	
 		std::vector<spNativeTexture> t;
 
-		const ObjectBase::createdObjects &obj = ObjectBase::getCreatedObjects();
-		for (ObjectBase::createdObjects::const_iterator i = obj.begin(); i != obj.end(); ++i)
+		const ObjectBase::__createdObjects &obj = ObjectBase::__getCreatedObjects();
+		for (ObjectBase::__createdObjects::const_iterator i = obj.begin(); i != obj.end(); ++i)
 		{
 			ObjectBase *ob = *i;
 			NativeTexture *nt = dynamic_cast<NativeTexture *>(ob);

+ 40 - 21
oxygine/src/core/Object.cpp

@@ -9,7 +9,11 @@
 
 namespace oxygine
 {
-	ObjectBase::createdObjects ObjectBase::__objects;
+	ObjectBase::__createdObjects&	ObjectBase::__getCreatedObjects()
+	{
+		static __createdObjects __objects;
+		return __objects;
+	}
 
 	int ObjectBase::_lastID = 0;
 	int ObjectBase::_assertCtorID = -1;	
@@ -71,12 +75,7 @@ namespace oxygine
 
 	ObjectBase::ObjectBase(const ObjectBase &src):__id(0), __name(0)
 	{
-#ifdef OXYGINE_DEBUG_OBJECTS
-		{
-			MutexAutoLock m(mutexDebugList);
-			__objects.push_back(this);
-		}		
-#endif
+		__addToDebugList(this);
 
 		__userData = src.__userData;
 		if (src.__name)
@@ -84,6 +83,11 @@ namespace oxygine
 		__generateID();
 	}
 
+	void ObjectBase::__removeFromDebugList()
+	{
+		__removeFromDebugList(this);		
+	}
+
 	void ObjectBase::__generateID()
 	{
 		__id = ++_lastID;
@@ -94,12 +98,7 @@ namespace oxygine
 
 	ObjectBase::ObjectBase(bool assignID):__userData(0), __name(0), __id(0)
 	{
-#ifdef OXYGINE_DEBUG_OBJECTS
-		{
-			MutexAutoLock m(mutexDebugList);
-			__objects.push_back(this);
-		}		
-#endif
+		__addToDebugList(this);
 
 		if (assignID)
 			__generateID();
@@ -118,7 +117,10 @@ namespace oxygine
 	ObjectBase::~ObjectBase()
 	{
 		OX_ASSERT(_assertDtorID != __id);
+
+#ifdef OXYGINE_DEBUG_TRACE_LEAKS
 		__removeFromDebugList(this);
+#endif
 
 		if (__name)
 		{
@@ -127,14 +129,30 @@ namespace oxygine
 		}
 	}
 
-	void ObjectBase::__removeFromDebugList(ObjectBase *base)
+	void ObjectBase::__addToDebugList(ObjectBase *base)
 	{
-#ifdef OXYGINE_DEBUG_OBJECTS
+#ifdef OXYGINE_DEBUG_TRACE_LEAKS		
 		{
 			MutexAutoLock m(mutexDebugList);
-			createdObjects::iterator i = std::find(__objects.begin(), __objects.end(), base);
-			OX_ASSERT(i != __objects.end());
-			__objects.erase(i);	
+			base->__traceLeak = true;
+			__getCreatedObjects().push_back(base);
+		}		
+#endif
+	}
+
+	void ObjectBase::__removeFromDebugList(ObjectBase *base)
+	{
+#ifdef OXYGINE_DEBUG_TRACE_LEAKS		
+		{
+			MutexAutoLock m_(mutexDebugList);
+			if (base->__traceLeak)
+			{
+				base->__traceLeak = false;   
+				__createdObjects& objs = __getCreatedObjects();
+				__createdObjects::iterator i = std::find(objs.begin(), objs.end(), base);
+				OX_ASSERT(i != objs.end());
+				objs.erase(i);	
+			}			
 		}		
 #endif
 	}
@@ -158,12 +176,13 @@ namespace oxygine
 
 	void ObjectBase::dumpCreatedObjects()
 	{
-#ifdef OXYGINE_DEBUG_OBJECTS
+#ifdef OXYGINE_DEBUG_TRACE_LEAKS
 		MutexAutoLock m(mutexDebugList);
 
 		log::messageln("\n\n\nallocated objects:");
 		int n = 0;		
-		for (createdObjects::iterator i = __objects.begin(); i != __objects.end(); ++i)
+		__createdObjects& objs = __getCreatedObjects();
+		for (__createdObjects::iterator i = objs.begin(); i != objs.end(); ++i)
 		{
 			ObjectBase *object = *i;
 			//log::message("%d)", n);
@@ -171,7 +190,7 @@ namespace oxygine
 
 			++n;
 		}
-		log::message("total: %d -----------------------------\n\n\n", (int)__objects.size());
+		log::message("total: %d -----------------------------\n\n\n", (int)objs.size());
 #endif
 	}
 

+ 9 - 3
oxygine/src/core/Object.h

@@ -54,10 +54,13 @@ namespace oxygine
 		{return ob.getName() < name;}
 
 
-		typedef vector<ObjectBase*> createdObjects;
-		static const createdObjects&	getCreatedObjects(){return __objects;}		
+		//debug functions
+		typedef vector<ObjectBase*> __createdObjects;
+		static __createdObjects&	__getCreatedObjects();
+		void __removeFromDebugList();
 
 	protected:
+		static void __addToDebugList(ObjectBase *base);
 		static void __removeFromDebugList(ObjectBase *base);
 		void __generateID();
 
@@ -67,7 +70,10 @@ namespace oxygine
 		int __id;
 		void *__userData;
 
-		static createdObjects __objects;
+
+#ifdef OXYGINE_DEBUG_TRACE_LEAKS
+		bool __traceLeak;
+#endif
 
 		static int _lastID;
 		static int _assertCtorID;

+ 3 - 3
oxygine/src/core/STDFileSystem.cpp

@@ -148,13 +148,13 @@ namespace oxygine
 #ifdef __S3E__
 				return oxFileSeek(_handle, offset, (s3eFileSeekOrigin)whence);
 #else
-				return oxFileSeek(_handle, offset, whence);
+				return (int)oxFileSeek(_handle, offset, whence);
 #endif
 			}
 
 			unsigned int tell() const
 			{
-				return oxFileTell(_handle);
+				return (unsigned int)oxFileTell(_handle);
 			}
 
 			virtual unsigned int getSize() const
@@ -165,7 +165,7 @@ namespace oxygine
 				oxFileSeek(_handle, 0, ox_FILESEEK_SET);
 				return size;
 #else
-				return SDL_RWsize((SDL_RWops*)_handle);				
+				return (int)SDL_RWsize((SDL_RWops*)_handle);				
 #endif				
 			}
 

+ 1 - 1
oxygine/src/core/android/jniUtils.cpp

@@ -1,5 +1,5 @@
 #include "jniUtils.h"
-#include "jnihelper.h"
+#include "jniHelper.h"
 
 jobject _jmainActivity = 0;
 jclass _jmainActivityClass = 0;

+ 1 - 1
oxygine/src/core/android/jniUtils.h

@@ -1,6 +1,6 @@
 #pragma once
 #include "oxygine_include.h"
-#include "jnihelper.h"
+#include "jniHelper.h"
 #include "core/oxygine.h"
 #include <string>
 

+ 2 - 0
oxygine/src/core/oxygine.cpp

@@ -251,6 +251,8 @@ namespace oxygine
 
 		void init(init_desc *desc_ptr)
 		{
+			Input::instance.__removeFromDebugList();
+
 			log::messageln("initialize oxygine");
 			if (desc_ptr)
 				desc = *desc_ptr;

+ 1 - 1
oxygine/src/oxygine_include.h

@@ -35,7 +35,7 @@
 #endif
 
 #if OX_DEBUG
-	#define OXYGINE_DEBUG_OBJECTS 1
+	#define OXYGINE_DEBUG_TRACE_LEAKS 1
 	#define OXYGINE_DEBUG_T2P 1
 	#define OXYGINE_DEBUG_SAFECAST 1
 	#define OXYGINE_TRACE_VIDEO_STATS 1