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;