forked from Mirrorlandia_minetest/irrlicht
Delete leak hunter
This commit is contained in:
parent
ce0d29df93
commit
b5a6dc0a15
@ -7,10 +7,6 @@
|
||||
|
||||
#include "irrTypes.h"
|
||||
|
||||
#ifdef _IRR_COMPILE_WITH_LEAK_HUNTER_
|
||||
#include "leakHunter.h"
|
||||
#endif
|
||||
|
||||
namespace irr
|
||||
{
|
||||
|
||||
@ -50,17 +46,11 @@ namespace irr
|
||||
IReferenceCounted()
|
||||
: DebugName(0), ReferenceCounter(1)
|
||||
{
|
||||
#ifdef _IRR_COMPILE_WITH_LEAK_HUNTER_
|
||||
LeakHunter::addObject(this);
|
||||
#endif
|
||||
}
|
||||
|
||||
//! Destructor.
|
||||
virtual ~IReferenceCounted()
|
||||
{
|
||||
#ifdef _IRR_COMPILE_WITH_LEAK_HUNTER_
|
||||
LeakHunter::removeObject(this);
|
||||
#endif
|
||||
}
|
||||
|
||||
//! Grabs the object. Increments the reference counter by one.
|
||||
|
@ -1,70 +0,0 @@
|
||||
// Copyright (C) 2013 Michael Zeilfelder
|
||||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __LEAK_HUNTER_INCLUDED__
|
||||
#define __LEAK_HUNTER_INCLUDED__
|
||||
|
||||
#include "IrrCompileConfig.h"
|
||||
|
||||
#ifdef _IRR_COMPILE_WITH_LEAK_HUNTER_
|
||||
|
||||
#include "irrArray.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
class IReferenceCounted;
|
||||
|
||||
//! A class helping to find unreleased objects of type IReferenceCounted.
|
||||
/** To use this you have recompile Irrlicht with _IRR_COMPILE_WITH_LEAK_HUNTER_.
|
||||
Note that this will slow down your application and should only be used for debugging.
|
||||
The way to use is that you can check after you closed and dropped your last Irrlicht device
|
||||
if there are still any IReferenceCounted left over which have not been deleted.
|
||||
*/
|
||||
class LeakHunter
|
||||
{
|
||||
public:
|
||||
friend class IReferenceCounted;
|
||||
|
||||
//! Clear all IReferenceCounted objects inside LeakHunter
|
||||
/** This does not affect the IReferenceCounted themselves only the
|
||||
counting of them. Usually you don't ever need to clear, but
|
||||
sometimes it helps when for example you want to ignore
|
||||
certain leaks.
|
||||
*/
|
||||
static void clearReferenceCountedObjects()
|
||||
{
|
||||
ReferenceCountedObjects.clear();
|
||||
}
|
||||
|
||||
//! Access all objects which are currently reference counted.
|
||||
static inline irr::core::array<const IReferenceCounted*> getReferenceCountedObjects()
|
||||
{
|
||||
return ReferenceCountedObjects;
|
||||
}
|
||||
|
||||
protected:
|
||||
static inline void addObject(const IReferenceCounted* object)
|
||||
{
|
||||
ReferenceCountedObjects.push_back(object);
|
||||
}
|
||||
|
||||
static inline void removeObject(const IReferenceCounted* object)
|
||||
{
|
||||
irr::s32 idx = ReferenceCountedObjects.linear_search(object );
|
||||
if ( idx >= 0 )
|
||||
{
|
||||
irr::core::swap( ReferenceCountedObjects[idx], ReferenceCountedObjects.getLast() );
|
||||
ReferenceCountedObjects.erase( ReferenceCountedObjects.size()-1 );
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
// NOTE: We don't do additional grab()/drop()'s here as we want to supervise reference counted objects and not affect them otherwise.
|
||||
IRRLICHT_API static irr::core::array<const IReferenceCounted*> ReferenceCountedObjects;
|
||||
};
|
||||
} // end namespace irr
|
||||
|
||||
#endif // _IRR_COMPILE_WITH_LEAK_HUNTER_
|
||||
|
||||
#endif
|
@ -241,7 +241,6 @@ add_library(IRROTHEROBJ OBJECT
|
||||
COSOperator.cpp
|
||||
Irrlicht.cpp
|
||||
os.cpp
|
||||
leakHunter.cpp
|
||||
CProfiler.cpp
|
||||
)
|
||||
|
||||
|
@ -1,15 +0,0 @@
|
||||
// Copyright (C) 2013 Michael Zeilfelder
|
||||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#include "leakHunter.h"
|
||||
|
||||
#ifdef _IRR_COMPILE_WITH_LEAK_HUNTER_
|
||||
|
||||
namespace irr
|
||||
{
|
||||
irr::core::array<const IReferenceCounted*> LeakHunter::ReferenceCountedObjects;
|
||||
} // end namespace irr
|
||||
|
||||
#endif // _IRR_COMPILE_WITH_LEAK_HUNTER_
|
||||
|
Loading…
Reference in New Issue
Block a user