summaryrefslogtreecommitdiffstats
path: root/camera/EmulatedFakeCamera3.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'camera/EmulatedFakeCamera3.cpp')
-rw-r--r--camera/EmulatedFakeCamera3.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/camera/EmulatedFakeCamera3.cpp b/camera/EmulatedFakeCamera3.cpp
index cdfb597..3c34777 100644
--- a/camera/EmulatedFakeCamera3.cpp
+++ b/camera/EmulatedFakeCamera3.cpp
@@ -350,7 +350,9 @@ status_t EmulatedFakeCamera3::registerStreamBuffers(
* Sanity checks
*/
- if (mStatus != STATUS_READY) {
+ // OK: register streams at any time during configure
+ // (but only once per stream)
+ if (mStatus != STATUS_READY && mStatus != STATUS_ACTIVE) {
ALOGE("%s: Cannot register buffers in state %d",
__FUNCTION__, mStatus);
return NO_INIT;
@@ -378,6 +380,12 @@ status_t EmulatedFakeCamera3::registerStreamBuffers(
PrivateStreamInfo *privStream =
static_cast<PrivateStreamInfo*>((*s)->priv);
+
+ if (privStream->registered) {
+ ALOGE("%s: Illegal to register buffer more than once", __FUNCTION__);
+ return BAD_VALUE;
+ }
+
privStream->registered = true;
return OK;