drm_hwcomposer: avoid creating release fences for invalid OutputFd
This change also adds a check for OutputFd to see if it is valid.
Change-Id: If992d523c707cc5e6e660de721938a26f27477d8
diff --git a/autofd.h b/autofd.h
index 0c4bd66..bc5127a 100644
--- a/autofd.h
+++ b/autofd.h
@@ -91,6 +91,10 @@
return *fd_;
}
+ operator bool() const {
+ return fd_ != NULL;
+ }
+
private:
int *fd_ = NULL;
};
diff --git a/drmdisplaycomposition.cpp b/drmdisplaycomposition.cpp
index 9e591ea..b266bd7 100644
--- a/drmdisplaycomposition.cpp
+++ b/drmdisplaycomposition.cpp
@@ -248,6 +248,8 @@
}
for (DrmHwcLayer *layer : squash_layers) {
+ if (!layer->release_fence)
+ continue;
int ret = layer->release_fence.Set(CreateNextTimelineFence());
if (ret < 0)
return ret;
@@ -255,6 +257,8 @@
timeline_squash_done_ = timeline_;
for (DrmHwcLayer *layer : pre_comp_layers) {
+ if (!layer->release_fence)
+ continue;
int ret = layer->release_fence.Set(CreateNextTimelineFence());
if (ret < 0)
return ret;
@@ -262,6 +266,8 @@
timeline_pre_comp_done_ = timeline_;
for (DrmHwcLayer *layer : comp_layers) {
+ if (!layer->release_fence)
+ continue;
int ret = layer->release_fence.Set(CreateNextTimelineFence());
if (ret < 0)
return ret;