Delete leak hunter

This commit is contained in:
sfan5 2023-01-02 20:37:18 +01:00
parent ce0d29df93
commit b5a6dc0a15
4 changed files with 0 additions and 96 deletions

@ -7,10 +7,6 @@
#include "irrTypes.h" #include "irrTypes.h"
#ifdef _IRR_COMPILE_WITH_LEAK_HUNTER_
#include "leakHunter.h"
#endif
namespace irr namespace irr
{ {
@ -50,17 +46,11 @@ namespace irr
IReferenceCounted() IReferenceCounted()
: DebugName(0), ReferenceCounter(1) : DebugName(0), ReferenceCounter(1)
{ {
#ifdef _IRR_COMPILE_WITH_LEAK_HUNTER_
LeakHunter::addObject(this);
#endif
} }
//! Destructor. //! Destructor.
virtual ~IReferenceCounted() virtual ~IReferenceCounted()
{ {
#ifdef _IRR_COMPILE_WITH_LEAK_HUNTER_
LeakHunter::removeObject(this);
#endif
} }
//! Grabs the object. Increments the reference counter by one. //! 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 COSOperator.cpp
Irrlicht.cpp Irrlicht.cpp
os.cpp os.cpp
leakHunter.cpp
CProfiler.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_