summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authortbalden <illespal@gmail.com>2013-03-23 23:06:45 +0100
committertbalden <illespal@gmail.com>2013-04-14 11:01:38 +0200
commitff2064e7dcad3c85005fc4564e04fde184240df9 (patch)
tree52dd63087c9954b038196439420e91c843dcab8c /services
parent203e28ca88001f2a0f4db7a3018977c687333941 (diff)
downloadframeworks_av-ff2064e7dcad3c85005fc4564e04fde184240df9.zip
frameworks_av-ff2064e7dcad3c85005fc4564e04fde184240df9.tar.gz
frameworks_av-ff2064e7dcad3c85005fc4564e04fde184240df9.tar.bz2
Camera: QCOM legacy definitions,HTC cam switch,NO_UPDATE_PREVIEW
Updating Camera parameters, and service with several compatibility patches: 1., QCOM legacy CameraParameters and functions: Adding these will make ICS qcomm camera blobs work on JB 4.2. Use BOARD_USES_QCOM_LEGACY_CAM_PARAMS := true in BoardConfig to use this. Also fixes the problem of legacy qcom camera blobs with recent libcameraservice QCOM_HARDWARE changes, where the orientation is messed up on first preview: the fix is leaving out setPreviewWindow(window) for legacy qcomm cam blobs. 2., Also adding NO_UPDATE_PREVIEW flag for legacy purposes. 3., Adding adding the set orientation patch: Always set buffers orientation when setting the qcom camera preview window Fixes the rotated preview on TouchPad https://github.com/CyanogenMod/android_frameworks_base/commit/1a8e41a3c7434737db89b604352575f8b3109e7a 4., camera: Full support for HTC camera switch 5., Adding more parameters for HTC Explorer Change-Id: I2bfc72b8ef027665356788f1db7f96b31d037dbe
Diffstat (limited to 'services')
-rw-r--r--services/camera/libcameraservice/Android.mk8
-rw-r--r--services/camera/libcameraservice/CameraClient.cpp7
-rw-r--r--services/camera/libcameraservice/CameraService.cpp24
3 files changed, 39 insertions, 0 deletions
diff --git a/services/camera/libcameraservice/Android.mk b/services/camera/libcameraservice/Android.mk
index eff47c8..3e2ac14 100644
--- a/services/camera/libcameraservice/Android.mk
+++ b/services/camera/libcameraservice/Android.mk
@@ -40,6 +40,14 @@ LOCAL_C_INCLUDES += \
system/media/camera/include \
external/jpeg
+ifeq ($(BOARD_USES_QCOM_LEGACY_CAM_PARAMS),true)
+ LOCAL_CFLAGS += -DQCOM_LEGACY_CAM_PARAMS
+endif
+
+ifeq ($(BOARD_HAVE_HTC_FFC), true)
+LOCAL_CFLAGS += -DBOARD_HAVE_HTC_FFC
+endif
+
LOCAL_MODULE:= libcameraservice
include $(BUILD_SHARED_LIBRARY)
diff --git a/services/camera/libcameraservice/CameraClient.cpp b/services/camera/libcameraservice/CameraClient.cpp
index 1cdb938..967562d 100644
--- a/services/camera/libcameraservice/CameraClient.cpp
+++ b/services/camera/libcameraservice/CameraClient.cpp
@@ -251,8 +251,10 @@ void CameraClient::disconnect() {
// Release the held ANativeWindow resources.
if (mPreviewWindow != 0) {
#ifdef QCOM_HARDWARE
+#ifndef NO_UPDATE_PREVIEW
mHardware->setPreviewWindow(0);
#endif
+#endif
disconnectWindow(mPreviewWindow);
mPreviewWindow = 0;
#ifndef QCOM_HARDWARE
@@ -297,9 +299,14 @@ status_t CameraClient::setPreviewWindow(const sp<IBinder>& binder,
result = mHardware->setPreviewWindow(window);
}
#ifdef QCOM_HARDWARE
+#ifndef NO_UPDATE_PREVIEW
} else {
+ if (window != 0) {
+ native_window_set_buffers_transform(window.get(), mOrientation);
+ }
result = mHardware->setPreviewWindow(window);
#endif
+#endif
}
if (result == NO_ERROR) {
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
index d8365eb..387a784 100644
--- a/services/camera/libcameraservice/CameraService.cpp
+++ b/services/camera/libcameraservice/CameraService.cpp
@@ -21,6 +21,8 @@
#include <stdio.h>
#include <sys/types.h>
#include <pthread.h>
+#include <unistd.h>
+#include <fcntl.h>
#include <binder/IPCThreadState.h>
#include <binder/IServiceManager.h>
@@ -68,6 +70,24 @@ static int getCallingUid() {
// ----------------------------------------------------------------------------
+#if defined(BOARD_HAVE_HTC_FFC)
+#define HTC_SWITCH_CAMERA_FILE_PATH "/sys/android_camera2/htcwc"
+static void htcCameraSwitch(int cameraId)
+{
+ char buffer[16];
+ int fd;
+
+ if (access(HTC_SWITCH_CAMERA_FILE_PATH, W_OK) == 0) {
+ snprintf(buffer, sizeof(buffer), "%d", cameraId);
+
+ fd = open(HTC_SWITCH_CAMERA_FILE_PATH, O_WRONLY);
+ write(fd, buffer, strlen(buffer));
+ close(fd);
+ }
+}
+#endif
+
+
// This is ugly and only safe if we never re-create the CameraService, but
// should be ok for now.
static CameraService *gCameraService;
@@ -158,6 +178,10 @@ sp<ICamera> CameraService::connect(
return NULL;
}
+#if defined(BOARD_HAVE_HTC_FFC)
+ htcCameraSwitch(cameraId);
+#endif
+
Mutex::Autolock lock(mServiceLock);
if (mClient[cameraId] != 0) {
client = mClient[cameraId].promote();