diff --git a/src/backend/drm/gbm/surface.rs b/src/backend/drm/gbm/surface.rs index 74c4898..b9b1686 100644 --- a/src/backend/drm/gbm/surface.rs +++ b/src/backend/drm/gbm/surface.rs @@ -74,11 +74,15 @@ impl GbmSurfaceInternal { }; self.next_buffer.set(Some(next_bo)); + if cfg!(debug_assertions) { + if let Err(err) = self.crtc.get_framebuffer(fb) { + error!(self.logger, "Cached framebuffer invalid: {:?}: {}", fb, err); + } + } + let result = if self.recreated.get() { debug!(self.logger, "Commiting new state"); - let res = self.crtc.commit(fb).map_err(Error::Underlying); - self.recreated.set(false); - res + self.crtc.commit(fb).map_err(Error::Underlying) } else { trace!(self.logger, "Queueing Page flip"); RawSurface::page_flip(&self.crtc, fb).map_err(Error::Underlying) @@ -86,6 +90,7 @@ impl GbmSurfaceInternal { match result { Ok(_) => { + self.recreated.set(false); self.current_frame_buffer.set(Some(fb)); Ok(()) },