[PATCH weston v5 13/14] compositor-drm: Calculate atomic-commit flags earlier
Daniel Stone
daniels at collabora.com
Fri Jul 20 19:03:34 UTC 2018
Shift up our calculation of the flags we use for atomic commits. We will
later use this to differentiate between test-only and full commits when
printing debug information inside drm_output_state_apply_atomic.
Signed-off-by: Daniel Stone <daniels at collabora.com>
---
libweston/compositor-drm.c | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c
index e27671437..653d13e0c 100644
--- a/libweston/compositor-drm.c
+++ b/libweston/compositor-drm.c
@@ -2499,12 +2499,24 @@ drm_pending_state_apply_atomic(struct drm_pending_state *pending_state,
struct drm_output_state *output_state, *tmp;
struct drm_plane *plane;
drmModeAtomicReq *req = drmModeAtomicAlloc();
- uint32_t flags = 0;
+ uint32_t flags;
int ret = 0;
if (!req)
return -1;
+ switch (mode) {
+ case DRM_STATE_APPLY_SYNC:
+ flags = 0;
+ break;
+ case DRM_STATE_APPLY_ASYNC:
+ flags = DRM_MODE_PAGE_FLIP_EVENT | DRM_MODE_ATOMIC_NONBLOCK;
+ break;
+ case DRM_STATE_TEST_ONLY:
+ flags = DRM_MODE_ATOMIC_TEST_ONLY;
+ break;
+ }
+
if (b->state_invalid) {
struct weston_head *head_base;
struct drm_head *head;
@@ -2597,17 +2609,6 @@ drm_pending_state_apply_atomic(struct drm_pending_state *pending_state,
goto out;
}
- switch (mode) {
- case DRM_STATE_APPLY_SYNC:
- break;
- case DRM_STATE_APPLY_ASYNC:
- flags |= DRM_MODE_PAGE_FLIP_EVENT | DRM_MODE_ATOMIC_NONBLOCK;
- break;
- case DRM_STATE_TEST_ONLY:
- flags |= DRM_MODE_ATOMIC_TEST_ONLY;
- break;
- }
-
ret = drmModeAtomicCommit(b->drm.fd, req, flags, b);
/* Test commits do not take ownership of the state; return
--
2.17.1
More information about the wayland-devel
mailing list