From 93b94584edb1c59037319d9bbf84881ccff9f66a Mon Sep 17 00:00:00 2001 From: Dave Sparks Date: Thu, 7 May 2009 19:27:32 -0700 Subject: Modify camera framework to use new streamlined binder interface. This is the second half of bug 1837832. Modifies the camera client and camera service to use the new binder interface. Removes the old binder interface. There will be one more part to this change to surface the undefined callbacks to the Java layer so that partners can implement new features without having to touch the stack. --- libs/ui/Camera.cpp | 118 ++++++++++++++++++++----------------------- libs/ui/ICameraClient.cpp | 126 +--------------------------------------------- 2 files changed, 55 insertions(+), 189 deletions(-) (limited to 'libs') diff --git a/libs/ui/Camera.cpp b/libs/ui/Camera.cpp index ed4f3b8..6613700 100644 --- a/libs/ui/Camera.cpp +++ b/libs/ui/Camera.cpp @@ -337,76 +337,66 @@ void Camera::setErrorCallback(error_callback cb, void *cookie) mErrorCallbackCookie = cookie; } -void Camera::autoFocusCallback(bool focused) -{ - LOGV("autoFocusCallback"); - if (mAutoFocusCallback) { - mAutoFocusCallback(focused, mAutoFocusCallbackCookie); - } -} - -void Camera::shutterCallback() -{ - LOGV("shutterCallback"); - if (mShutterCallback) { - mShutterCallback(mShutterCallbackCookie); - } -} - -void Camera::rawCallback(const sp& picture) -{ - LOGV("rawCallback"); - if (mRawCallback) { - mRawCallback(picture, mRawCallbackCookie); - } -} - -// callback from camera service when image is ready -void Camera::jpegCallback(const sp& picture) -{ - LOGV("jpegCallback"); - if (mJpegCallback) { - mJpegCallback(picture, mJpegCallbackCookie); - } -} - -// callback from camera service when preview frame is ready -void Camera::previewCallback(const sp& frame) -{ - LOGV("frameCallback"); - if (mPreviewCallback) { - mPreviewCallback(frame, mPreviewCallbackCookie); - } -} - -// callback from camera service when a recording frame is ready -void Camera::recordingCallback(const sp& frame) -{ - LOGV("recordingCallback"); - if (mRecordingCallback) { - mRecordingCallback(frame, mRecordingCallbackCookie); - } -} - -// callback from camera service when an error occurs in preview or takePicture -void Camera::errorCallback(status_t error) -{ - LOGV("errorCallback"); - if (mErrorCallback) { - mErrorCallback(error, mErrorCallbackCookie); - } -} - // callback from camera service void Camera::notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2) { - LOGV("notifyCallback"); + switch(msgType) { + case CAMERA_MSG_ERROR: + LOGV("errorCallback"); + if (mErrorCallback) { + mErrorCallback((status_t)ext1, mErrorCallbackCookie); + } + break; + case CAMERA_MSG_FOCUS: + LOGV("autoFocusCallback"); + if (mAutoFocusCallback) { + mAutoFocusCallback((bool)ext1, mAutoFocusCallbackCookie); + } + break; + case CAMERA_MSG_SHUTTER: + LOGV("shutterCallback"); + if (mShutterCallback) { + mShutterCallback(mShutterCallbackCookie); + } + break; + default: + LOGV("notifyCallback(%d, %d, %d)", msgType, ext1, ext2); + break; + } } -// callback from camera service when image is ready -void Camera::dataCallback(int32_t msgType, const sp& frame) +// callback from camera service when frame or image is ready +void Camera::dataCallback(int32_t msgType, const sp& dataPtr) { - LOGV("dataCallback"); + switch(msgType) { + case CAMERA_MSG_PREVIEW_FRAME: + LOGV("previewCallback"); + if (mPreviewCallback) { + mPreviewCallback(dataPtr, mPreviewCallbackCookie); + } + break; + case CAMERA_MSG_VIDEO_FRAME: + LOGV("recordingCallback"); + if (mRecordingCallback) { + mRecordingCallback(dataPtr, mRecordingCallbackCookie); + } + break; + case CAMERA_MSG_RAW_IMAGE: + LOGV("rawCallback"); + if (mRawCallback) { + mRawCallback(dataPtr, mRawCallbackCookie); + } + break; + case CAMERA_MSG_COMPRESSED_IMAGE: + LOGV("jpegCallback"); + if (mJpegCallback) { + mJpegCallback(dataPtr, mJpegCallbackCookie); + } + break; + default: + LOGV("dataCallback(%d, %p)", msgType, dataPtr.get()); + break; + } } void Camera::binderDied(const wp& who) { diff --git a/libs/ui/ICameraClient.cpp b/libs/ui/ICameraClient.cpp index ae07b67..c6cf75c 100644 --- a/libs/ui/ICameraClient.cpp +++ b/libs/ui/ICameraClient.cpp @@ -25,14 +25,7 @@ namespace android { enum { - SHUTTER_CALLBACK = IBinder::FIRST_CALL_TRANSACTION, - RAW_CALLBACK, - JPEG_CALLBACK, - PREVIEW_CALLBACK, - ERROR_CALLBACK, - AUTOFOCUS_CALLBACK, - RECORDING_CALLBACK, - NOTIFY_CALLBACK, + NOTIFY_CALLBACK = IBinder::FIRST_CALL_TRANSACTION, DATA_CALLBACK, }; @@ -44,75 +37,6 @@ public: { } - // callback to let the app know the shutter has closed, ideal for playing the shutter sound - void shutterCallback() - { - LOGV("shutterCallback"); - Parcel data, reply; - data.writeInterfaceToken(ICameraClient::getInterfaceDescriptor()); - remote()->transact(SHUTTER_CALLBACK, data, &reply, IBinder::FLAG_ONEWAY); - } - - // callback from camera service to app with picture data - void rawCallback(const sp& picture) - { - LOGV("rawCallback"); - Parcel data, reply; - data.writeInterfaceToken(ICameraClient::getInterfaceDescriptor()); - data.writeStrongBinder(picture->asBinder()); - remote()->transact(RAW_CALLBACK, data, &reply, IBinder::FLAG_ONEWAY); - } - - // callback from camera service to app with picture data - void jpegCallback(const sp& picture) - { - LOGV("jpegCallback"); - Parcel data, reply; - data.writeInterfaceToken(ICameraClient::getInterfaceDescriptor()); - data.writeStrongBinder(picture->asBinder()); - remote()->transact(JPEG_CALLBACK, data, &reply, IBinder::FLAG_ONEWAY); - } - - // callback from camera service to app with preview frame data - void previewCallback(const sp& frame) - { - LOGV("previewCallback"); - Parcel data, reply; - data.writeInterfaceToken(ICameraClient::getInterfaceDescriptor()); - data.writeStrongBinder(frame->asBinder()); - remote()->transact(PREVIEW_CALLBACK, data, &reply, IBinder::FLAG_ONEWAY); - } - - // callback from camera service to app with recording frame data - void recordingCallback(const sp& frame) - { - LOGV("recordingCallback"); - Parcel data, reply; - data.writeInterfaceToken(ICameraClient::getInterfaceDescriptor()); - data.writeStrongBinder(frame->asBinder()); - remote()->transact(RECORDING_CALLBACK, data, &reply, IBinder::FLAG_ONEWAY); - } - - // callback from camera service to app to report error - void errorCallback(status_t error) - { - LOGV("errorCallback"); - Parcel data, reply; - data.writeInterfaceToken(ICameraClient::getInterfaceDescriptor()); - data.writeInt32(error); - remote()->transact(ERROR_CALLBACK, data, &reply, IBinder::FLAG_ONEWAY); - } - - // callback from camera service to app to report autofocus completion - void autoFocusCallback(bool focused) - { - LOGV("autoFocusCallback"); - Parcel data, reply; - data.writeInterfaceToken(ICameraClient::getInterfaceDescriptor()); - data.writeInt32(focused); - remote()->transact(AUTOFOCUS_CALLBACK, data, &reply, IBinder::FLAG_ONEWAY); - } - // generic callback from camera service to app void notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2) { @@ -152,54 +76,6 @@ status_t BnCameraClient::onTransact( uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) { switch(code) { - case SHUTTER_CALLBACK: { - LOGV("SHUTTER_CALLBACK"); - CHECK_INTERFACE(ICameraClient, data, reply); - shutterCallback(); - return NO_ERROR; - } break; - case RAW_CALLBACK: { - LOGV("RAW_CALLBACK"); - CHECK_INTERFACE(ICameraClient, data, reply); - sp picture = interface_cast(data.readStrongBinder()); - rawCallback(picture); - return NO_ERROR; - } break; - case JPEG_CALLBACK: { - LOGV("JPEG_CALLBACK"); - CHECK_INTERFACE(ICameraClient, data, reply); - sp picture = interface_cast(data.readStrongBinder()); - jpegCallback(picture); - return NO_ERROR; - } break; - case PREVIEW_CALLBACK: { - LOGV("PREVIEW_CALLBACK"); - CHECK_INTERFACE(ICameraClient, data, reply); - sp frame = interface_cast(data.readStrongBinder()); - previewCallback(frame); - return NO_ERROR; - } break; - case RECORDING_CALLBACK: { - LOGV("RECORDING_CALLBACK"); - CHECK_INTERFACE(ICameraClient, data, reply); - sp frame = interface_cast(data.readStrongBinder()); - recordingCallback(frame); - return NO_ERROR; - } break; - case ERROR_CALLBACK: { - LOGV("ERROR_CALLBACK"); - CHECK_INTERFACE(ICameraClient, data, reply); - status_t error = data.readInt32(); - errorCallback(error); - return NO_ERROR; - } break; - case AUTOFOCUS_CALLBACK: { - LOGV("AUTOFOCUS_CALLBACK"); - CHECK_INTERFACE(ICameraClient, data, reply); - bool focused = (bool)data.readInt32(); - autoFocusCallback(focused); - return NO_ERROR; - } break; case NOTIFY_CALLBACK: { LOGV("NOTIFY_CALLBACK"); CHECK_INTERFACE(ICameraClient, data, reply); -- cgit v1.1 From c7bbc69ed501a7d194c1cbb9c41e2681d3004bd9 Mon Sep 17 00:00:00 2001 From: Joe Onorato Date: Wed, 13 May 2009 18:57:29 -0400 Subject: Get the backup calling through to the file backup helper. This includes some cleanup to make the parameters match between BackupService.onBackup and FileBackupHelper.performBackup. --- libs/utils/file_backup_helper.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'libs') diff --git a/libs/utils/file_backup_helper.cpp b/libs/utils/file_backup_helper.cpp index 111f88d..453084a 100644 --- a/libs/utils/file_backup_helper.cpp +++ b/libs/utils/file_backup_helper.cpp @@ -24,6 +24,9 @@ using namespace android; #define MAGIC0 0x70616e53 // Snap #define MAGIC1 0x656c6946 // File +#define LOGP(x...) LOGD(x) +//#define LOGP(x...) printf(x) + struct SnapshotHeader { int magic0; int fileCount; @@ -159,14 +162,14 @@ write_snapshot_file(int fd, const KeyedVector& snapshot) static int write_delete_file(const String8& key) { - printf("write_delete_file %s\n", key.string()); + LOGP("write_delete_file %s\n", key.string()); return 0; } static int write_update_file(const String8& realFilename, const String8& key) { - printf("write_update_file %s (%s)\n", realFilename.string(), key.string()); + LOGP("write_update_file %s (%s)\n", realFilename.string(), key.string()); return 0; } @@ -195,7 +198,7 @@ compute_crc32(const String8& filename) } int -back_up_files(int oldSnapshotFD, int newSnapshotFD, int oldDataStream, +back_up_files(int oldSnapshotFD, int oldDataStream, int newSnapshotFD, char const* fileBase, char const* const* files, int fileCount) { int err; @@ -260,10 +263,10 @@ back_up_files(int oldSnapshotFD, int newSnapshotFD, int oldDataStream, const FileState& f = oldSnapshot.valueAt(n); const FileState& g = newSnapshot.valueAt(m); - printf("%s\n", q.string()); - printf(" new: modTime=%d,%d size=%-3d crc32=0x%08x\n", + LOGP("%s\n", q.string()); + LOGP(" new: modTime=%d,%d size=%-3d crc32=0x%08x\n", f.modTime_sec, f.modTime_nsec, f.size, f.crc32); - printf(" old: modTime=%d,%d size=%-3d crc32=0x%08x\n", + LOGP(" old: modTime=%d,%d size=%-3d crc32=0x%08x\n", g.modTime_sec, g.modTime_nsec, g.size, g.crc32); if (f.modTime_sec != g.modTime_sec || f.modTime_nsec != g.modTime_nsec || f.size != g.size || f.crc32 != g.crc32) { -- cgit v1.1