Pass sp<Fence>s around instead of file descriptors

Change-Id: Iac70584a2207940730e8f803a543e4e9a4000c47
diff --git a/libs/gui/GLConsumer.cpp b/libs/gui/GLConsumer.cpp
index 09831fb..630eb7c 100644
--- a/libs/gui/GLConsumer.cpp
+++ b/libs/gui/GLConsumer.cpp
@@ -367,14 +367,14 @@
     return NO_ERROR;
 }
 
-void GLConsumer::setReleaseFence(int fenceFd) {
-    sp<Fence> fence(new Fence(fenceFd));
-    if (fenceFd == -1 || mCurrentTexture == BufferQueue::INVALID_BUFFER_SLOT)
-        return;
-    status_t err = addReleaseFence(mCurrentTexture, fence);
-    if (err != OK) {
-        ST_LOGE("setReleaseFence: failed to add the fence: %s (%d)",
-                strerror(-err), err);
+void GLConsumer::setReleaseFence(const sp<Fence>& fence) {
+    if (fence->isValid() &&
+            mCurrentTexture != BufferQueue::INVALID_BUFFER_SLOT) {
+        status_t err = addReleaseFence(mCurrentTexture, fence);
+        if (err != OK) {
+            ST_LOGE("setReleaseFence: failed to add the fence: %s (%d)",
+                    strerror(-err), err);
+        }
     }
 }