OSDN Git Service

libgui: Change detachNextBuffer to return sp<GB>
authorDan Stoza <stoza@google.com>
Mon, 27 Apr 2015 18:06:01 +0000 (11:06 -0700)
committerDan Stoza <stoza@google.com>
Mon, 27 Apr 2015 18:16:15 +0000 (11:16 -0700)
Changes Surface::detachNextBuffer to return an sp<GraphicBuffer>
instead of an ANativeWindowBuffer* to ensure that reference counting
works correctly.

Bug: 20092217
Change-Id: I3979ea6121aaf14845f0554477b778770413581e

include/gui/Surface.h
libs/gui/Surface.cpp

index a9f78cf..fd6d48c 100644 (file)
@@ -179,7 +179,7 @@ public:
     virtual int unlockAndPost();
 
     virtual int connect(int api, const sp<IProducerListener>& listener);
-    virtual int detachNextBuffer(ANativeWindowBuffer** outBuffer,
+    virtual int detachNextBuffer(sp<GraphicBuffer>* outBuffer,
             sp<Fence>* outFence);
     virtual int attachBuffer(ANativeWindowBuffer*);
 
index b8acad2..5d81f10 100644 (file)
@@ -651,7 +651,7 @@ int Surface::disconnect(int api) {
     return err;
 }
 
-int Surface::detachNextBuffer(ANativeWindowBuffer** outBuffer,
+int Surface::detachNextBuffer(sp<GraphicBuffer>* outBuffer,
         sp<Fence>* outFence) {
     ATRACE_CALL();
     ALOGV("Surface::detachNextBuffer");
@@ -670,7 +670,7 @@ int Surface::detachNextBuffer(ANativeWindowBuffer** outBuffer,
         return result;
     }
 
-    *outBuffer = buffer.get();
+    *outBuffer = buffer;
     if (fence != NULL && fence->isValid()) {
         *outFence = fence;
     } else {