diff --git a/include/aquamarine/backend/Backend.hpp b/include/aquamarine/backend/Backend.hpp index 1fbdf4a..5c0fe2b 100644 --- a/include/aquamarine/backend/Backend.hpp +++ b/include/aquamarine/backend/Backend.hpp @@ -66,16 +66,16 @@ namespace Aquamarine { AQ_BACKEND_CAPABILITY_POINTER = (1 << 0), }; - virtual eBackendType type() = 0; - virtual bool start() = 0; - virtual std::vector> pollFDs() = 0; - virtual int drmFD() = 0; - virtual bool dispatchEvents() = 0; - virtual uint32_t capabilities() = 0; - virtual void onReady() = 0; - virtual std::vector getRenderFormats() = 0; - virtual std::vector getCursorFormats() = 0; - virtual bool createOutput() = 0; + virtual eBackendType type() = 0; + virtual bool start() = 0; + virtual std::vector> pollFDs() = 0; + virtual int drmFD() = 0; + virtual bool dispatchEvents() = 0; + virtual uint32_t capabilities() = 0; + virtual void onReady() = 0; + virtual std::vector getRenderFormats() = 0; + virtual std::vector getCursorFormats() = 0; + virtual bool createOutput(const std::string& name = "") = 0; // "" means auto }; class CBackend { diff --git a/include/aquamarine/backend/DRM.hpp b/include/aquamarine/backend/DRM.hpp index 7b9e4bf..dbe63a0 100644 --- a/include/aquamarine/backend/DRM.hpp +++ b/include/aquamarine/backend/DRM.hpp @@ -289,7 +289,7 @@ namespace Aquamarine { virtual void onReady(); virtual std::vector getRenderFormats(); virtual std::vector getCursorFormats(); - virtual bool createOutput(); + virtual bool createOutput(const std::string& name = ""); Hyprutils::Memory::CWeakPointer self; diff --git a/include/aquamarine/backend/Headless.hpp b/include/aquamarine/backend/Headless.hpp index 25cb279..f95d3f2 100644 --- a/include/aquamarine/backend/Headless.hpp +++ b/include/aquamarine/backend/Headless.hpp @@ -44,7 +44,7 @@ namespace Aquamarine { virtual void onReady(); virtual std::vector getRenderFormats(); virtual std::vector getCursorFormats(); - virtual bool createOutput(); + virtual bool createOutput(const std::string& name = ""); Hyprutils::Memory::CWeakPointer self; diff --git a/include/aquamarine/backend/Wayland.hpp b/include/aquamarine/backend/Wayland.hpp index ce570f0..7cdd7ea 100644 --- a/include/aquamarine/backend/Wayland.hpp +++ b/include/aquamarine/backend/Wayland.hpp @@ -132,7 +132,7 @@ namespace Aquamarine { virtual void onReady(); virtual std::vector getRenderFormats(); virtual std::vector getCursorFormats(); - virtual bool createOutput(); + virtual bool createOutput(const std::string& name = ""); Hyprutils::Memory::CWeakPointer self; @@ -142,7 +142,6 @@ namespace Aquamarine { void initSeat(); void initShell(); bool initDmabuf(); - void createOutput(const std::string& szName); // Hyprutils::Memory::CWeakPointer backend; diff --git a/src/backend/Headless.cpp b/src/backend/Headless.cpp index 3a57856..e0c0c0e 100644 --- a/src/backend/Headless.cpp +++ b/src/backend/Headless.cpp @@ -117,8 +117,8 @@ std::vector Aquamarine::CHeadlessBackend::getCursorFormats() { return {}; // No cursor support } -bool Aquamarine::CHeadlessBackend::createOutput() { - auto output = SP(new CHeadlessOutput(std::format("HEADLESS-{}", ++outputIDCounter), self.lock())); +bool Aquamarine::CHeadlessBackend::createOutput(const std::string& name) { + auto output = SP(new CHeadlessOutput(name.empty() ? std::format("HEADLESS-{}", ++outputIDCounter) : name, self.lock())); outputs.emplace_back(output); output->swapchain = CSwapchain::create(backend->allocator, self.lock()); output->self = output; diff --git a/src/backend/Wayland.cpp b/src/backend/Wayland.cpp index a540517..ab99f8c 100644 --- a/src/backend/Wayland.cpp +++ b/src/backend/Wayland.cpp @@ -134,10 +134,11 @@ int Aquamarine::CWaylandBackend::drmFD() { return drmState.fd; } -void Aquamarine::CWaylandBackend::createOutput(const std::string& szName) { - auto o = outputs.emplace_back(SP(new CWaylandOutput(szName, self))); +bool Aquamarine::CWaylandBackend::createOutput(const std::string& szName) { + auto o = outputs.emplace_back(SP(new CWaylandOutput(szName.empty() ? std::format("WAYLAND-{}", ++lastOutputID) : szName, self))); o->self = o; idleCallbacks.emplace_back([this, o]() { backend->events.newOutput.emit(SP(o)); }); + return true; } std::vector> Aquamarine::CWaylandBackend::pollFDs() { @@ -431,11 +432,6 @@ std::vector Aquamarine::CWaylandBackend::getCursorFormats() { return dmabufFormats; } -bool Aquamarine::CWaylandBackend::createOutput() { - createOutput(std::format("WAYLAND-{}", ++lastOutputID)); - return true; -} - Aquamarine::CWaylandOutput::CWaylandOutput(const std::string& name_, Hyprutils::Memory::CWeakPointer backend_) : backend(backend_) { name = name_; diff --git a/src/backend/drm/DRM.cpp b/src/backend/drm/DRM.cpp index cb10a9f..c3af3f7 100644 --- a/src/backend/drm/DRM.cpp +++ b/src/backend/drm/DRM.cpp @@ -651,7 +651,7 @@ std::vector Aquamarine::CDRMBackend::getCursorFormats() { return {}; } -bool Aquamarine::CDRMBackend::createOutput() { +bool Aquamarine::CDRMBackend::createOutput(const std::string&) { return false; }