Loading core/java/android/hardware/camera2/impl/CameraExtensionSessionImpl.java +69 −59 Original line number Diff line number Diff line Loading @@ -851,7 +851,7 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { synchronized (mInterfaceLock) { mInternalRepeatingRequestEnabled = false; mHandlerThread.quitSafely(); mHandlerThread.quit(); try { mPreviewExtender.onDeInit(); Loading Loading @@ -1393,6 +1393,7 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { @Override public void onImageAvailable(ImageReader reader) { Image img; synchronized (mInterfaceLock) { try { img = reader.acquireNextImage(); } catch (IllegalStateException e) { Loading @@ -1407,7 +1408,8 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { Long timestamp = img.getTimestamp(); if (mImageListenerMap.containsKey(timestamp)) { Pair<Image, OnImageAvailableListener> entry = mImageListenerMap.remove(timestamp); Pair<Image, OnImageAvailableListener> entry = mImageListenerMap.remove( timestamp); if (entry.second != null) { entry.second.onImageAvailable(reader, img); } else { Loading @@ -1415,13 +1417,15 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { img.close(); } } else { mImageListenerMap.put(img.getTimestamp(), new Pair<>(img, null)); mImageListenerMap.put(timestamp, new Pair<>(img, null)); } notifyDroppedImages(timestamp); } } private void notifyDroppedImages(long timestamp) { synchronized (mInterfaceLock) { Set<Long> timestamps = mImageListenerMap.keySet(); ArrayList<Long> removedTs = new ArrayList<>(); for (long ts : timestamps) { Loading @@ -1441,10 +1445,13 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { mImageListenerMap.remove(ts); } } } public void registerListener(Long timestamp, OnImageAvailableListener listener) { synchronized (mInterfaceLock) { if (mImageListenerMap.containsKey(timestamp)) { Pair<Image, OnImageAvailableListener> entry = mImageListenerMap.remove(timestamp); Pair<Image, OnImageAvailableListener> entry = mImageListenerMap.remove( timestamp); if (entry.first != null) { listener.onImageAvailable(mImageReader, entry.first); if (mOutOfBuffers) { Loading @@ -1460,9 +1467,11 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { mImageListenerMap.put(timestamp, new Pair<>(null, listener)); } } } @Override public void close() { synchronized (mInterfaceLock) { for (Pair<Image, OnImageAvailableListener> entry : mImageListenerMap.values()) { if (entry.first != null) { entry.first.close(); Loading @@ -1477,6 +1486,7 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { mImageListenerMap.clear(); } } } private class CloseRequestHandler extends CameraCaptureSession.CaptureCallback { private final CameraOutputImageCallback mImageCallback; Loading Loading
core/java/android/hardware/camera2/impl/CameraExtensionSessionImpl.java +69 −59 Original line number Diff line number Diff line Loading @@ -851,7 +851,7 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { synchronized (mInterfaceLock) { mInternalRepeatingRequestEnabled = false; mHandlerThread.quitSafely(); mHandlerThread.quit(); try { mPreviewExtender.onDeInit(); Loading Loading @@ -1393,6 +1393,7 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { @Override public void onImageAvailable(ImageReader reader) { Image img; synchronized (mInterfaceLock) { try { img = reader.acquireNextImage(); } catch (IllegalStateException e) { Loading @@ -1407,7 +1408,8 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { Long timestamp = img.getTimestamp(); if (mImageListenerMap.containsKey(timestamp)) { Pair<Image, OnImageAvailableListener> entry = mImageListenerMap.remove(timestamp); Pair<Image, OnImageAvailableListener> entry = mImageListenerMap.remove( timestamp); if (entry.second != null) { entry.second.onImageAvailable(reader, img); } else { Loading @@ -1415,13 +1417,15 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { img.close(); } } else { mImageListenerMap.put(img.getTimestamp(), new Pair<>(img, null)); mImageListenerMap.put(timestamp, new Pair<>(img, null)); } notifyDroppedImages(timestamp); } } private void notifyDroppedImages(long timestamp) { synchronized (mInterfaceLock) { Set<Long> timestamps = mImageListenerMap.keySet(); ArrayList<Long> removedTs = new ArrayList<>(); for (long ts : timestamps) { Loading @@ -1441,10 +1445,13 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { mImageListenerMap.remove(ts); } } } public void registerListener(Long timestamp, OnImageAvailableListener listener) { synchronized (mInterfaceLock) { if (mImageListenerMap.containsKey(timestamp)) { Pair<Image, OnImageAvailableListener> entry = mImageListenerMap.remove(timestamp); Pair<Image, OnImageAvailableListener> entry = mImageListenerMap.remove( timestamp); if (entry.first != null) { listener.onImageAvailable(mImageReader, entry.first); if (mOutOfBuffers) { Loading @@ -1460,9 +1467,11 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { mImageListenerMap.put(timestamp, new Pair<>(null, listener)); } } } @Override public void close() { synchronized (mInterfaceLock) { for (Pair<Image, OnImageAvailableListener> entry : mImageListenerMap.values()) { if (entry.first != null) { entry.first.close(); Loading @@ -1477,6 +1486,7 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { mImageListenerMap.clear(); } } } private class CloseRequestHandler extends CameraCaptureSession.CaptureCallback { private final CameraOutputImageCallback mImageCallback; Loading