From 745ac038b986d826a767ddc891a224b59165e9fb Mon Sep 17 00:00:00 2001 From: Dan Stoza Date: Mon, 27 Apr 2015 11:06:01 -0700 Subject: [PATCH] libgui: Change detachNextBuffer to return sp Changes Surface::detachNextBuffer to return an sp instead of an ANativeWindowBuffer* to ensure that reference counting works correctly. Bug: 20092217 Change-Id: I3979ea6121aaf14845f0554477b778770413581e --- include/gui/Surface.h | 2 +- libs/gui/Surface.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/gui/Surface.h b/include/gui/Surface.h index a9f78cf02..fd6d48c2a 100644 --- a/include/gui/Surface.h +++ b/include/gui/Surface.h @@ -179,7 +179,7 @@ public: virtual int unlockAndPost(); virtual int connect(int api, const sp& listener); - virtual int detachNextBuffer(ANativeWindowBuffer** outBuffer, + virtual int detachNextBuffer(sp* outBuffer, sp* outFence); virtual int attachBuffer(ANativeWindowBuffer*); diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp index b8acad2a8..5d81f10a4 100644 --- a/libs/gui/Surface.cpp +++ b/libs/gui/Surface.cpp @@ -651,7 +651,7 @@ int Surface::disconnect(int api) { return err; } -int Surface::detachNextBuffer(ANativeWindowBuffer** outBuffer, +int Surface::detachNextBuffer(sp* outBuffer, sp* 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 {