Merge commit 'goog/master' into merge_master

This commit is contained in:
Mathias Agopian
2009-07-01 18:33:21 -07:00
2 changed files with 39 additions and 1 deletions

View File

@@ -123,6 +123,7 @@ static preview_size_type preview_sizes[] = {
{ 800, 480 }, // WVGA
{ 640, 480 }, // VGA
{ 480, 320 }, // HVGA
{ 384, 288 },
{ 352, 288 }, // CIF
{ 320, 240 }, // QVGA
{ 240, 160 }, // SQVGA
@@ -677,7 +678,7 @@ void QualcommCameraHardware::runFrameThread(void *data)
// lifetime of this object. We do not want to dlclose() libqcamera while
// LINK_cam_frame is still running.
void *libhandle = ::dlopen("libqcamera.so", RTLD_NOW);
LOGV("loading libqcamera at %p", libhandle);
LOGV("FRAME: loading libqcamera at %p", libhandle);
if (!libhandle) {
LOGE("FATAL ERROR: could not dlopen libqcamera.so: %s", dlerror());
}
@@ -1096,6 +1097,23 @@ void QualcommCameraHardware::runAutoFocus()
return;
}
#if DLOPEN_LIBMMCAMERA
// We need to maintain a reference to libqcamera.so for the duration of the
// AF thread, because we do not know when it will exit relative to the
// lifetime of this object. We do not want to dlclose() libqcamera while
// LINK_cam_frame is still running.
void *libhandle = ::dlopen("libqcamera.so", RTLD_NOW);
LOGV("AF: loading libqcamera at %p", libhandle);
if (!libhandle) {
LOGE("FATAL ERROR: could not dlopen libqcamera.so: %s", dlerror());
close(mAutoFocusFd);
mAutoFocusFd = -1;
mAutoFocusThreadRunning = false;
mAutoFocusThreadLock.unlock();
return;
}
#endif
/* This will block until either AF completes or is cancelled. */
LOGV("af start (fd %d)", mAutoFocusFd);
bool status = native_set_afmode(mAutoFocusFd, AF_MODE_AUTO);
@@ -1116,6 +1134,13 @@ void QualcommCameraHardware::runAutoFocus()
mAutoFocusCallback = NULL;
mAutoFocusCallbackCookie = NULL;
mCallbackLock.unlock();
#if DLOPEN_LIBMMCAMERA
if (libhandle) {
::dlclose(libhandle);
LOGV("AF: dlclose(libqcamera)");
}
#endif
}
void QualcommCameraHardware::cancelAutoFocus()

View File

@@ -16,6 +16,8 @@
LOCAL_PATH:= $(call my-dir)
# HAL module implemenation, not prelinked and stored in
# hw/<COPYPIX_HARDWARE_MODULE_ID>.<ro.board.platform>.so
ifeq ($(TARGET_BOARD_PLATFORM),msm7k)
include $(CLEAR_VARS)
LOCAL_PRELINK_MODULE := false
LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw
@@ -24,3 +26,14 @@ LOCAL_SRC_FILES := copybit.cpp
LOCAL_MODULE := copybit.msm7k
LOCAL_C_INCLUDES += hardware/libhardware/modules/gralloc
include $(BUILD_SHARED_LIBRARY)
endif
ifeq ($(TARGET_BOARD_PLATFORM),qsd8k)
include $(CLEAR_VARS)
LOCAL_PRELINK_MODULE := false
LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw
LOCAL_SHARED_LIBRARIES := liblog
LOCAL_SRC_FILES := copybit.c
LOCAL_MODULE := copybit.qsd8k
include $(BUILD_SHARED_LIBRARY)
endif