OSDN Git Service

Allow Camera.setDisplayOrientation to be called when preview is active.
authorWu-cheng Li <wuchengli@google.com>
Fri, 7 Oct 2011 05:13:54 +0000 (13:13 +0800)
committerWu-cheng Li <wuchengli@google.com>
Fri, 7 Oct 2011 10:01:09 +0000 (18:01 +0800)
bug:5422679

Change-Id: I4c936ab00428fc158b5947fe8f10b1028869bbdb

services/camera/libcameraservice/CameraService.cpp

index b178fd9..9f7bd27 100644 (file)
@@ -849,16 +849,16 @@ status_t CameraService::Client::sendCommand(int32_t cmd, int32_t arg1, int32_t a
     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;
-        }
         // Mirror the preview if the camera is front-facing.
         orientation = getOrientation(arg1, mCameraFacing == CAMERA_FACING_FRONT);
         if (orientation == -1) return BAD_VALUE;
 
         if (mOrientation != orientation) {
             mOrientation = orientation;
+            if (mPreviewWindow != 0) {
+                native_window_set_buffers_transform(mPreviewWindow.get(),
+                        mOrientation);
+            }
         }
         return OK;
     } else if (cmd == CAMERA_CMD_ENABLE_SHUTTER_SOUND) {