OSDN Git Service

DO NOT MERGE: Fix ordering of SurfaceTexture startup in SurfaceTextureSource.
authorEino-Ville Talvala <etalvala@google.com>
Thu, 17 Nov 2011 19:34:20 +0000 (11:34 -0800)
committerEino-Ville Talvala <etalvala@google.com>
Wed, 30 Nov 2011 21:47:34 +0000 (13:47 -0800)
commit3e843769e46d3d53aa2565bf80af1e800a3bbf1e
tree64a728450be40ad06d9bac8fad23cf2f8e286a8e
parentc157a9c259474d4e1736c4f9ccccad10b5000734
DO NOT MERGE: Fix ordering of SurfaceTexture startup in SurfaceTextureSource.

Minimal cherry-pick from MR1.

An asynchronous SurfaceTexture only sends out a frame available
callback the first time a new buffer comes in; if a onFrameAvailable-
listener is not registered at this point, the callback never happens
even when new frames come in.

SurfaceTextureSource was calling its onSurfaceTextureSourceReady-
listener with a newly created SurfaceTexture before hooking up the
SurfaceTexture's onFrameAvailable-listener. This opened a window of
time for the onSurfaceTextureSourceReady-listener to set up the
provider end of the SurfaceTexture, and for the provider to get
buffers into the SurfaceTexture queue before the
onFrameAvailable-listener was registered.

And as a result, no new frame callback ever fired, and
SurfaceTextureSource eventually times out, or goes into permanent
sleep.

This change simply makes sure the onFrameAvailable-listener is
registered before the onSurfaceTextureSourceReady callback is fired.

Bug: 5614661
Change-Id: I8d6a72444ffc36b5c48952d0b1edd530ecb76478
mca/filterpacks/videosrc/java/SurfaceTextureSource.java