From a1d5dd91aae2b129ea53d839f37f28db126d2749 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sun, 9 Oct 2022 03:35:09 +0200 Subject: [PATCH] GL: don't reallocate std::string in DebugOutput --- src/Magnum/GL/DebugOutput.cpp | 6 ++++-- src/Magnum/GL/Implementation/DebugState.h | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Magnum/GL/DebugOutput.cpp b/src/Magnum/GL/DebugOutput.cpp index f434116ee..871ae7180 100644 --- a/src/Magnum/GL/DebugOutput.cpp +++ b/src/Magnum/GL/DebugOutput.cpp @@ -104,8 +104,10 @@ void APIENTRY #endif callbackWrapper(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam) { - const auto& callback = *static_cast(userParam); - callback.callback(DebugOutput::Source(source), DebugOutput::Type(type), id, DebugOutput::Severity(severity), std::string{message, std::size_t(length)}, callback.userParam); + auto& callback = *static_cast(const_cast(userParam)); + callback.buf.reserve(256); + callback.buf.assign(message, std::size_t(length)); + callback.callback(DebugOutput::Source(source), DebugOutput::Type(type), id, DebugOutput::Severity(severity), callback.buf, callback.userParam); } } diff --git a/src/Magnum/GL/Implementation/DebugState.h b/src/Magnum/GL/Implementation/DebugState.h index 912bd5e71..e76a07004 100644 --- a/src/Magnum/GL/Implementation/DebugState.h +++ b/src/Magnum/GL/Implementation/DebugState.h @@ -50,6 +50,7 @@ struct DebugState { struct MessageCallback { DebugOutput::Callback callback{}; const void* userParam{}; + std::string buf; } messageCallback; };