Loading include/gui/SurfaceControl.h +2 −0 Original line number Diff line number Diff line Loading @@ -135,6 +135,7 @@ public: const sp<SurfaceControl>& control, Parcel* parcel); sp<Surface> getSurface() const; sp<Surface> createSurface() const; sp<IBinder> getHandle() const; status_t clearLayerFrameStats() const; Loading @@ -155,6 +156,7 @@ private: ~SurfaceControl(); sp<Surface> generateSurfaceLocked() const; status_t validate() const; void destroy(); Loading libs/gui/SurfaceControl.cpp +16 −3 Original line number Diff line number Diff line Loading @@ -237,17 +237,30 @@ status_t SurfaceControl::writeSurfaceToParcel( return parcel->writeStrongBinder(IInterface::asBinder(bp)); } sp<Surface> SurfaceControl::getSurface() const sp<Surface> SurfaceControl::generateSurfaceLocked() const { Mutex::Autolock _l(mLock); if (mSurfaceData == 0) { // This surface is always consumed by SurfaceFlinger, so the // producerControlledByApp value doesn't matter; using false. mSurfaceData = new Surface(mGraphicBufferProducer, false); return mSurfaceData; } sp<Surface> SurfaceControl::getSurface() const { Mutex::Autolock _l(mLock); if (mSurfaceData == 0) { return generateSurfaceLocked(); } return mSurfaceData; } sp<Surface> SurfaceControl::createSurface() const { Mutex::Autolock _l(mLock); return generateSurfaceLocked(); } sp<IBinder> SurfaceControl::getHandle() const { Mutex::Autolock lock(mLock); Loading Loading
include/gui/SurfaceControl.h +2 −0 Original line number Diff line number Diff line Loading @@ -135,6 +135,7 @@ public: const sp<SurfaceControl>& control, Parcel* parcel); sp<Surface> getSurface() const; sp<Surface> createSurface() const; sp<IBinder> getHandle() const; status_t clearLayerFrameStats() const; Loading @@ -155,6 +156,7 @@ private: ~SurfaceControl(); sp<Surface> generateSurfaceLocked() const; status_t validate() const; void destroy(); Loading
libs/gui/SurfaceControl.cpp +16 −3 Original line number Diff line number Diff line Loading @@ -237,17 +237,30 @@ status_t SurfaceControl::writeSurfaceToParcel( return parcel->writeStrongBinder(IInterface::asBinder(bp)); } sp<Surface> SurfaceControl::getSurface() const sp<Surface> SurfaceControl::generateSurfaceLocked() const { Mutex::Autolock _l(mLock); if (mSurfaceData == 0) { // This surface is always consumed by SurfaceFlinger, so the // producerControlledByApp value doesn't matter; using false. mSurfaceData = new Surface(mGraphicBufferProducer, false); return mSurfaceData; } sp<Surface> SurfaceControl::getSurface() const { Mutex::Autolock _l(mLock); if (mSurfaceData == 0) { return generateSurfaceLocked(); } return mSurfaceData; } sp<Surface> SurfaceControl::createSurface() const { Mutex::Autolock _l(mLock); return generateSurfaceLocked(); } sp<IBinder> SurfaceControl::getHandle() const { Mutex::Autolock lock(mLock); Loading