Add some debug helpers around this area

This commit is contained in:
sfan5 2024-09-12 17:18:13 +02:00
parent 6f275e2ba0
commit 58ea11c2b3
5 changed files with 37 additions and 3 deletions

@ -7,6 +7,13 @@
#include <vector>
#include "IIndexBuffer.h"
// Define to receive warnings when violating the hw mapping hints
//#define INDEXBUFFER_HINT_DEBUG
#ifdef INDEXBUFFER_HINT_DEBUG
#include "../src/os.h"
#endif
namespace irr
{
namespace scene
@ -58,6 +65,13 @@ public:
void setDirty() override
{
++ChangedID;
#ifdef INDEXBUFFER_HINT_DEBUG
if (MappingHint == EHM_STATIC && HWBuffer) {
char buf[100];
snprintf_irr(buf, sizeof(buf), "CIndexBuffer @ %p modified, but it has a static hint", this);
os::Printer::log(buf, ELL_WARNING);
}
#endif
}
u32 getChangedID() const override { return ChangedID; }

@ -7,6 +7,13 @@
#include <vector>
#include "IVertexBuffer.h"
// Define to receive warnings when violating the hw mapping hints
//#define VERTEXBUFFER_HINT_DEBUG
#ifdef VERTEXBUFFER_HINT_DEBUG
#include "../src/os.h"
#endif
namespace irr
{
namespace scene
@ -87,6 +94,13 @@ public:
void setDirty() override
{
++ChangedID;
#ifdef VERTEXBUFFER_HINT_DEBUG
if (MappingHint == EHM_STATIC && HWBuffer) {
char buf[100];
snprintf_irr(buf, sizeof(buf), "CVertexBuffer @ %p modified, but it has a static hint", this);
os::Printer::log(buf, ELL_WARNING);
}
#endif
}
u32 getChangedID() const override { return ChangedID; }

@ -42,7 +42,7 @@ class IReferenceCounted
public:
//! Constructor.
IReferenceCounted() :
DebugName(0), ReferenceCounter(1)
ReferenceCounter(1)
{
}
@ -136,6 +136,7 @@ public:
return ReferenceCounter;
}
#ifdef _DEBUG
//! Returns the debug name of the object.
/** The Debugname may only be set and changed by the object
itself. This method should only be used in Debug mode.
@ -157,7 +158,10 @@ protected:
private:
//! The debug name.
const c8 *DebugName;
const c8 *DebugName = nullptr;
#endif
private:
//! The reference counter. Mutable to do reference counting on const objects.
mutable s32 ReferenceCounter;

@ -510,6 +510,9 @@ target_link_libraries(IrrlichtMt PRIVATE
if(WIN32)
target_compile_definitions(IrrlichtMt INTERFACE _IRR_WINDOWS_API_) # used in _IRR_DEBUG_BREAK_IF definition in a public header
endif()
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
target_compile_definitions(IrrlichtMt INTERFACE _DEBUG) # same
endif()
if(APPLE OR ANDROID OR EMSCRIPTEN)
target_compile_definitions(IrrlichtMt PUBLIC IRR_MOBILE_PATHS)
endif()

@ -52,7 +52,6 @@ public:
// prints out a string to the console out stdout or debug log or whatever
static void print(const c8 *message, ELOG_LEVEL ll = ELL_INFORMATION);
static void log(const c8 *message, ELOG_LEVEL ll = ELL_INFORMATION);
static void log(const wchar_t *message, ELOG_LEVEL ll = ELL_INFORMATION);
// The string ": " is added between message and hint
static void log(const c8 *message, const c8 *hint, ELOG_LEVEL ll = ELL_INFORMATION);