camera2: Implement CameraDevice#waitUntilIdle
Also cleanup some logging/comments.
Change-Id: Id1a4dd853519802a2b74b8d2172095ba388329e6
diff --git a/core/java/android/hardware/photography/impl/CameraDevice.java b/core/java/android/hardware/photography/impl/CameraDevice.java
index 802cb833..5cb7525 100644
--- a/core/java/android/hardware/photography/impl/CameraDevice.java
+++ b/core/java/android/hardware/photography/impl/CameraDevice.java
@@ -65,9 +65,6 @@
return mCallbacks;
}
- /**
- * @hide
- */
public void setRemoteDevice(ICameraDeviceUser remoteDevice) {
mRemoteDevice = remoteDevice;
}
@@ -209,7 +206,22 @@
@Override
public void waitUntilIdle() throws CameraAccessException {
- // TODO: implement
+
+ synchronized (mLock) {
+ checkIfCameraClosed();
+ if (!mRepeatingRequestIdStack.isEmpty()) {
+ throw new IllegalStateException("Active repeating request ongoing");
+ }
+
+ try {
+ mRemoteDevice.waitUntilIdle();
+ } catch (CameraRuntimeException e) {
+ throw e.asChecked();
+ } catch (RemoteException e) {
+ // impossible
+ return;
+ }
+ }
}
@Override
@@ -329,4 +341,9 @@
}
+ private void checkIfCameraClosed() {
+ if (mRemoteDevice == null) {
+ throw new IllegalStateException("CameraDevice was already closed");
+ }
+ }
}