diff options
| -rw-r--r-- | core/java/android/hardware/camera2/legacy/RequestThreadManager.java | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/core/java/android/hardware/camera2/legacy/RequestThreadManager.java b/core/java/android/hardware/camera2/legacy/RequestThreadManager.java index da0899be8cfa..690df1acc7e7 100644 --- a/core/java/android/hardware/camera2/legacy/RequestThreadManager.java +++ b/core/java/android/hardware/camera2/legacy/RequestThreadManager.java @@ -333,6 +333,16 @@ public class RequestThreadManager { startPreview(); } + private void disconnectCallbackSurfaces() { + for (Surface s : mCallbackOutputs) { + try { + LegacyCameraDevice.disconnectSurface(s); + } catch (LegacyExceptionUtils.BufferQueueAbandonedException e) { + Log.d(TAG, "Surface abandoned, skipping...", e); + } + } + } + private void configureOutputs(Collection<Pair<Surface, Size>> outputs) { if (DEBUG) { String outputsStr = outputs == null ? "null" : (outputs.size() + " surfaces"); @@ -370,14 +380,8 @@ public class RequestThreadManager { mGLThreadManager.waitUntilIdle(); } resetJpegSurfaceFormats(mCallbackOutputs); + disconnectCallbackSurfaces(); - for (Surface s : mCallbackOutputs) { - try { - LegacyCameraDevice.disconnectSurface(s); - } catch (LegacyExceptionUtils.BufferQueueAbandonedException e) { - Log.w(TAG, "Surface abandoned, skipping...", e); - } - } mPreviewOutputs.clear(); mCallbackOutputs.clear(); mJpegSurfaceIds.clear(); @@ -972,11 +976,11 @@ public class RequestThreadManager { mGLThreadManager.quit(); mGLThreadManager = null; } + disconnectCallbackSurfaces(); if (mCamera != null) { mCamera.release(); mCamera = null; } - resetJpegSurfaceFormats(mCallbackOutputs); break; case RequestHandlerThread.MSG_POKE_IDLE_HANDLER: // OK: Ignore message. |