From 1462bfcd0b946a5678a0bad985d29db372c423b5 Mon Sep 17 00:00:00 2001 From: Vasco Correia Date: Sat, 15 Dec 2018 19:32:50 +0000 Subject: [PATCH 1/2] Fix Linux build process Update to use SDL2 2.0.9 Add `XML_DEV_RANDOM` flag to expath linux build Fix compilation error in `zl-gfx` --- cmake/cmake/third-party/expat/CMakeLists.txt | 4 ++++ cmake/cmake/third-party/sdl2/CMakeLists.txt | 4 ++-- src/zl-gfx/ZLGfxDevice.cpp | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/cmake/cmake/third-party/expat/CMakeLists.txt b/cmake/cmake/third-party/expat/CMakeLists.txt index 2dd9cb7a31..4f3793b987 100644 --- a/cmake/cmake/third-party/expat/CMakeLists.txt +++ b/cmake/cmake/third-party/expat/CMakeLists.txt @@ -16,6 +16,10 @@ if ( BUILD_HTML ) set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHAVE_MEMMOVE=1 " ) endif ( BUILD_HTML ) +if ( BUILD_LINUX ) + set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHAVE_MEMMOVE=1 -DXML_DEV_URANDOM" ) +endif ( BUILD_LINUX ) + set ( EXPAT_INCLUDES "${CMAKE_CURRENT_SOURCE_DIR}" ) file ( GLOB_RECURSE EXPAT_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/*.c" ) diff --git a/cmake/cmake/third-party/sdl2/CMakeLists.txt b/cmake/cmake/third-party/sdl2/CMakeLists.txt index 6f85c3528b..54742a07e7 100644 --- a/cmake/cmake/third-party/sdl2/CMakeLists.txt +++ b/cmake/cmake/third-party/sdl2/CMakeLists.txt @@ -2,13 +2,13 @@ cmake_minimum_required ( VERSION 3.0 ) project ( SDL2-static ) include(ExternalProject) -set (SDL2_SOURCE_DIR "${MOAI_ROOT}/3rdparty/sdl2-2.0.4") +set (SDL2_SOURCE_DIR "${MOAI_ROOT}/3rdparty/sdl2-2.0.9") set (SDL2_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/binarydir") ExternalProject_Add(sdl2 SOURCE_DIR "${SDL2_SOURCE_DIR}" CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/install" -DSDL_SHARED=OFF -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DLIBC=ON CMAKE_CACHE_ARGS "-DSDL2_SOURCE_DIR:string=${SDL2_SOURCE_DIR}" "-DSDL2_BINARY_DIR:string=${SDL2_BINARY_DIR}" "-DSDL_STATIC:bool=on" "-DSDL_SHARED:bool=off" - PREFIX "${CMAKE_CURRENT_BINARY_DIR}/sdl2-2.0.4" + PREFIX "${CMAKE_CURRENT_BINARY_DIR}/sdl2-2.0.9" INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/install" ) diff --git a/src/zl-gfx/ZLGfxDevice.cpp b/src/zl-gfx/ZLGfxDevice.cpp index 409956b727..92287f6880 100644 --- a/src/zl-gfx/ZLGfxDevice.cpp +++ b/src/zl-gfx/ZLGfxDevice.cpp @@ -124,7 +124,7 @@ void ZLGfxDevice::Initialize () { // if framebuffer object is not in code, check to see if it's available as // an extension and remap to core function pointers if so - if (( isOpenGLES == false ) && ( majorVersion < 3 )) { + if (( isOpenGLES == false ) && ( sMajorVersion < 3 )) { if ( glewIsSupported ( "GL_EXT_framebuffer_object" )) { From 33de008289693645d66dffae7ce5d13267d4f6f0 Mon Sep 17 00:00:00 2001 From: Vasco Correia Date: Fri, 8 Feb 2019 21:44:27 +0000 Subject: [PATCH 2/2] Fix for windows compilation --- src/moai-core/MOAILuaRuntime.cpp | 258 +++++++++++++++---------------- src/moai-sim/MOAIFrameBuffer.cpp | 46 +++--- 2 files changed, 152 insertions(+), 152 deletions(-) diff --git a/src/moai-core/MOAILuaRuntime.cpp b/src/moai-core/MOAILuaRuntime.cpp index b5c7b351e1..e14210e73d 100644 --- a/src/moai-core/MOAILuaRuntime.cpp +++ b/src/moai-core/MOAILuaRuntime.cpp @@ -130,7 +130,7 @@ typedef STLSet < struct Table* > TableSet; case LUA_TUSERDATA: if ( lua_islightuserdata ( state, idx ) ) { - + ZLLogF ( ZLLog::CONSOLE, format, lua_topointer ( state, idx ) , "light userdata", name ); } else { @@ -141,7 +141,7 @@ typedef STLSet < struct Table* > TableSet; lua_getglobal ( state, "tostring" ); lua_pushvalue ( state, idx ); - + lua_pcall ( state, 1, 1, 0 ); ZLLogF ( ZLLog::CONSOLE, "\n\t%s", lua_tostring ( state, -1 )); @@ -161,7 +161,7 @@ typedef STLSet < struct Table* > TableSet; static void _dumpTypeByAddress ( lua_State* L, TValue* tvalue, const char *name, bool verbose, TableSet& foundTables ) { MOAILuaState state ( L ); - + lua_lock ( L ); setobj2s ( L, L->top, tvalue ); L->top++; @@ -246,7 +246,7 @@ int MOAILuaRuntime::_dumpStack ( lua_State* L ) { _dumpTypeByAddress ( state, tvalue, "", verbose, foundTables ); } #endif - + return 0; } @@ -274,7 +274,7 @@ int MOAILuaRuntime::_forceGC ( lua_State* L ) { */ int MOAILuaRuntime::_getHistogram ( lua_State* L ) { MOAILuaState state ( L ); - + cc8* trackingGroup = state.GetValue < cc8* >( 1, 0 ); MOAILuaRuntime::Get ().PushHistogram ( state, trackingGroup ); return 1; @@ -296,7 +296,7 @@ int MOAILuaRuntime::_panic ( lua_State *L ) { MOAILuaState state ( L ); state.LogStackTrace ( ZLLog::LOG_FATAL, ZLLog::CONSOLE, NULL, 1 ); ZLLog_FatalF ( ZLLog::CONSOLE, "PANIC: unprotected error in call to Lua API (%s)\n", lua_tostring ( L, -1 )); - + return 0; } @@ -321,9 +321,9 @@ int MOAILuaRuntime::_reportHistogram ( lua_State* L ) { cc8* filename = state.GetValue < cc8* >( 1, 0 ); cc8* trackingGroup = state.GetValue < cc8* >( 2, 0 ); - + MOAILuaRuntime::Get ().ReportHistogram ( filename, trackingGroup ); - + return 0; } @@ -333,22 +333,22 @@ int MOAILuaRuntime::_reportHistogram ( lua_State* L ) { report of where they were declared, and what Lua references (if any) can be found. NOTE: This is incredibly slow, so only use to debug leaking memory issues. - + This will also trigger a full garbage collection before performing the required report. (Equivalent of collectgarbage("collect").) - + @opt string filename @opt string trackingGroup @out nil */ int MOAILuaRuntime::_reportLeaks ( lua_State* L ) { MOAILuaState state ( L ); - + cc8* filename = state.GetValue < cc8* >( 1, 0 ); cc8* trackingGroup = state.GetValue < cc8* >( 2, 0 ); - + MOAILuaRuntime::Get ().ReportLeaksFormatted ( filename, trackingGroup ); - + return 0; } @@ -360,7 +360,7 @@ int MOAILuaRuntime::_reportLeaks ( lua_State* L ) { being created. NOTE: This is expensive in terms of both CPU and the extra memory associated with the stack info book-keeping. Use only when tracking down leaks. - + @opt number flags Bitwise combination of TRACK_OBJECTS and TRACK_OBJECTS_STACK_TRACE. Default value is 0. @out nil */ @@ -373,28 +373,28 @@ int MOAILuaRuntime::_setTrackingFlags ( lua_State* L ) { //----------------------------------------------------------------// int MOAILuaRuntime::_traceback ( lua_State *L ) { - + MOAILuaRuntime& runtime = MOAILuaRuntime::Get (); MOAILuaState state ( L ); - + cc8* msg = NULL; if ( lua_isstring ( L, 1 )) { // 'message' a string? msg = lua_tostring ( L, 1 ); } - + if ( runtime.mTracebackFunc ) { runtime.mTracebackFunc ( msg, L, 0 ); } - + if ( runtime.mTracebackRef ) { - + if ( runtime.mTracebackRef.PushRef ( state )) { - + lua_pushvalue ( state, 1 ); int result = lua_pcall ( state, 1, 0, 2 ); if ( !result ) return 0; - + ZLLog_ErrorF ( ZLLog::CONSOLE, "error in user supplied traceback func\n" ); ZLLog_ErrorF ( ZLLog::CONSOLE, "falling back on default error handler:\n" ); } @@ -411,10 +411,10 @@ int MOAILuaRuntime::_traceback ( lua_State *L ) { //----------------------------------------------------------------// void* MOAILuaRuntime::_trackingAlloc ( void *ud, void *ptr, size_t osize, size_t nsize ) { UNUSED ( ud ); - + if ( MOAILuaRuntime::IsValid ()) { MOAILuaRuntime& self = MOAILuaRuntime::Get (); - + if ( nsize == 0 ) { self.mTotalBytes -= osize; free ( ptr ); @@ -429,7 +429,7 @@ void* MOAILuaRuntime::_trackingAlloc ( void *ud, void *ptr, size_t osize, size_t self.mTotalBytes += nsize; return realloc ( ptr, nsize ); } - + if ( nsize == 0 ) { free ( ptr ); return NULL; @@ -447,13 +447,13 @@ void MOAILuaRuntime::BuildHistogram ( HistMap& histogram, cc8* trackingGroup ) { TrackingMapIt trackingMapIt = this->mTrackingMap.begin (); for ( ; trackingMapIt != this->mTrackingMap.end (); ++trackingMapIt ) { - + MOAILuaObjectInfo& info = trackingMapIt->second; if ( trackingGroup && ( info.mTrackingGroup.compare ( trackingGroup ) != 0 )) continue; - + MOAILuaObject* obj = trackingMapIt->first; cc8* name = obj->TypeName (); - + if ( !histogram.contains ( name )) { histogram [ name ] = 1; } @@ -473,16 +473,16 @@ void MOAILuaRuntime::CacheUserdata ( MOAILuaState& state, int idx ) { state.Pop (); } } - + if ( !this->mUserdataCache ) { lua_newtable ( state ); this->mUserdataCache.SetRef ( state, -1 ); } - + lua_pushvalue ( state, idx ); lua_pushvalue ( state, idx ); lua_settable ( state, -3 ); - + state.Pop (); } @@ -529,17 +529,17 @@ void MOAILuaRuntime::FindLuaRefs ( lua_State* L, FILE* file, cc8* trackingGroup, traversalState.mPathMap.clear (); traversalState.mIgnoreTraversed = false; - + // check all the globals lua_pushglobaltable ( state ); this->FindLuaRefs ( state, -1, file, "_G", trackingGroup, traversalState ); state.Pop ( 1 ); - + traversalState.mIgnoreTraversed = true; - + // check the stack this->FindLuaRefs ( state, file, "", trackingGroup, traversalState ); - + // print the strong refs this->mStrongRefs.PushRefTable ( state ); this->FindLuaRefs ( state, -1, file, "", trackingGroup, traversalState ); @@ -553,16 +553,16 @@ void MOAILuaRuntime::FindLuaRefs ( lua_State* L, FILE* file, STLString path, cc8 lua_Debug ar; for ( int level = 0; lua_getstack ( state, level, &ar ) != 0; ++level ) { - + STLString stackPath = STLString::build ( "%s[stack: %d]", path.c_str (), level ); - + cc8* localname; for ( int i = 1; ( localname = lua_getlocal ( state, &ar, i )) != NULL; ++i ) { STLString localPath = STLString::build ( "%s.%s", stackPath.c_str (), localname ); this->FindLuaRefs ( state, -1, file, localPath.c_str (), trackingGroup, traversalState ); state.Pop ( 1 ); } - + lua_getinfo ( state, "f", &ar ); this->FindLuaRefs ( state, -1, file, STLString::build ( "%s.", path.c_str ()), trackingGroup, traversalState ); state.Pop ( 1 ); @@ -578,9 +578,9 @@ void MOAILuaRuntime::FindLuaRefs ( lua_State* L, int idx, FILE* file, STLString L = L ? L : ( lua_State* )this->mState; MOAILuaState state ( L ); idx = state.AbsIndex ( idx ); - + int type = lua_type ( state, idx ); - + switch ( type ) { case LUA_TNIL: case LUA_TBOOLEAN: @@ -591,9 +591,9 @@ void MOAILuaRuntime::FindLuaRefs ( lua_State* L, int idx, FILE* file, STLString default: break; } - + lua_checkstack ( state, 255 ); - + if ( type == LUA_TUSERDATA ) { MOAILuaObject* object = MOAILuaObject::IsMoaiUserdata ( state, idx ) ? ( MOAILuaObject* )state.GetPtrUserData ( idx ) : NULL; if ( object && this->mTrackingMap.contains ( object )) { @@ -605,47 +605,47 @@ void MOAILuaRuntime::FindLuaRefs ( lua_State* L, int idx, FILE* file, STLString } } } - + // bail if we've already iterated into this item const void* addr = lua_topointer ( state, idx ); - + if ( traversalState.mIgnoreSet.contains ( addr )) return; // always ignore if ( traversalState.mTraversalStack.contains ( addr )) return; if ( traversalState.mIgnoreTraversed && ( traversalState.mTraversalSet.contains ( addr ))) return; - + traversalState.mTraversalStack.affirm ( addr ); traversalState.mTraversalSet.affirm ( addr ); - + //printf ( "%d %s\n", idx, path.c_str ()); - + switch ( type ) { - + // how to deal with weak tables? case LUA_TTABLE: { - + u32 itr = state.PushTableItr ( idx ); while ( state.TableItrNext ( itr )) { - + STLString keyPath = path; - + int keyIdx = state.AbsIndex ( -2 ); int valIdx = state.AbsIndex ( -1 ); int keyType = lua_type ( state, keyIdx ); cc8* keyName = lua_tostring ( state, keyIdx ); - + // update the path and follow the keys (if iterable) switch ( keyType ) { - + case LUA_TLIGHTUSERDATA: keyPath.write ( "[%p]", lua_topointer ( state, keyIdx )); break; - + case LUA_TBOOLEAN: case LUA_TNUMBER: keyPath.write ( "[%s]", keyName ); break; - + case LUA_TSTRING: if ( MOAILuaRuntime::IsLuaIdentifier ( keyName )) { keyPath.write ( ".%s", keyName ); @@ -654,28 +654,28 @@ void MOAILuaRuntime::FindLuaRefs ( lua_State* L, int idx, FILE* file, STLString keyPath.write ( "[\'%s\']", keyName ); } break; - + default: { - + STLString keyTypeName; const void* keyAddr = lua_topointer ( state, keyIdx ); - + switch ( keyType ) { - + case LUA_TFUNCTION: keyTypeName = "function"; break; - + case LUA_TTABLE: keyTypeName = "table"; break; - + case LUA_TTHREAD: keyTypeName = "thread"; break; - + case LUA_TUSERDATA: - + if ( MOAILuaObject::IsMoaiUserdata ( state, keyIdx )) { MOAILuaObject* object = state.GetLuaObject < MOAILuaObject >( keyIdx, false ); keyTypeName = object->TypeName (); @@ -686,63 +686,63 @@ void MOAILuaRuntime::FindLuaRefs ( lua_State* L, int idx, FILE* file, STLString } break; } - + keyPath.write ( "[%s: %p]", keyTypeName.c_str (), keyAddr ); this->FindLuaRefs ( state, keyIdx, file, STLString::build ( "%s(as key)", keyPath.c_str ()), trackingGroup, traversalState ); } } - + // follow the values this->FindLuaRefs ( state, valIdx, file, keyPath, trackingGroup, traversalState ); } break; } - + case LUA_TFUNCTION: { - + cc8* upname; for ( int i = 1; ( upname = lua_getupvalue ( state, idx, i )) != NULL; ++i ) { STLString upPath = STLString::build ( "%s.", upname ); } else { upPath.write ( "%d>", i ); } - + this->FindLuaRefs ( state, -1, file, upPath.c_str (), trackingGroup, traversalState ); state.Pop ( 1 ); } - + lua_getfenv ( state, idx ); this->FindLuaRefs ( state, -1, file, STLString::build ( "%s.", path.c_str (), lua_topointer ( state, -1 )), trackingGroup, traversalState ); traversalState.mIgnoreSet.affirm ( lua_topointer ( state, -1 )); state.Pop ( 1 ); break; } - + case LUA_TTHREAD: { - + STLString threadPath = STLString::build ( "%s.", path.c_str ()); MOAILuaState threadState ( lua_tothread ( state, idx )); this->FindLuaRefs ( threadState, file, threadPath, trackingGroup, traversalState ); break; } } - + // follow the metatable if (( type == LUA_TTABLE ) || ( type == LUA_TUSERDATA )) { - + MOAILuaObject* object = MOAILuaObject::IsMoaiUserdata ( state, idx ) ? ( MOAILuaObject* )state.GetPtrUserData ( idx ) : NULL; - + if ( object ) { - + // iterate the member table *first* object->PushMemberTable ( state ); this->FindLuaRefs ( state, -1, file, STLString::build ( "%s.", path.c_str ()), trackingGroup, traversalState ); state.Pop ( 1 ); - + object->PushRefTable ( state ); this->FindLuaRefs ( state, -1, file, STLString::build ( "%s.", path.c_str ()), trackingGroup, traversalState ); state.Pop ( 1 ); @@ -754,7 +754,7 @@ void MOAILuaRuntime::FindLuaRefs ( lua_State* L, int idx, FILE* file, STLString } } } - + traversalState.mTraversalStack.erase ( addr ); } @@ -771,20 +771,20 @@ void MOAILuaRuntime::ForceGarbageCollection () { // calls the metamethod and marks the userdata as finalized. When // this userdata is collected again then Lua frees its corresponding // memory." - + // collect until no more changes in memory use or object count are registered bool more = true; while ( more ) { - + size_t b0 = this->mTotalBytes; size_t c0 = this->mObjectCount; - + lua_gc ( L, LUA_GCCOLLECT, 0 ); lua_gc ( L, LUA_GCCOLLECT, 0 ); - + size_t b1 = this->mTotalBytes; size_t c1 = this->mObjectCount; - + if (( b0 == b1 ) && ( c0 == c1 )) { more = false; } @@ -809,7 +809,7 @@ MOAILuaState& MOAILuaRuntime::GetMainState () { //----------------------------------------------------------------// int MOAILuaRuntime::GetRef ( MOAILuaState& state, int idx, u32 type ) { - + if ( state.IsNilOrNone ( idx )) return LUA_NOREF; return ( type == MOAILuaRef::MAKE_WEAK ) ? ( this->mWeakRefs.Ref ( state, idx ) | WEAK_REF_BIT ) : this->mStrongRefs.Ref ( state, idx ); } @@ -826,7 +826,7 @@ bool MOAILuaRuntime::IsLuaIdentifier ( const char *str ) { //----------------------------------------------------------------// bool MOAILuaRuntime::IsOpen () { - return ( this->mState != 0 ); + return ( static_cast(this->mState) != 0 ); } //----------------------------------------------------------------// @@ -841,13 +841,13 @@ int MOAILuaRuntime::MakeStrong ( int refID ) { if ( refID == LUA_NOREF ) return LUA_NOREF; if ( !( refID & WEAK_REF_BIT )) return refID; - + this->mWeakRefs.PushRef ( this->mState, refID ); this->mWeakRefs.Unref ( refID & REF_MASK ); - + refID = this->GetRef ( this->mState, refID, false ); this->mState.Pop (); - + return refID; } @@ -856,13 +856,13 @@ int MOAILuaRuntime::MakeWeak ( int refID ) { if ( refID == LUA_NOREF ) return LUA_NOREF; if ( refID & WEAK_REF_BIT ) return refID; - + this->mStrongRefs.PushRef ( this->mState, refID ); this->mStrongRefs.Unref ( refID & REF_MASK ); - + refID = this->GetRef ( this->mState, refID, true ); this->mState.Pop (); - + return refID; } @@ -898,13 +898,13 @@ MOAIScopedLuaState MOAILuaRuntime::Open () { #else this->mState = lua_newstate ( _trackingAlloc, NULL ); #endif - + lua_atpanic ( this->mState, &_panic ); // set up the ref tables this->mStrongRefs.InitStrong (); this->mWeakRefs.InitWeak (); - + return MOAIScopedLuaState ( this->mState ); } @@ -914,7 +914,7 @@ void MOAILuaRuntime::PurgeUserdata ( MOAILuaState& state, int idx ) { idx = state.AbsIndex ( idx ); if ( this->mUserdataCache.PushRef ( state )) { - + lua_pushvalue ( state, idx ); lua_pushnil ( state ); lua_settable ( state, -3 ); @@ -930,18 +930,18 @@ void MOAILuaRuntime::PurgeUserdataCache () { //----------------------------------------------------------------// void MOAILuaRuntime::PushHistogram ( MOAILuaState& state, cc8* trackingGroup ) { - + lua_newtable ( state ); - + HistMap histogram; this->BuildHistogram ( histogram, trackingGroup ); - + HistMap::iterator histogramIt = histogram.begin (); for ( ; histogramIt != histogram.end (); ++histogramIt ) { - + const STLString& name = histogramIt->first; size_t count = histogramIt->second; - + lua_pushstring ( state, name ); lua_pushnumber ( state, ( lua_Number )count ); lua_settable ( state, -3 ); @@ -967,7 +967,7 @@ bool MOAILuaRuntime::PushRef ( MOAILuaState& state, int refID ) { //----------------------------------------------------------------// void MOAILuaRuntime::PushTraceback ( MOAILuaState& state ) { - + state.Push ( _traceback ); } @@ -975,7 +975,7 @@ void MOAILuaRuntime::PushTraceback ( MOAILuaState& state ) { void MOAILuaRuntime::PrintTracking ( MOAILuaObject& object ) { if ( this->mTrackingMap.contains ( &object )) { - + ZLLogF ( ZLLog::CONSOLE, "Object <%p> created at:\n", &object ); ZLLogF ( ZLLog::CONSOLE, "%s", this->mTrackingMap [ &object ].mStackTrace.c_str ()); } @@ -1024,9 +1024,9 @@ void MOAILuaRuntime::RegisterObject ( MOAILuaObject& object ) { if ( this != &object ) { this->mObjectCount++; - + if ( this->mTrackingFlags & TRACK_OBJECTS ) { - + MOAILuaObjectInfo& info = this->mTrackingMap [ &object ]; info.mTrackingGroup = this->mTrackingGroup; } @@ -1037,9 +1037,9 @@ void MOAILuaRuntime::RegisterObject ( MOAILuaObject& object ) { void MOAILuaRuntime::RegisterObject ( MOAILuaState& state, MOAILuaObject& object ) { if ( this != &object ) { - + if ( this->mTrackingFlags & TRACK_OBJECTS_STACK_TRACE ) { - + MOAILuaObjectInfo& info = this->mTrackingMap [ &object ]; info.mStackTrace = state.GetStackTrace ( "object allocation:", 1 ); } @@ -1048,29 +1048,29 @@ void MOAILuaRuntime::RegisterObject ( MOAILuaState& state, MOAILuaObject& object //----------------------------------------------------------------// void MOAILuaRuntime::ReportHistogram ( cc8* filename, cc8* trackingGroup ) { - + FILE* file = 0; if ( filename ) { file = fopen ( filename, "w" ); assert ( file ); } - + size_t totalTracked = this->mTrackingMap.size (); ZLLogF ( file, "tracking %d of %d allocated MOAIObjects\n", ( int )totalTracked, ( int )this->mObjectCount ); - + HistMap histogram; this->BuildHistogram ( histogram, trackingGroup ); - + HistMap::iterator histogramIt = histogram.begin (); for ( ; histogramIt != histogram.end (); ++histogramIt ) { - + const STLString& name = histogramIt->first; size_t count = histogramIt->second; float percent = (( float )count / ( float )totalTracked ) * 100.0f; - + ZLLogF ( file, "%-32.32s %d (%.2f%% of %d)\n", name.str (), ( int )count, percent, ( int )totalTracked ); } - + if ( file ) { fclose ( file ); } @@ -1086,39 +1086,39 @@ void MOAILuaRuntime::ReportLeaksFormatted ( cc8* filename, cc8* trackingGroup ) } MOAILuaState& state = this->mState; - + // Update Lua references for all tracked objects MOAILuaTraversalState traversalState; this->FindLuaRefs ( state, file, trackingGroup, traversalState ); - + // Correlate leaks by identical stack traces. LeakStackMap stacks; - + for ( TrackingMapConstIt i = this->mTrackingMap.begin (); i != this->mTrackingMap.end (); ++i ) { const MOAILuaObjectInfo& info = i->second; if ( trackingGroup && ( info.mTrackingGroup.compare ( trackingGroup ) != 0 )) continue; - + ObjectSet& objectSet = stacks [ info.mStackTrace ]; objectSet.affirm ( i->first ); } - + ZLLogF ( file, "------------------------------------------------\n" ); ZLLogF ( file, "-- BEGIN LUA OBJECT LEAKS --\n" ); - + // Then, print out each unique allocation spot along with all references // (including multiple references) followed by the alloction stack int top = state.GetTop (); UNUSED ( top ); - + for ( LeakStackMapIt i = stacks.begin (); i != stacks.end (); ++i ) { - + const ObjectSet& objectSet = i->second; ZLLogF ( file, "Allocation: %lu\n", objectSet.size ()); - + for ( ObjectSetConstIt objectSetIt = objectSet.begin (); objectSetIt != objectSet.end (); ++objectSetIt ) { const MOAILuaObject* object = *objectSetIt; ZLLogF ( file, "<%s> %p\n", object->TypeName (), object ); - + if ( traversalState.mPathMap.contains ( object )) { MOAILuaTraversalState::StringSet& pathSet = traversalState.mPathMap [ object ]; for ( MOAILuaTraversalState::StringSetIt j = pathSet.begin (); j != pathSet.end (); ++j ) { @@ -1126,16 +1126,16 @@ void MOAILuaRuntime::ReportLeaksFormatted ( cc8* filename, cc8* trackingGroup ) } } } - + // print the stack trace ZLLogF ( file, i->first.c_str ()); ZLLogF ( file, "\n" ); } - + assert ( top == state.GetTop ()); - + ZLLogF ( file, "-- END LUA LEAKS --\n" ); - + if ( file ) { fclose ( file ); } @@ -1151,10 +1151,10 @@ void MOAILuaRuntime::ReportLeaksRaw ( cc8* filename, cc8* trackingGroup ) { } this->ForceGarbageCollection (); - + ZLLogF ( file, "-- LUA OBJECT LEAK REPORT ------------\n" ); u32 count = 0; - + for ( TrackingMap::const_iterator i = this->mTrackingMap.begin () ; i != this->mTrackingMap.end (); ++i ) { const MOAILuaObjectInfo& info = i->second; if ( trackingGroup && ( info.mTrackingGroup.compare ( trackingGroup ) != 0 )) continue; @@ -1162,7 +1162,7 @@ void MOAILuaRuntime::ReportLeaksRaw ( cc8* filename, cc8* trackingGroup ) { count++; } ZLLogF ( file, "-- END LEAK REPORT (Total Objects: %d) ---------\n", count ); - + if ( file ) { fclose ( file ); } @@ -1193,7 +1193,7 @@ void MOAILuaRuntime::SetPath ( cc8* path ) { void MOAILuaRuntime::SetTrackingFlags ( u32 flags ) { this->mTrackingFlags = flags; - + if ( !flags ) { this->ResetTracking (); } diff --git a/src/moai-sim/MOAIFrameBuffer.cpp b/src/moai-sim/MOAIFrameBuffer.cpp index ba65b8b655..5fa447bb71 100644 --- a/src/moai-sim/MOAIFrameBuffer.cpp +++ b/src/moai-sim/MOAIFrameBuffer.cpp @@ -19,18 +19,18 @@ @in MOAIFrameBuffer self @opt boolean discard If true, image will be discarded from the frame buffer. @out MOAIImage image The frame grab image, or nil if none exists. -*/ +*/ int MOAIFrameBuffer::_getGrabbedImage ( lua_State* L ) { MOAI_LUA_SETUP ( MOAIFrameBuffer, "U" ) - + bool discard = state.GetValue < bool >( 2, false ); - + self->mFrameImage.PushRef ( state ); - + if ( discard ) { self->mFrameImage.Set ( *self, 0 ); } - + return 1; } @@ -49,19 +49,19 @@ int MOAIFrameBuffer::_grabNextFrame ( lua_State* L ) { MOAI_LUA_SETUP ( MOAIFrameBuffer, "U" ) MOAIImage* image = state.GetLuaObject < MOAIImage >( 2, false ); - + if ( image ) { self->mFrameImage.Set ( *self, image ); } else if ( !self->mFrameImage ) { - + image = new MOAIImage (); image->Init ( self->mBufferWidth, self->mBufferHeight, ZLColor::RGBA_8888, MOAIImage::TRUECOLOR ); self->mFrameImage.Set ( *self, image ); } - - self->mGrabNextFrame = self->mFrameImage != 0; - + + self->mGrabNextFrame = static_cast(self->mFrameImage) != 0; + if ( self->mGrabNextFrame ) { self->mOnFrameFinish.SetRef ( *self, state, 3 ); } @@ -75,7 +75,7 @@ int MOAIFrameBuffer::_grabNextFrame ( lua_State* L ) { //----------------------------------------------------------------// /** @lua isPendingGrab @text True if a frame grab has been requested but not yet grabbed. - + @in MOAIFrameBuffer self @out table renderTable */ @@ -109,7 +109,7 @@ ZLRect MOAIFrameBuffer::GetBufferRect () const { rect.mYMin = 0; rect.mXMax = ( float )this->mBufferWidth; rect.mYMax = ( float )this->mBufferHeight; - + return rect; } @@ -155,7 +155,7 @@ MOAIFrameBuffer::MOAIFrameBuffer () : mLandscape ( false ), mNeedsClear ( true ), mGrabNextFrame ( false ) { - + RTTI_BEGIN RTTI_EXTEND ( MOAILuaObject ) RTTI_END @@ -185,7 +185,7 @@ void MOAIFrameBuffer::OnReadPixels ( const ZLCopyOnWrite& buffer, void * userdat this->mGrabNextFrame = false; MOAIImage* image = this->mFrameImage; - + if ( image ) { image->Init ( buffer.GetBuffer (), this->mBufferWidth, this->mBufferHeight, ZLColor::RGBA_8888 ); @@ -228,11 +228,11 @@ void MOAIFrameBuffer::RegisterLuaFuncs ( MOAILuaState& state ) { // //this->mLastDrawCount = gfxMgr.GetDrawCount (); // // gfxState.SetFrameBuffer ( this ); -// +// // //disable scissor rect for clear // gfxState.SetScissorRect (); // this->ClearSurface (); -// +// // if ( this->mRenderTable ) { // MOAIScopedLuaState state = MOAILuaRuntime::Get ().State (); // state.Push ( this->mRenderTable ); @@ -249,7 +249,7 @@ void MOAIFrameBuffer::RegisterLuaFuncs ( MOAILuaState& state ) { // ZLGfx& gfx = MOAIGfxMgr::GetDrawingAPI (); // gfx.ReadPixels ( 0, 0, this->mBufferWidth, this->mBufferHeight, ZGL_PIXEL_FORMAT_RGBA, ZGL_PIXEL_TYPE_UNSIGNED_BYTE, 4, this, 0 ); // } -// +// // this->mRenderCounter++; // //this->mLastDrawCount = gfxMgr.GetDrawCount () - this->mLastDrawCount; //} @@ -274,28 +274,28 @@ ZLRect MOAIFrameBuffer::WndRectToDevice ( ZLRect rect ) const { rect.Bless (); if ( this->mLandscape ) { - + float width = ( float )this->mBufferWidth; - + float xMin = rect.mYMin; float yMin = width - rect.mXMax; float xMax = rect.mYMax; float yMax = width - rect.mXMin; - + rect.mXMin = xMin; rect.mYMin = yMin; rect.mXMax = xMax; rect.mYMax = yMax; } else { - + float height = ( float )this->mBufferHeight; - + float xMin = rect.mXMin; float yMin = height - rect.mYMax; float xMax = rect.mXMax; float yMax = height - rect.mYMin; - + rect.mXMin = xMin; rect.mYMin = yMin; rect.mXMax = xMax;