From b4cbecd369c44da7f56ede2308e7d6e6317f7efc Mon Sep 17 00:00:00 2001 From: Victor Brekenfeld Date: Sun, 3 May 2020 17:55:08 +0200 Subject: [PATCH] atomic: do not set current state if commit fails --- src/backend/drm/atomic/surface.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/backend/drm/atomic/surface.rs b/src/backend/drm/atomic/surface.rs index f68bd1e..f65a185 100644 --- a/src/backend/drm/atomic/surface.rs +++ b/src/backend/drm/atomic/surface.rs @@ -528,7 +528,6 @@ impl RawSurface for AtomicDrmSurfaceInternal { warn!(self.logger, "Failed to destory old mode property blob: {}", err); } } - *current = pending.clone(); // new config req @@ -536,7 +535,7 @@ impl RawSurface for AtomicDrmSurfaceInternal { }; debug!(self.logger, "Setting screen: {:?}", req); - self.atomic_commit( + let result = self.atomic_commit( &[ AtomicCommitFlags::PageFlipEvent, AtomicCommitFlags::AllowModeset, @@ -549,9 +548,13 @@ impl RawSurface for AtomicDrmSurfaceInternal { errmsg: "Error setting crtc", dev: self.dev_path(), source, - })?; + }); - Ok(()) + if result.is_ok() { + *current = pending.clone(); + } + + result } fn page_flip(&self, framebuffer: framebuffer::Handle) -> Result<(), Error> {