summaryrefslogtreecommitdiffstats
path: root/camera
diff options
context:
space:
mode:
authorZhijun He <zhijunhe@google.com>2013-07-31 09:50:58 -0700
committerZhijun He <zhijunhe@google.com>2013-07-31 12:10:51 -0700
commit11d0d44d583f679638cc927bfffe920e495e90cc (patch)
treee795a55fea68ccd8f7b5a92edbadaa3b77260a7f /camera
parent7b82efe7a376c882f8f938e1c41b8311a8cdda4a (diff)
downloadframeworks_av-11d0d44d583f679638cc927bfffe920e495e90cc.zip
frameworks_av-11d0d44d583f679638cc927bfffe920e495e90cc.tar.gz
frameworks_av-11d0d44d583f679638cc927bfffe920e495e90cc.tar.bz2
Camera: fix the metadate parcel write issue
Also rename the frameId to requestId to make it less confusing. Change-Id: I14a20b6fcabb86294afb31fc0c56397e185c1373
Diffstat (limited to 'camera')
-rw-r--r--camera/camera2/ICameraDeviceCallbacks.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/camera/camera2/ICameraDeviceCallbacks.cpp b/camera/camera2/ICameraDeviceCallbacks.cpp
index 188bd8e..3cec1f4 100644
--- a/camera/camera2/ICameraDeviceCallbacks.cpp
+++ b/camera/camera2/ICameraDeviceCallbacks.cpp
@@ -57,11 +57,12 @@ public:
data.writeNoException();
}
- void onResultReceived(int32_t frameId, const CameraMetadata& result) {
+ void onResultReceived(int32_t requestId, const CameraMetadata& result) {
ALOGV("onResultReceived");
Parcel data, reply;
data.writeInterfaceToken(ICameraDeviceCallbacks::getInterfaceDescriptor());
- data.writeInt32(frameId);
+ data.writeInt32(requestId);
+ data.writeInt32(1); // to mark presence of metadata object
result.writeToParcel(&data);
remote()->transact(RESULT_RECEIVED, data, &reply, IBinder::FLAG_ONEWAY);
data.writeNoException();
@@ -91,10 +92,14 @@ status_t BnCameraDeviceCallbacks::onTransact(
case RESULT_RECEIVED: {
ALOGV("RESULT_RECEIVED");
CHECK_INTERFACE(ICameraDeviceCallbacks, data, reply);
- int32_t frameId = data.readInt32();
+ int32_t requestId = data.readInt32();
CameraMetadata result;
- result.readFromParcel(const_cast<Parcel*>(&data));
- onResultReceived(frameId, result);
+ if (data.readInt32() != 0) {
+ result.readFromParcel(const_cast<Parcel*>(&data));
+ } else {
+ ALOGW("No metadata object is present in result");
+ }
+ onResultReceived(requestId, result);
data.readExceptionCode();
return NO_ERROR;
break;