From 12d9901472c6f9128fa8b16c25b3a879d1859e60 Mon Sep 17 00:00:00 2001 From: Tom Englund Date: Thu, 15 Aug 2024 18:16:18 +0200 Subject: [PATCH 2/2] protocols: refactor protocol logging to a macro (#7324) this avoids the usage of the unique_ptr PROTO::protocol before it has been constructed incase one wants to log something inside the constructor itself, move the logging to macros and print file:linenumber on ERR,CRIT,WARN and classname on the rest of the levels. --- src/protocols/AlphaModifier.cpp | 2 -- src/protocols/CursorShape.cpp | 2 -- src/protocols/DRMLease.cpp | 4 +-- src/protocols/DRMSyncobj.cpp | 2 -- src/protocols/DataDeviceWlr.cpp | 2 -- src/protocols/FocusGrab.cpp | 2 -- src/protocols/ForeignToplevel.cpp | 2 -- src/protocols/ForeignToplevelWlr.cpp | 2 -- src/protocols/FractionalScale.cpp | 2 -- src/protocols/GammaControl.cpp | 2 -- src/protocols/GlobalShortcuts.cpp | 2 -- src/protocols/IdleNotify.cpp | 2 -- src/protocols/InputMethodV2.cpp | 2 -- src/protocols/LayerShell.cpp | 2 -- src/protocols/LinuxDMABUF.cpp | 10 +++---- src/protocols/MesaDRM.cpp | 8 ++---- src/protocols/OutputManagement.cpp | 2 -- src/protocols/OutputPower.cpp | 2 -- src/protocols/PointerConstraints.cpp | 2 -- src/protocols/PointerGestures.cpp | 2 -- src/protocols/PresentationTime.cpp | 2 -- src/protocols/PrimarySelection.cpp | 2 -- src/protocols/Screencopy.cpp | 2 -- src/protocols/ServerDecorationKDE.cpp | 2 -- src/protocols/SessionLock.cpp | 2 -- src/protocols/ShortcutsInhibit.cpp | 2 -- src/protocols/Tablet.cpp | 2 -- src/protocols/TextInputV1.cpp | 2 -- src/protocols/TextInputV3.cpp | 2 -- src/protocols/ToplevelExport.cpp | 2 -- src/protocols/Viewporter.cpp | 2 -- src/protocols/VirtualKeyboard.cpp | 2 -- src/protocols/VirtualPointer.cpp | 2 -- src/protocols/WaylandProtocol.cpp | 4 +-- src/protocols/WaylandProtocol.hpp | 40 +++++++++++++++++++++------ src/protocols/XDGActivation.cpp | 2 -- src/protocols/XDGDecoration.cpp | 2 -- src/protocols/XDGOutput.cpp | 2 -- src/protocols/XDGShell.cpp | 2 -- src/protocols/XWaylandShell.cpp | 2 -- src/protocols/core/Compositor.cpp | 2 -- src/protocols/core/DataDevice.cpp | 2 -- src/protocols/core/Seat.cpp | 2 -- src/protocols/core/Shm.cpp | 2 -- src/protocols/core/Subcompositor.cpp | 2 -- 45 files changed, 42 insertions(+), 104 deletions(-) diff --git a/src/protocols/AlphaModifier.cpp b/src/protocols/AlphaModifier.cpp index 38b8c800..13597fa9 100644 --- a/src/protocols/AlphaModifier.cpp +++ b/src/protocols/AlphaModifier.cpp @@ -4,8 +4,6 @@ #include "../render/Renderer.hpp" #include "core/Compositor.hpp" -#define LOGM PROTO::alphaModifier->protoLog - CAlphaModifier::CAlphaModifier(SP resource_, SP surface_) : resource(resource_), pSurface(surface_) { if (!resource->resource()) return; diff --git a/src/protocols/CursorShape.cpp b/src/protocols/CursorShape.cpp index 812afe53..233a5df9 100644 --- a/src/protocols/CursorShape.cpp +++ b/src/protocols/CursorShape.cpp @@ -2,8 +2,6 @@ #include #include "../helpers/CursorShapes.hpp" -#define LOGM PROTO::cursorShape->protoLog - CCursorShapeProtocol::CCursorShapeProtocol(const wl_interface* iface, const int& ver, const std::string& name) : IWaylandProtocol(iface, ver, name) { ; } diff --git a/src/protocols/DRMLease.cpp b/src/protocols/DRMLease.cpp index 3ab38ea1..bc0945f1 100644 --- a/src/protocols/DRMLease.cpp +++ b/src/protocols/DRMLease.cpp @@ -4,8 +4,6 @@ #include #include -#define LOGM PROTO::lease->protoLog - CDRMLeaseResource::CDRMLeaseResource(SP resource_, SP request) : resource(resource_) { if (!good()) return; @@ -226,7 +224,7 @@ CDRMLeaseDevice::CDRMLeaseDevice(SP drmBackend) : backe auto fd = drm->getNonMasterFD(); if (fd < 0) { - Debug::log(ERR, "[DRMLease] Failed to dup fd for drm node {}", drm->gpuName); + LOGM(ERR, "Failed to dup fd for drm node {}", drm->gpuName); return; } diff --git a/src/protocols/DRMSyncobj.cpp b/src/protocols/DRMSyncobj.cpp index 9a48b99a..4993f1a4 100644 --- a/src/protocols/DRMSyncobj.cpp +++ b/src/protocols/DRMSyncobj.cpp @@ -7,8 +7,6 @@ #include -#define LOGM PROTO::sync->protoLog - CDRMSyncobjSurfaceResource::CDRMSyncobjSurfaceResource(SP resource_, SP surface_) : surface(surface_), resource(resource_) { if (!good()) return; diff --git a/src/protocols/DataDeviceWlr.cpp b/src/protocols/DataDeviceWlr.cpp index c039d3b4..ad6ee89a 100644 --- a/src/protocols/DataDeviceWlr.cpp +++ b/src/protocols/DataDeviceWlr.cpp @@ -3,8 +3,6 @@ #include "../managers/SeatManager.hpp" #include "core/Seat.hpp" -#define LOGM PROTO::dataWlr->protoLog - CWLRDataOffer::CWLRDataOffer(SP resource_, SP source_) : source(source_), resource(resource_) { if (!good()) return; diff --git a/src/protocols/FocusGrab.cpp b/src/protocols/FocusGrab.cpp index 40f9af44..2d6b2ee2 100644 --- a/src/protocols/FocusGrab.cpp +++ b/src/protocols/FocusGrab.cpp @@ -8,8 +8,6 @@ #include #include -#define LOGM PROTO::focusGrab->protoLog - CFocusGrabSurfaceState::CFocusGrabSurfaceState(CFocusGrab* grab, SP surface) { listeners.destroy = surface->events.destroy.registerListener([=](std::any d) { grab->eraseSurface(surface); }); } diff --git a/src/protocols/ForeignToplevel.cpp b/src/protocols/ForeignToplevel.cpp index f7b3886f..59888ce2 100644 --- a/src/protocols/ForeignToplevel.cpp +++ b/src/protocols/ForeignToplevel.cpp @@ -1,8 +1,6 @@ #include "ForeignToplevel.hpp" #include "../Compositor.hpp" -#define LOGM PROTO::foreignToplevel->protoLog - CForeignToplevelHandle::CForeignToplevelHandle(SP resource_, PHLWINDOW pWindow_) : resource(resource_), pWindow(pWindow_) { if (!resource_->resource()) return; diff --git a/src/protocols/ForeignToplevelWlr.cpp b/src/protocols/ForeignToplevelWlr.cpp index b31a4083..bd597a91 100644 --- a/src/protocols/ForeignToplevelWlr.cpp +++ b/src/protocols/ForeignToplevelWlr.cpp @@ -4,8 +4,6 @@ #include "protocols/core/Output.hpp" #include "render/Renderer.hpp" -#define LOGM PROTO::foreignToplevelWlr->protoLog - CForeignToplevelHandleWlr::CForeignToplevelHandleWlr(SP resource_, PHLWINDOW pWindow_) : resource(resource_), pWindow(pWindow_) { if (!resource_->resource()) return; diff --git a/src/protocols/FractionalScale.cpp b/src/protocols/FractionalScale.cpp index 5bf56c5a..d39fa67c 100644 --- a/src/protocols/FractionalScale.cpp +++ b/src/protocols/FractionalScale.cpp @@ -2,8 +2,6 @@ #include #include "core/Compositor.hpp" -#define LOGM PROTO::fractional->protoLog - CFractionalScaleProtocol::CFractionalScaleProtocol(const wl_interface* iface, const int& ver, const std::string& name) : IWaylandProtocol(iface, ver, name) { ; } diff --git a/src/protocols/GammaControl.cpp b/src/protocols/GammaControl.cpp index 4febffbb..c902d00e 100644 --- a/src/protocols/GammaControl.cpp +++ b/src/protocols/GammaControl.cpp @@ -5,8 +5,6 @@ #include "../Compositor.hpp" #include "../protocols/core/Output.hpp" -#define LOGM PROTO::gamma->protoLog - CGammaControl::CGammaControl(SP resource_, wl_resource* output) : resource(resource_) { if (!resource_->resource()) return; diff --git a/src/protocols/GlobalShortcuts.cpp b/src/protocols/GlobalShortcuts.cpp index 860004c9..92bfbae4 100644 --- a/src/protocols/GlobalShortcuts.cpp +++ b/src/protocols/GlobalShortcuts.cpp @@ -1,8 +1,6 @@ #include "GlobalShortcuts.hpp" #include "../Compositor.hpp" -#define LOGM PROTO::globalShortcuts->protoLog - CShortcutClient::CShortcutClient(SP resource_) : resource(resource_) { if (!good()) return; diff --git a/src/protocols/IdleNotify.cpp b/src/protocols/IdleNotify.cpp index 2ec7d2a1..8d915ac6 100644 --- a/src/protocols/IdleNotify.cpp +++ b/src/protocols/IdleNotify.cpp @@ -1,8 +1,6 @@ #include "IdleNotify.hpp" #include "../managers/eventLoop/EventLoopManager.hpp" -#define LOGM PROTO::idle->protoLog - static int onTimer(SP self, void* data) { const auto NOTIF = (CExtIdleNotification*)data; diff --git a/src/protocols/InputMethodV2.cpp b/src/protocols/InputMethodV2.cpp index fd306f09..a0820e0b 100644 --- a/src/protocols/InputMethodV2.cpp +++ b/src/protocols/InputMethodV2.cpp @@ -6,8 +6,6 @@ #include "core/Compositor.hpp" #include -#define LOGM PROTO::ime->protoLog - CInputMethodKeyboardGrabV2::CInputMethodKeyboardGrabV2(SP resource_, SP owner_) : resource(resource_), owner(owner_) { if (!resource->resource()) return; diff --git a/src/protocols/LayerShell.cpp b/src/protocols/LayerShell.cpp index 17d3b22a..c02d23f3 100644 --- a/src/protocols/LayerShell.cpp +++ b/src/protocols/LayerShell.cpp @@ -4,8 +4,6 @@ #include "core/Compositor.hpp" #include "core/Output.hpp" -#define LOGM PROTO::layerShell->protoLog - void CLayerShellResource::SState::reset() { anchor = 0; exclusive = 0; diff --git a/src/protocols/LinuxDMABUF.cpp b/src/protocols/LinuxDMABUF.cpp index 0fbf832e..3cdb5b34 100644 --- a/src/protocols/LinuxDMABUF.cpp +++ b/src/protocols/LinuxDMABUF.cpp @@ -14,8 +14,6 @@ #include "../render/OpenGL.hpp" #include "../Compositor.hpp" -#define LOGM PROTO::linuxDma->protoLog - static std::optional devIDFromFD(int fd) { struct stat stat; if (fstat(fd, &stat) != 0) @@ -425,7 +423,7 @@ CLinuxDMABufV1Protocol::CLinuxDMABufV1Protocol(const wl_interface* iface, const auto dev = devIDFromFD(rendererFD); if (!dev.has_value()) { - protoLog(ERR, "failed to get drm dev, disabling linux dmabuf"); + LOGM(ERR, "failed to get drm dev, disabling linux dmabuf"); removeGlobal(); return; } @@ -477,7 +475,7 @@ CLinuxDMABufV1Protocol::CLinuxDMABufV1Protocol(const wl_interface* iface, const drmDevice* device = nullptr; if (drmGetDeviceFromDevId(mainDevice, 0, &device) != 0) { - protoLog(ERR, "failed to get drm dev, disabling linux dmabuf"); + LOGM(ERR, "failed to get drm dev, disabling linux dmabuf"); removeGlobal(); return; } @@ -487,12 +485,12 @@ CLinuxDMABufV1Protocol::CLinuxDMABufV1Protocol(const wl_interface* iface, const mainDeviceFD = open(name, O_RDWR | O_CLOEXEC); drmFreeDevice(&device); if (mainDeviceFD < 0) { - protoLog(ERR, "failed to open drm dev, disabling linux dmabuf"); + LOGM(ERR, "failed to open drm dev, disabling linux dmabuf"); removeGlobal(); return; } } else { - protoLog(ERR, "DRM device {} has no render node, disabling linux dmabuf", device->nodes[DRM_NODE_PRIMARY] ? device->nodes[DRM_NODE_PRIMARY] : "null"); + LOGM(ERR, "DRM device {} has no render node, disabling linux dmabuf", device->nodes[DRM_NODE_PRIMARY] ? device->nodes[DRM_NODE_PRIMARY] : "null"); drmFreeDevice(&device); removeGlobal(); } diff --git a/src/protocols/MesaDRM.cpp b/src/protocols/MesaDRM.cpp index ed412555..9fcd5f9b 100644 --- a/src/protocols/MesaDRM.cpp +++ b/src/protocols/MesaDRM.cpp @@ -4,8 +4,6 @@ #include "../Compositor.hpp" #include "types/WLBuffer.hpp" -#define LOGM PROTO::mesaDRM->protoLog - CMesaDRMBufferResource::CMesaDRMBufferResource(uint32_t id, wl_client* client, Aquamarine::SDMABUFAttrs attrs_) { LOGM(LOG, "Creating a Mesa dmabuf, with id {}: size {}, fmt {}, planes {}", id, attrs_.size, attrs_.format, attrs_.planes); for (int i = 0; i < attrs_.planes; ++i) { @@ -115,7 +113,7 @@ CMesaDRMProtocol::CMesaDRMProtocol(const wl_interface* iface, const int& ver, co drmDevice* dev = nullptr; int drmFD = g_pCompositor->m_iDRMFD; if (drmGetDevice2(drmFD, 0, &dev) != 0) { - protoLog(ERR, "Failed to get device, disabling MesaDRM"); + LOGM(ERR, "Failed to get device, disabling MesaDRM"); removeGlobal(); return; } @@ -126,13 +124,13 @@ CMesaDRMProtocol::CMesaDRMProtocol(const wl_interface* iface, const int& ver, co ASSERT(dev->available_nodes & (1 << DRM_NODE_PRIMARY)); if (!dev->nodes[DRM_NODE_PRIMARY]) { - protoLog(ERR, "No DRM render node available, both render and primary are null, disabling MesaDRM"); + LOGM(ERR, "No DRM render node available, both render and primary are null, disabling MesaDRM"); drmFreeDevice(&dev); removeGlobal(); return; } - protoLog(WARN, "No DRM render node, falling back to primary {}", dev->nodes[DRM_NODE_PRIMARY]); + LOGM(WARN, "No DRM render node, falling back to primary {}", dev->nodes[DRM_NODE_PRIMARY]); nodeName = dev->nodes[DRM_NODE_PRIMARY]; } drmFreeDevice(&dev); diff --git a/src/protocols/OutputManagement.cpp b/src/protocols/OutputManagement.cpp index 66f4c5f0..cfe388fa 100644 --- a/src/protocols/OutputManagement.cpp +++ b/src/protocols/OutputManagement.cpp @@ -4,8 +4,6 @@ using namespace Aquamarine; -#define LOGM PROTO::outputManagement->protoLog - COutputManager::COutputManager(SP resource_) : resource(resource_) { if (!good()) return; diff --git a/src/protocols/OutputPower.cpp b/src/protocols/OutputPower.cpp index 597b9871..0c324bf0 100644 --- a/src/protocols/OutputPower.cpp +++ b/src/protocols/OutputPower.cpp @@ -2,8 +2,6 @@ #include "../Compositor.hpp" #include "core/Output.hpp" -#define LOGM PROTO::outputPower->protoLog - COutputPower::COutputPower(SP resource_, CMonitor* pMonitor_) : resource(resource_), pMonitor(pMonitor_) { if (!resource->resource()) return; diff --git a/src/protocols/PointerConstraints.cpp b/src/protocols/PointerConstraints.cpp index fd15242d..0f2dd991 100644 --- a/src/protocols/PointerConstraints.cpp +++ b/src/protocols/PointerConstraints.cpp @@ -5,8 +5,6 @@ #include "../managers/SeatManager.hpp" #include "core/Compositor.hpp" -#define LOGM PROTO::constraints->protoLog - CPointerConstraint::CPointerConstraint(SP resource_, SP surf, wl_resource* region_, zwpPointerConstraintsV1Lifetime lifetime_) : resourceL(resource_), locked(true), lifetime(lifetime_) { if (!resource_->resource()) diff --git a/src/protocols/PointerGestures.cpp b/src/protocols/PointerGestures.cpp index 86510779..c83e3887 100644 --- a/src/protocols/PointerGestures.cpp +++ b/src/protocols/PointerGestures.cpp @@ -4,8 +4,6 @@ #include "core/Seat.hpp" #include "core/Compositor.hpp" -#define LOGM PROTO::pointerGestures->protoLog - CPointerGestureSwipe::CPointerGestureSwipe(SP resource_) : resource(resource_) { if (!resource->resource()) return; diff --git a/src/protocols/PresentationTime.cpp b/src/protocols/PresentationTime.cpp index a2fc270c..335cf557 100644 --- a/src/protocols/PresentationTime.cpp +++ b/src/protocols/PresentationTime.cpp @@ -6,8 +6,6 @@ #include "core/Output.hpp" #include -#define LOGM PROTO::presentation->protoLog - CQueuedPresentationData::CQueuedPresentationData(SP surf) : surface(surf) { ; } diff --git a/src/protocols/PrimarySelection.cpp b/src/protocols/PrimarySelection.cpp index 78eb8d63..4fede706 100644 --- a/src/protocols/PrimarySelection.cpp +++ b/src/protocols/PrimarySelection.cpp @@ -4,8 +4,6 @@ #include "core/Seat.hpp" #include "../config/ConfigValue.hpp" -#define LOGM PROTO::primarySelection->protoLog - CPrimarySelectionOffer::CPrimarySelectionOffer(SP resource_, SP source_) : source(source_), resource(resource_) { if (!good()) return; diff --git a/src/protocols/Screencopy.cpp b/src/protocols/Screencopy.cpp index a8afba84..f246f6dd 100644 --- a/src/protocols/Screencopy.cpp +++ b/src/protocols/Screencopy.cpp @@ -9,8 +9,6 @@ #include -#define LOGM PROTO::screencopy->protoLog - CScreencopyFrame::~CScreencopyFrame() { if (buffer && buffer->locked()) buffer->unlock(); diff --git a/src/protocols/ServerDecorationKDE.cpp b/src/protocols/ServerDecorationKDE.cpp index 42da52a9..c7b98a9c 100644 --- a/src/protocols/ServerDecorationKDE.cpp +++ b/src/protocols/ServerDecorationKDE.cpp @@ -1,8 +1,6 @@ #include "ServerDecorationKDE.hpp" #include "core/Compositor.hpp" -#define LOGM PROTO::serverDecorationKDE->protoLog - CServerDecorationKDE::CServerDecorationKDE(SP resource_, SP surf) : resource(resource_) { if (!good()) return; diff --git a/src/protocols/SessionLock.cpp b/src/protocols/SessionLock.cpp index df97413c..7b0d8b3b 100644 --- a/src/protocols/SessionLock.cpp +++ b/src/protocols/SessionLock.cpp @@ -5,8 +5,6 @@ #include "core/Compositor.hpp" #include "core/Output.hpp" -#define LOGM PROTO::sessionLock->protoLog - CSessionLockSurface::CSessionLockSurface(SP resource_, SP surface_, CMonitor* pMonitor_, WP owner_) : resource(resource_), sessionLock(owner_), pSurface(surface_), pMonitor(pMonitor_) { if (!resource->resource()) diff --git a/src/protocols/ShortcutsInhibit.cpp b/src/protocols/ShortcutsInhibit.cpp index 1a0433e6..e4424ed7 100644 --- a/src/protocols/ShortcutsInhibit.cpp +++ b/src/protocols/ShortcutsInhibit.cpp @@ -3,8 +3,6 @@ #include "../Compositor.hpp" #include "core/Compositor.hpp" -#define LOGM PROTO::shortcutsInhibit->protoLog - CKeyboardShortcutsInhibitor::CKeyboardShortcutsInhibitor(SP resource_, SP surf) : resource(resource_), pSurface(surf) { if (!resource->resource()) return; diff --git a/src/protocols/Tablet.cpp b/src/protocols/Tablet.cpp index 72c7cfde..b974152e 100644 --- a/src/protocols/Tablet.cpp +++ b/src/protocols/Tablet.cpp @@ -7,8 +7,6 @@ #include #include -#define LOGM PROTO::tablet->protoLog - CTabletPadStripV2Resource::CTabletPadStripV2Resource(SP resource_, uint32_t id_) : id(id_), resource(resource_) { if (!good()) return; diff --git a/src/protocols/TextInputV1.cpp b/src/protocols/TextInputV1.cpp index 78e910cb..f25f5aca 100644 --- a/src/protocols/TextInputV1.cpp +++ b/src/protocols/TextInputV1.cpp @@ -3,8 +3,6 @@ #include "../Compositor.hpp" #include "core/Compositor.hpp" -#define LOGM PROTO::textInputV1->protoLog - CTextInputV1::~CTextInputV1() { events.destroy.emit(); } diff --git a/src/protocols/TextInputV3.cpp b/src/protocols/TextInputV3.cpp index 1302a57f..99d799f3 100644 --- a/src/protocols/TextInputV3.cpp +++ b/src/protocols/TextInputV3.cpp @@ -2,8 +2,6 @@ #include #include "core/Compositor.hpp" -#define LOGM PROTO::textInputV3->protoLog - void CTextInputV3::SState::reset() { cause = ZWP_TEXT_INPUT_V3_CHANGE_CAUSE_INPUT_METHOD; surrounding.updated = false; diff --git a/src/protocols/ToplevelExport.cpp b/src/protocols/ToplevelExport.cpp index fb3fde2b..05e991d6 100644 --- a/src/protocols/ToplevelExport.cpp +++ b/src/protocols/ToplevelExport.cpp @@ -8,8 +8,6 @@ #include -#define LOGM PROTO::toplevelExport->protoLog - CToplevelExportClient::CToplevelExportClient(SP resource_) : resource(resource_) { if (!good()) return; diff --git a/src/protocols/Viewporter.cpp b/src/protocols/Viewporter.cpp index 78f3039f..58cb851d 100644 --- a/src/protocols/Viewporter.cpp +++ b/src/protocols/Viewporter.cpp @@ -2,8 +2,6 @@ #include "core/Compositor.hpp" #include -#define LOGM PROTO::viewport->protoLog - CViewportResource::CViewportResource(SP resource_, SP surface_) : surface(surface_), resource(resource_) { if (!good()) return; diff --git a/src/protocols/VirtualKeyboard.cpp b/src/protocols/VirtualKeyboard.cpp index 2642ec11..27a4f248 100644 --- a/src/protocols/VirtualKeyboard.cpp +++ b/src/protocols/VirtualKeyboard.cpp @@ -2,8 +2,6 @@ #include #include "../devices/IKeyboard.hpp" -#define LOGM PROTO::virtualKeyboard->protoLog - CVirtualKeyboardV1Resource::CVirtualKeyboardV1Resource(SP resource_) : resource(resource_) { if (!good()) return; diff --git a/src/protocols/VirtualPointer.cpp b/src/protocols/VirtualPointer.cpp index 8626241a..eb92a640 100644 --- a/src/protocols/VirtualPointer.cpp +++ b/src/protocols/VirtualPointer.cpp @@ -1,8 +1,6 @@ #include "VirtualPointer.hpp" #include "core/Output.hpp" -#define LOGM PROTO::virtualPointer->protoLog - CVirtualPointerV1Resource::CVirtualPointerV1Resource(SP resource_, WP boundOutput_) : boundOutput(boundOutput_), resource(resource_) { if (!good()) return; diff --git a/src/protocols/WaylandProtocol.cpp b/src/protocols/WaylandProtocol.cpp index 954f160d..0782d323 100644 --- a/src/protocols/WaylandProtocol.cpp +++ b/src/protocols/WaylandProtocol.cpp @@ -21,7 +21,7 @@ IWaylandProtocol::IWaylandProtocol(const wl_interface* iface, const int& ver, co m_pGlobal = wl_global_create(g_pCompositor->m_sWLDisplay, iface, ver, this, &bindManagerInternal); if (!m_pGlobal) { - protoLog(ERR, "could not create a global"); + LOGM(ERR, "could not create a global [{}]", m_szName); return; } @@ -30,7 +30,7 @@ IWaylandProtocol::IWaylandProtocol(const wl_interface* iface, const int& ver, co m_liDisplayDestroy.parent = this; wl_display_add_destroy_listener(g_pCompositor->m_sWLDisplay, &m_liDisplayDestroy.listener); - protoLog(LOG, "Registered global"); + LOGM(LOG, "Registered global [{}]", m_szName); } IWaylandProtocol::~IWaylandProtocol() { diff --git a/src/protocols/WaylandProtocol.hpp b/src/protocols/WaylandProtocol.hpp index 4d4e7925..0fa8daab 100644 --- a/src/protocols/WaylandProtocol.hpp +++ b/src/protocols/WaylandProtocol.hpp @@ -11,6 +11,35 @@ #define PROTO NProtocols +#define EXTRACT_CLASS_NAME() \ + []() constexpr -> std::string_view { \ + constexpr std::string_view prettyFunction = __PRETTY_FUNCTION__; \ + constexpr size_t colons = prettyFunction.find("::"); \ + if (colons != std::string_view::npos) { \ + constexpr size_t begin = prettyFunction.substr(0, colons).rfind(' ') + 1; \ + constexpr size_t end = colons - begin; \ + return prettyFunction.substr(begin, end); \ + } else { \ + return "Global"; \ + } \ + }() + +#define LOGM(level, ...) \ + do { \ + std::ostringstream oss; \ + if (level == WARN || level == ERR || level == CRIT) { \ + oss << "[" << __FILE__ << ":" << __LINE__ << "] "; \ + } else if (level == LOG || level == INFO || level == TRACE) { \ + oss << "[" << EXTRACT_CLASS_NAME() << "] "; \ + } \ + if constexpr (std::is_same_v) { \ + oss << __VA_ARGS__; \ + Debug::log(level, oss.str()); \ + } else { \ + Debug::log(level, std::format("{}{}", oss.str(), std::format(__VA_ARGS__))); \ + } \ + } while (0) + class IWaylandProtocol; struct IWaylandProtocolDestroyWrapper { wl_listener listener; @@ -22,15 +51,10 @@ class IWaylandProtocol { IWaylandProtocol(const wl_interface* iface, const int& ver, const std::string& name); virtual ~IWaylandProtocol(); - virtual void onDisplayDestroy(); - virtual void removeGlobal(); - - virtual void bindManager(wl_client* client, void* data, uint32_t ver, uint32_t id) = 0; + virtual void onDisplayDestroy(); + virtual void removeGlobal(); - template - void protoLog(LogLevel level, std::format_string fmt, Args&&... args) { - Debug::log(level, std::format("[{}] ", m_szName) + std::vformat(fmt.get(), std::make_format_args(args...))); - }; + virtual void bindManager(wl_client* client, void* data, uint32_t ver, uint32_t id) = 0; IWaylandProtocolDestroyWrapper m_liDisplayDestroy; diff --git a/src/protocols/XDGActivation.cpp b/src/protocols/XDGActivation.cpp index 40f33f02..4a6c7bfe 100644 --- a/src/protocols/XDGActivation.cpp +++ b/src/protocols/XDGActivation.cpp @@ -4,8 +4,6 @@ #include "core/Compositor.hpp" #include -#define LOGM PROTO::activation->protoLog - CXDGActivationToken::CXDGActivationToken(SP resource_) : resource(resource_) { if (!resource_->resource()) return; diff --git a/src/protocols/XDGDecoration.cpp b/src/protocols/XDGDecoration.cpp index 021a1141..07b1694c 100644 --- a/src/protocols/XDGDecoration.cpp +++ b/src/protocols/XDGDecoration.cpp @@ -1,8 +1,6 @@ #include "XDGDecoration.hpp" #include -#define LOGM PROTO::xdgDecoration->protoLog - CXDGDecoration::CXDGDecoration(SP resource_, wl_resource* toplevel) : resource(resource_), pToplevelResource(toplevel) { if (!resource->resource()) return; diff --git a/src/protocols/XDGOutput.cpp b/src/protocols/XDGOutput.cpp index 073aa502..9c2c353c 100644 --- a/src/protocols/XDGOutput.cpp +++ b/src/protocols/XDGOutput.cpp @@ -12,8 +12,6 @@ // -#define LOGM PROTO::xdgOutput->protoLog - void CXDGOutputProtocol::onManagerResourceDestroy(wl_resource* res) { std::erase_if(m_vManagerResources, [&](const auto& other) { return other->resource() == res; }); } diff --git a/src/protocols/XDGShell.cpp b/src/protocols/XDGShell.cpp index aea23329..eaf5c333 100644 --- a/src/protocols/XDGShell.cpp +++ b/src/protocols/XDGShell.cpp @@ -6,8 +6,6 @@ #include "core/Compositor.hpp" #include -#define LOGM PROTO::xdgShell->protoLog - void SXDGPositionerState::setAnchor(xdgPositionerAnchor edges) { anchor.setTop(edges == XDG_POSITIONER_ANCHOR_TOP || edges == XDG_POSITIONER_ANCHOR_TOP_LEFT || edges == XDG_POSITIONER_ANCHOR_TOP_RIGHT); anchor.setLeft(edges == XDG_POSITIONER_ANCHOR_LEFT || edges == XDG_POSITIONER_ANCHOR_TOP_LEFT || edges == XDG_POSITIONER_ANCHOR_BOTTOM_LEFT); diff --git a/src/protocols/XWaylandShell.cpp b/src/protocols/XWaylandShell.cpp index 6cc5256f..d6c3b1a8 100644 --- a/src/protocols/XWaylandShell.cpp +++ b/src/protocols/XWaylandShell.cpp @@ -2,8 +2,6 @@ #include "core/Compositor.hpp" #include -#define LOGM PROTO::xwaylandShell->protoLog - CXWaylandSurfaceResource::CXWaylandSurfaceResource(SP resource_, SP surface_) : surface(surface_), resource(resource_) { if (!good()) return; diff --git a/src/protocols/core/Compositor.cpp b/src/protocols/core/Compositor.cpp index a767dd52..8b6f46b1 100644 --- a/src/protocols/core/Compositor.cpp +++ b/src/protocols/core/Compositor.cpp @@ -13,8 +13,6 @@ #include "../../render/Renderer.hpp" #include -#define LOGM PROTO::compositor->protoLog - class CDefaultSurfaceRole : public ISurfaceRole { public: virtual eSurfaceRole role() { diff --git a/src/protocols/core/DataDevice.cpp b/src/protocols/core/DataDevice.cpp index fe3905d0..4ed28f24 100644 --- a/src/protocols/core/DataDevice.cpp +++ b/src/protocols/core/DataDevice.cpp @@ -6,8 +6,6 @@ #include "Seat.hpp" #include "Compositor.hpp" -#define LOGM PROTO::data->protoLog - CWLDataOfferResource::CWLDataOfferResource(SP resource_, SP source_) : source(source_), resource(resource_) { if (!good()) return; diff --git a/src/protocols/core/Seat.cpp b/src/protocols/core/Seat.cpp index bb6a9d4d..a111c12c 100644 --- a/src/protocols/core/Seat.cpp +++ b/src/protocols/core/Seat.cpp @@ -9,8 +9,6 @@ #include -#define LOGM PROTO::seat->protoLog - CWLTouchResource::CWLTouchResource(SP resource_, SP owner_) : owner(owner_), resource(resource_) { if (!good()) return; diff --git a/src/protocols/core/Shm.cpp b/src/protocols/core/Shm.cpp index 75c2134a..99459d9a 100644 --- a/src/protocols/core/Shm.cpp +++ b/src/protocols/core/Shm.cpp @@ -7,8 +7,6 @@ #include "../../Compositor.hpp" #include "../../helpers/Format.hpp" -#define LOGM PROTO::shm->protoLog - CWLSHMBuffer::CWLSHMBuffer(SP pool_, uint32_t id, int32_t offset_, const Vector2D& size_, int32_t stride_, uint32_t fmt_) { if (!pool_->pool->data) return; diff --git a/src/protocols/core/Subcompositor.cpp b/src/protocols/core/Subcompositor.cpp index 2a7c06dc..e0679eff 100644 --- a/src/protocols/core/Subcompositor.cpp +++ b/src/protocols/core/Subcompositor.cpp @@ -2,8 +2,6 @@ #include "Compositor.hpp" #include -#define LOGM PROTO::subcompositor->protoLog - CWLSubsurfaceResource::CWLSubsurfaceResource(SP resource_, SP surface_, SP parent_) : surface(surface_), parent(parent_), resource(resource_) { if (!good()) -- 2.45.2