summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
Diffstat (limited to 'services')
-rw-r--r--services/audiopolicy/AudioPolicyInterfaceImpl.cpp7
-rw-r--r--services/audiopolicy/AudioPolicyInterfaceImplLegacy.cpp7
-rw-r--r--services/audiopolicy/AudioPolicyService.cpp2
-rw-r--r--services/audiopolicy/AudioPolicyService.h3
-rw-r--r--services/camera/libcameraservice/api1/client2/Parameters.cpp23
-rw-r--r--services/camera/libcameraservice/device3/Camera3OutputStream.cpp16
-rw-r--r--services/camera/libcameraservice/device3/Camera3OutputStream.h2
7 files changed, 47 insertions, 13 deletions
diff --git a/services/audiopolicy/AudioPolicyInterfaceImpl.cpp b/services/audiopolicy/AudioPolicyInterfaceImpl.cpp
index 2c51e25..b212ca6 100644
--- a/services/audiopolicy/AudioPolicyInterfaceImpl.cpp
+++ b/services/audiopolicy/AudioPolicyInterfaceImpl.cpp
@@ -80,9 +80,16 @@ status_t AudioPolicyService::setPhoneState(audio_mode_t state)
Mutex::Autolock _l(mLock);
mAudioPolicyManager->setPhoneState(state);
+ mPhoneState = state;
return NO_ERROR;
}
+audio_mode_t AudioPolicyService::getPhoneState()
+{
+ Mutex::Autolock _l(mLock);
+ return mPhoneState;
+}
+
status_t AudioPolicyService::setForceUse(audio_policy_force_use_t usage,
audio_policy_forced_cfg_t config)
{
diff --git a/services/audiopolicy/AudioPolicyInterfaceImplLegacy.cpp b/services/audiopolicy/AudioPolicyInterfaceImplLegacy.cpp
index f20c070..1e40bc3 100644
--- a/services/audiopolicy/AudioPolicyInterfaceImplLegacy.cpp
+++ b/services/audiopolicy/AudioPolicyInterfaceImplLegacy.cpp
@@ -84,9 +84,16 @@ status_t AudioPolicyService::setPhoneState(audio_mode_t state)
Mutex::Autolock _l(mLock);
mpAudioPolicy->set_phone_state(mpAudioPolicy, state);
+ mPhoneState = state;
return NO_ERROR;
}
+audio_mode_t AudioPolicyService::getPhoneState()
+{
+ Mutex::Autolock _l(mLock);
+ return mPhoneState;
+}
+
status_t AudioPolicyService::setForceUse(audio_policy_force_use_t usage,
audio_policy_forced_cfg_t config)
{
diff --git a/services/audiopolicy/AudioPolicyService.cpp b/services/audiopolicy/AudioPolicyService.cpp
index 50bb8c7..647cda4 100644
--- a/services/audiopolicy/AudioPolicyService.cpp
+++ b/services/audiopolicy/AudioPolicyService.cpp
@@ -59,7 +59,7 @@ namespace {
AudioPolicyService::AudioPolicyService()
: BnAudioPolicyService(), mpAudioPolicyDev(NULL), mpAudioPolicy(NULL),
- mAudioPolicyManager(NULL), mAudioPolicyClient(NULL)
+ mAudioPolicyManager(NULL), mAudioPolicyClient(NULL), mPhoneState(AUDIO_MODE_INVALID)
{
char value[PROPERTY_VALUE_MAX];
const struct hw_module_t *module;
diff --git a/services/audiopolicy/AudioPolicyService.h b/services/audiopolicy/AudioPolicyService.h
index 0044e7a..2cea40b 100644
--- a/services/audiopolicy/AudioPolicyService.h
+++ b/services/audiopolicy/AudioPolicyService.h
@@ -174,6 +174,8 @@ public:
virtual status_t releaseSoundTriggerSession(audio_session_t session);
+ virtual audio_mode_t getPhoneState();
+
status_t doStopOutput(audio_io_handle_t output,
audio_stream_type_t stream,
int session = 0);
@@ -493,6 +495,7 @@ private:
// Manage all effects configured in audio_effects.conf
sp<AudioPolicyEffects> mAudioPolicyEffects;
+ audio_mode_t mPhoneState;
};
}; // namespace android
diff --git a/services/camera/libcameraservice/api1/client2/Parameters.cpp b/services/camera/libcameraservice/api1/client2/Parameters.cpp
index aa9d746..9818c96 100644
--- a/services/camera/libcameraservice/api1/client2/Parameters.cpp
+++ b/services/camera/libcameraservice/api1/client2/Parameters.cpp
@@ -643,11 +643,10 @@ status_t Parameters::initialize(const CameraMetadata *info, int deviceVersion) {
params.set(CameraParameters::KEY_SUPPORTED_FLASH_MODES,
supportedFlashModes);
} else {
- flashMode = Parameters::FLASH_MODE_OFF;
- params.set(CameraParameters::KEY_FLASH_MODE,
- CameraParameters::FLASH_MODE_OFF);
- params.set(CameraParameters::KEY_SUPPORTED_FLASH_MODES,
- CameraParameters::FLASH_MODE_OFF);
+ // No flash means null flash mode and supported flash modes keys, so
+ // remove them just to be safe
+ params.remove(CameraParameters::KEY_FLASH_MODE);
+ params.remove(CameraParameters::KEY_SUPPORTED_FLASH_MODES);
}
camera_metadata_ro_entry_t minFocusDistance =
@@ -1617,7 +1616,9 @@ status_t Parameters::set(const String8& paramString) {
if (validatedParams.flashMode != flashMode) {
camera_metadata_ro_entry_t flashAvailable =
staticInfo(ANDROID_FLASH_INFO_AVAILABLE, 1, 1);
- if (!flashAvailable.data.u8[0] &&
+ bool isFlashAvailable =
+ flashAvailable.data.u8[0] == ANDROID_FLASH_INFO_AVAILABLE_TRUE;
+ if (!isFlashAvailable &&
validatedParams.flashMode != Parameters::FLASH_MODE_OFF) {
ALOGE("%s: Requested flash mode \"%s\" is not supported: "
"No flash on device", __FUNCTION__,
@@ -1642,9 +1643,11 @@ status_t Parameters::set(const String8& paramString) {
newParams.get(CameraParameters::KEY_FLASH_MODE));
return BAD_VALUE;
}
- // Update in case of override
- newParams.set(CameraParameters::KEY_FLASH_MODE,
- flashModeEnumToString(validatedParams.flashMode));
+ // Update in case of override, but only if flash is supported
+ if (isFlashAvailable) {
+ newParams.set(CameraParameters::KEY_FLASH_MODE,
+ flashModeEnumToString(validatedParams.flashMode));
+ }
}
// WHITE_BALANCE
@@ -2386,7 +2389,7 @@ Parameters::Parameters::flashMode_t Parameters::flashModeStringToEnum(
const char *flashMode) {
return
!flashMode ?
- Parameters::FLASH_MODE_INVALID :
+ Parameters::FLASH_MODE_OFF :
!strcmp(flashMode, CameraParameters::FLASH_MODE_OFF) ?
Parameters::FLASH_MODE_OFF :
!strcmp(flashMode, CameraParameters::FLASH_MODE_AUTO) ?
diff --git a/services/camera/libcameraservice/device3/Camera3OutputStream.cpp b/services/camera/libcameraservice/device3/Camera3OutputStream.cpp
index 169eb82..77ad503 100644
--- a/services/camera/libcameraservice/device3/Camera3OutputStream.cpp
+++ b/services/camera/libcameraservice/device3/Camera3OutputStream.cpp
@@ -37,7 +37,8 @@ Camera3OutputStream::Camera3OutputStream(int id,
Camera3IOStreamBase(id, CAMERA3_STREAM_OUTPUT, width, height,
/*maxSize*/0, format),
mConsumer(consumer),
- mTransform(0) {
+ mTransform(0),
+ mTraceFirstBuffer(true) {
if (mConsumer == NULL) {
ALOGE("%s: Consumer is NULL!", __FUNCTION__);
@@ -51,7 +52,8 @@ Camera3OutputStream::Camera3OutputStream(int id,
Camera3IOStreamBase(id, CAMERA3_STREAM_OUTPUT, width, height, maxSize,
format),
mConsumer(consumer),
- mTransform(0) {
+ mTransform(0),
+ mTraceFirstBuffer(true) {
if (format != HAL_PIXEL_FORMAT_BLOB) {
ALOGE("%s: Bad format for size-only stream: %d", __FUNCTION__,
@@ -202,6 +204,15 @@ status_t Camera3OutputStream::returnBufferCheckedLocked(
" %s (%d)", __FUNCTION__, mId, strerror(-res), res);
}
} else {
+ if (mTraceFirstBuffer && (stream_type == CAMERA3_STREAM_OUTPUT)) {
+ {
+ char traceLog[48];
+ snprintf(traceLog, sizeof(traceLog), "Stream %d: first full buffer\n", mId);
+ ATRACE_NAME(traceLog);
+ }
+ mTraceFirstBuffer = false;
+ }
+
res = currentConsumer->queueBuffer(currentConsumer.get(),
container_of(buffer.buffer, ANativeWindowBuffer, handle),
anwReleaseFence);
@@ -257,6 +268,7 @@ status_t Camera3OutputStream::setTransformLocked(int transform) {
status_t Camera3OutputStream::configureQueueLocked() {
status_t res;
+ mTraceFirstBuffer = true;
if ((res = Camera3IOStreamBase::configureQueueLocked()) != OK) {
return res;
}
diff --git a/services/camera/libcameraservice/device3/Camera3OutputStream.h b/services/camera/libcameraservice/device3/Camera3OutputStream.h
index f963326..be278c5 100644
--- a/services/camera/libcameraservice/device3/Camera3OutputStream.h
+++ b/services/camera/libcameraservice/device3/Camera3OutputStream.h
@@ -84,6 +84,8 @@ class Camera3OutputStream :
virtual status_t setTransformLocked(int transform);
+ bool mTraceFirstBuffer;
+
/**
* Internal Camera3Stream interface
*/