From e62592f0f471696405e4d9ee01c4152c60005424 Mon Sep 17 00:00:00 2001 From: Ikalco <73481042+ikalco@users.noreply.github.com> Date: Thu, 27 Feb 2025 08:21:05 -0600 Subject: [PATCH] drm/atomic: fix atomic reset being skipped, check nullptr elsewhere instead (#149) --- src/backend/drm/DRM.cpp | 2 +- src/backend/drm/impl/Atomic.cpp | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/backend/drm/DRM.cpp b/src/backend/drm/DRM.cpp index 508de51..1de37f8 100644 --- a/src/backend/drm/DRM.cpp +++ b/src/backend/drm/DRM.cpp @@ -909,7 +909,7 @@ int Aquamarine::CDRMBackend::drmFD() { static void handlePF(int fd, unsigned seq, unsigned tv_sec, unsigned tv_usec, unsigned crtc_id, void* data) { auto pageFlip = (SDRMPageFlip*)data; - if (!pageFlip->connector) + if (!pageFlip || !pageFlip->connector) return; pageFlip->connector->isPageFlipPending = false; diff --git a/src/backend/drm/impl/Atomic.cpp b/src/backend/drm/impl/Atomic.cpp index 2db54f0..5c9e72e 100644 --- a/src/backend/drm/impl/Atomic.cpp +++ b/src/backend/drm/impl/Atomic.cpp @@ -244,10 +244,7 @@ bool Aquamarine::CDRMAtomicRequest::commit(uint32_t flagssss) { return false; } - if (!conn) - return false; - - if (auto ret = drmModeAtomicCommit(backend->gpu->fd, req, flagssss, &conn->pendingPageFlip); ret) { + if (auto ret = drmModeAtomicCommit(backend->gpu->fd, req, flagssss, conn ? &conn->pendingPageFlip : nullptr); ret) { backend->log((flagssss & DRM_MODE_ATOMIC_TEST_ONLY) ? AQ_LOG_DEBUG : AQ_LOG_ERROR, std::format("atomic drm request: failed to commit: {}, flags: {}", strerror(ret == -1 ? errno : -ret), flagsToStr(flagssss))); return false;