diff options
author | Chih-Chung Chang <chihchung@google.com> | 2010-01-22 17:49:48 -0800 |
---|---|---|
committer | Chih-Chung Chang <chihchung@google.com> | 2010-01-26 11:07:07 -0800 |
commit | d1d7706fce19a9a0cf71ff9b65f3aba9b89eeb3b (patch) | |
tree | e4945abf24f406374fcc51fec3935fe3aeb57195 /camera/libcameraservice | |
parent | 09ac3c3cbc6278af127cffedb9d534449e63b683 (diff) | |
download | frameworks_base-d1d7706fce19a9a0cf71ff9b65f3aba9b89eeb3b.zip frameworks_base-d1d7706fce19a9a0cf71ff9b65f3aba9b89eeb3b.tar.gz frameworks_base-d1d7706fce19a9a0cf71ff9b65f3aba9b89eeb3b.tar.bz2 |
Add support for setting camera display orientation.
Diffstat (limited to 'camera/libcameraservice')
-rw-r--r-- | camera/libcameraservice/CameraService.cpp | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/camera/libcameraservice/CameraService.cpp b/camera/libcameraservice/CameraService.cpp index a8e217e..81d60dc 100644 --- a/camera/libcameraservice/CameraService.cpp +++ b/camera/libcameraservice/CameraService.cpp @@ -1191,14 +1191,6 @@ status_t CameraService::Client::setParameters(const String8& params) CameraParameters p(params); - // The orientation parameter is actually for CameraService, not for the camera driver. - if (p.getOrientation() == CameraParameters::CAMERA_ORIENTATION_PORTRAIT) { - LOGV("portrait mode"); - mOrientation = ISurface::BufferHeap::ROT_90; - } else { - mOrientation = 0; - } - return mHardware->setParameters(p); } @@ -1224,6 +1216,30 @@ status_t CameraService::Client::sendCommand(int32_t cmd, int32_t arg1, int32_t a status_t result = checkPid(); if (result != NO_ERROR) return result; + if (cmd == CAMERA_CMD_SET_DISPLAY_ORIENTATION) { + // The orientation cannot be set during preview. + if (mHardware->previewEnabled()) { + return INVALID_OPERATION; + } + switch (arg1) { + case 0: + mOrientation = ISurface::BufferHeap::ROT_0; + break; + case 90: + mOrientation = ISurface::BufferHeap::ROT_90; + break; + case 180: + mOrientation = ISurface::BufferHeap::ROT_180; + break; + case 270: + mOrientation = ISurface::BufferHeap::ROT_270; + break; + default: + return BAD_VALUE; + } + return OK; + } + if (mHardware == 0) { LOGE("mHardware is NULL, returning."); return INVALID_OPERATION; |