summaryrefslogtreecommitdiffstats
path: root/camera/libcameraservice
diff options
context:
space:
mode:
authorChih-Chung Chang <chihchung@google.com>2010-01-22 17:49:48 -0800
committerChih-Chung Chang <chihchung@google.com>2010-01-26 11:07:07 -0800
commitd1d7706fce19a9a0cf71ff9b65f3aba9b89eeb3b (patch)
treee4945abf24f406374fcc51fec3935fe3aeb57195 /camera/libcameraservice
parent09ac3c3cbc6278af127cffedb9d534449e63b683 (diff)
downloadframeworks_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.cpp32
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;