diff --git a/src/allocator/DRMDumb.cpp b/src/allocator/DRMDumb.cpp index 17d3439..ca4d911 100644 --- a/src/allocator/DRMDumb.cpp +++ b/src/allocator/DRMDumb.cpp @@ -18,8 +18,7 @@ using namespace Hyprutils::Memory; #define WP CWeakPointer Aquamarine::CDRMDumbBuffer::CDRMDumbBuffer(const SAllocatorBufferParams& params, Hyprutils::Memory::CWeakPointer allocator_, - Hyprutils::Memory::CSharedPointer swapchain) : - allocator(allocator_) { + Hyprutils::Memory::CSharedPointer swapchain) : allocator(allocator_) { attrs.format = params.format; if (int ret = drmModeCreateDumbBuffer(allocator->drmFD(), params.size.x, params.size.y, 32, 0, &handle, &stride, &bufferLen); ret < 0) { diff --git a/src/allocator/GBM.cpp b/src/allocator/GBM.cpp index 88e75e6..ac64939 100644 --- a/src/allocator/GBM.cpp +++ b/src/allocator/GBM.cpp @@ -62,8 +62,7 @@ static SDRMFormat guessFormatFrom(std::vector formats, bool cursor, } Aquamarine::CGBMBuffer::CGBMBuffer(const SAllocatorBufferParams& params, Hyprutils::Memory::CWeakPointer allocator_, - Hyprutils::Memory::CSharedPointer swapchain) : - allocator(allocator_) { + Hyprutils::Memory::CSharedPointer swapchain) : allocator(allocator_) { if (!allocator) return; diff --git a/src/backend/drm/impl/Atomic.cpp b/src/backend/drm/impl/Atomic.cpp index 3fe92a5..fe080fe 100644 --- a/src/backend/drm/impl/Atomic.cpp +++ b/src/backend/drm/impl/Atomic.cpp @@ -99,9 +99,17 @@ void Aquamarine::CDRMAtomicRequest::addConnector(Hyprutils::Memory::CSharedPoint TRACE(backend->log(AQ_LOG_TRACE, std::format("atomic addConnector values: CRTC {}, mode {}", enable ? connector->crtc->id : 0, data.atomic.modeBlob))); - conn = connector; + conn = connector; + drmModeModeInfo* currentMode = connector->getCurrentMode(); + bool modeDiffers = true; + if (currentMode) { + modeDiffers = memcmp(currentMode, &data.modeInfo, sizeof(drmModeModeInfo)) != 0; + free(currentMode); + } + + if (modeDiffers) + addConnectorModeset(connector, data); - addConnectorModeset(connector, data); addConnectorCursor(connector, data); add(connector->id, connector->props.crtc_id, enable ? connector->crtc->id : 0); @@ -455,22 +463,7 @@ bool Aquamarine::CDRMAtomicImpl::commit(Hyprutils::Memory::CSharedPointercrtcs) { - request.add(crtc->id, crtc->props.mode_id, 0); - request.add(crtc->id, crtc->props.active, 0); - } - - for (auto const& conn : backend->connectors) { - request.add(conn->id, conn->props.crtc_id, 0); - } - - for (auto const& plane : backend->planes) { - request.planeProps(plane, nullptr, 0, {}); - } - - return request.commit(DRM_MODE_ATOMIC_ALLOW_MODESET); + return true; } bool Aquamarine::CDRMAtomicImpl::moveCursor(SP connector, bool skipSchedule) { diff --git a/tests/SimpleWindow.cpp b/tests/SimpleWindow.cpp index 9c7a920..d742992 100644 --- a/tests/SimpleWindow.cpp +++ b/tests/SimpleWindow.cpp @@ -70,15 +70,13 @@ int main(int argc, char** argv, char** envp) { }); newMouseListener = aqBackend->events.newPointer.listen([](const SP& pointer) { - mouseMotionListener = pointer->events.warp.listen([](const Aquamarine::IPointer::SWarpEvent& event) { - std::cout << "[Client] Mouse warped to " << std::format("{}", event.absolute) << "\n"; - }); + mouseMotionListener = pointer->events.warp.listen( + [](const Aquamarine::IPointer::SWarpEvent& event) { std::cout << "[Client] Mouse warped to " << std::format("{}", event.absolute) << "\n"; }); }); newKeyboardListener = aqBackend->events.newKeyboard.listen([](const SP& keyboard) { - keyboardKeyListener = keyboard->events.key.listen([](const Aquamarine::IKeyboard::SKeyEvent& event) { - std::cout << "[Client] Key " << std::format("{}", event.key) << " state: " << event.pressed << " \n"; - }); + keyboardKeyListener = keyboard->events.key.listen( + [](const Aquamarine::IKeyboard::SKeyEvent& event) { std::cout << "[Client] Key " << std::format("{}", event.key) << " state: " << event.pressed << " \n"; }); }); if (!aqBackend || !aqBackend->start()) {