Loading services/camera/libcameraservice/CameraService.cpp +13 −5 Original line number Diff line number Diff line Loading @@ -319,6 +319,7 @@ CameraService::Client::Client(const sp<CameraService>& cameraService, // Callback is disabled by default mPreviewCallbackFlag = FRAME_CALLBACK_FLAG_NOOP; mOrientation = 0; mOrientationChanged = false; cameraService->setCameraBusy(cameraId); cameraService->loadSound(); LOG1("Client::Client X (pid %d)", callingPid); Loading Loading @@ -496,6 +497,7 @@ status_t CameraService::Client::setPreviewDisplay(const sp<ISurface>& surface) { // Force the destruction of any previous overlay sp<Overlay> dummy; mHardware->setOverlay(dummy); mOverlayRef = 0; } else { mSurface->unregisterBuffers(); } Loading Loading @@ -539,11 +541,12 @@ status_t CameraService::Client::setOverlay() { CameraParameters params(mHardware->getParameters()); params.getPreviewSize(&w, &h); if (w != mOverlayW || h != mOverlayH) { if (w != mOverlayW || h != mOverlayH || mOrientationChanged) { // Force the destruction of any previous overlay sp<Overlay> dummy; mHardware->setOverlay(dummy); mOverlayRef = 0; mOrientationChanged = false; } status_t result = NO_ERROR; Loading Loading @@ -810,6 +813,7 @@ String8 CameraService::Client::getParameters() const { status_t CameraService::Client::sendCommand(int32_t cmd, int32_t arg1, int32_t arg2) { LOG1("sendCommand (pid %d)", getCallingPid()); int orientation; Mutex::Autolock lock(mLock); status_t result = checkPidAndHardware(); if (result != NO_ERROR) return result; Loading @@ -821,20 +825,24 @@ status_t CameraService::Client::sendCommand(int32_t cmd, int32_t arg1, int32_t a } switch (arg1) { case 0: mOrientation = ISurface::BufferHeap::ROT_0; orientation = ISurface::BufferHeap::ROT_0; break; case 90: mOrientation = ISurface::BufferHeap::ROT_90; orientation = ISurface::BufferHeap::ROT_90; break; case 180: mOrientation = ISurface::BufferHeap::ROT_180; orientation = ISurface::BufferHeap::ROT_180; break; case 270: mOrientation = ISurface::BufferHeap::ROT_270; orientation = ISurface::BufferHeap::ROT_270; break; default: return BAD_VALUE; } if (mOrientation != orientation) { mOrientation = orientation; if (mOverlayRef != 0) mOrientationChanged = true; } return OK; } Loading services/camera/libcameraservice/CameraService.h +3 −1 Original line number Diff line number Diff line Loading @@ -164,7 +164,9 @@ private: int mOverlayW; int mOverlayH; int mPreviewCallbackFlag; int mOrientation; int mOrientation; // Current display orientation // True if display orientation has been changed. This is only used in overlay. int mOrientationChanged; // Ensures atomicity among the public methods mutable Mutex mLock; Loading Loading
services/camera/libcameraservice/CameraService.cpp +13 −5 Original line number Diff line number Diff line Loading @@ -319,6 +319,7 @@ CameraService::Client::Client(const sp<CameraService>& cameraService, // Callback is disabled by default mPreviewCallbackFlag = FRAME_CALLBACK_FLAG_NOOP; mOrientation = 0; mOrientationChanged = false; cameraService->setCameraBusy(cameraId); cameraService->loadSound(); LOG1("Client::Client X (pid %d)", callingPid); Loading Loading @@ -496,6 +497,7 @@ status_t CameraService::Client::setPreviewDisplay(const sp<ISurface>& surface) { // Force the destruction of any previous overlay sp<Overlay> dummy; mHardware->setOverlay(dummy); mOverlayRef = 0; } else { mSurface->unregisterBuffers(); } Loading Loading @@ -539,11 +541,12 @@ status_t CameraService::Client::setOverlay() { CameraParameters params(mHardware->getParameters()); params.getPreviewSize(&w, &h); if (w != mOverlayW || h != mOverlayH) { if (w != mOverlayW || h != mOverlayH || mOrientationChanged) { // Force the destruction of any previous overlay sp<Overlay> dummy; mHardware->setOverlay(dummy); mOverlayRef = 0; mOrientationChanged = false; } status_t result = NO_ERROR; Loading Loading @@ -810,6 +813,7 @@ String8 CameraService::Client::getParameters() const { status_t CameraService::Client::sendCommand(int32_t cmd, int32_t arg1, int32_t arg2) { LOG1("sendCommand (pid %d)", getCallingPid()); int orientation; Mutex::Autolock lock(mLock); status_t result = checkPidAndHardware(); if (result != NO_ERROR) return result; Loading @@ -821,20 +825,24 @@ status_t CameraService::Client::sendCommand(int32_t cmd, int32_t arg1, int32_t a } switch (arg1) { case 0: mOrientation = ISurface::BufferHeap::ROT_0; orientation = ISurface::BufferHeap::ROT_0; break; case 90: mOrientation = ISurface::BufferHeap::ROT_90; orientation = ISurface::BufferHeap::ROT_90; break; case 180: mOrientation = ISurface::BufferHeap::ROT_180; orientation = ISurface::BufferHeap::ROT_180; break; case 270: mOrientation = ISurface::BufferHeap::ROT_270; orientation = ISurface::BufferHeap::ROT_270; break; default: return BAD_VALUE; } if (mOrientation != orientation) { mOrientation = orientation; if (mOverlayRef != 0) mOrientationChanged = true; } return OK; } Loading
services/camera/libcameraservice/CameraService.h +3 −1 Original line number Diff line number Diff line Loading @@ -164,7 +164,9 @@ private: int mOverlayW; int mOverlayH; int mPreviewCallbackFlag; int mOrientation; int mOrientation; // Current display orientation // True if display orientation has been changed. This is only used in overlay. int mOrientationChanged; // Ensures atomicity among the public methods mutable Mutex mLock; Loading