summaryrefslogtreecommitdiff
path: root/src/protocols/DRMSyncobj.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/protocols/DRMSyncobj.cpp')
-rw-r--r--src/protocols/DRMSyncobj.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/protocols/DRMSyncobj.cpp b/src/protocols/DRMSyncobj.cpp
index 406b55e0..21b58513 100644
--- a/src/protocols/DRMSyncobj.cpp
+++ b/src/protocols/DRMSyncobj.cpp
@@ -30,7 +30,7 @@ WP<CSyncTimeline> CDRMSyncPointState::timeline() {
}
bool CDRMSyncPointState::expired() {
- return !m_resource || !m_resource->timeline;
+ return m_resource.expired() || !m_resource->timeline;
}
UP<CSyncReleaser> CDRMSyncPointState::createSyncRelease() {
@@ -177,9 +177,14 @@ bool CDRMSyncobjSurfaceResource::protocolError() {
return true;
}
- if (!!surface->pending.buffer->acquire != !!surface->pending.buffer->release) {
- resource->error(surface->pending.buffer->acquire ? WP_LINUX_DRM_SYNCOBJ_SURFACE_V1_ERROR_NO_RELEASE_POINT : WP_LINUX_DRM_SYNCOBJ_SURFACE_V1_ERROR_NO_ACQUIRE_POINT,
- "Missing timeline");
+ if (!surface->pending.buffer->acquire || !surface->pending.buffer->acquire->timeline()) {
+ resource->error(WP_LINUX_DRM_SYNCOBJ_SURFACE_V1_ERROR_NO_ACQUIRE_POINT, "Missing acquire timeline");
+ surface->pending.rejected = true;
+ return true;
+ }
+
+ if (!surface->pending.buffer->release || !surface->pending.buffer->release->timeline()) {
+ resource->error(WP_LINUX_DRM_SYNCOBJ_SURFACE_V1_ERROR_NO_RELEASE_POINT, "Missing release timeline");
surface->pending.rejected = true;
return true;
}