Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2bcce369 authored by Jean-Baptiste Queru's avatar Jean-Baptiste Queru
Browse files

Merge donut into master

parents 37cb461e 91a67808
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -217,7 +217,13 @@ status_t CameraService::Client::unlock()
    // allow anyone to use camera
    LOGV("unlock (%p)", getCameraClient()->asBinder().get());
    status_t result = checkPid();
    if (result == NO_ERROR) mClientPid = 0;
    if (result == NO_ERROR) {
        mClientPid = 0;

        // we need to remove the reference so that when app goes
        // away, the reference count goes to 0.
        mCameraClient.clear();
    }
    return result;
}

@@ -894,8 +900,6 @@ status_t CameraService::Client::setParameters(const String8& params)
// get preview/capture parameters - key/value pairs
String8 CameraService::Client::getParameters() const
{
    LOGD("getParameters");

    Mutex::Autolock lock(mLock);

    if (mHardware == 0) {
@@ -903,7 +907,9 @@ String8 CameraService::Client::getParameters() const
        return String8();
    }

    return mHardware->getParameters().flatten();
    String8 params(mHardware->getParameters().flatten());
    LOGD("getParameters(%s)", params.string());
    return params;
}

void CameraService::Client::postAutoFocus(bool focused)
+14 −32
Original line number Diff line number Diff line
@@ -655,16 +655,12 @@ status_t AudioFlinger::setStreamVolume(int stream, float value)
    
    if (stream == AudioSystem::VOICE_CALL ||
        stream == AudioSystem::BLUETOOTH_SCO) {
        float hwValue = value;
        float hwValue;
        if (stream == AudioSystem::VOICE_CALL) {
            hwValue = (float)AudioSystem::logToLinear(value)/100.0f;
            // FIXME: This is a temporary fix to re-base the internally
            // generated in-call audio so that it is never muted, which is
            // already the case for the hardware routed in-call audio.
            // When audio stream handling is reworked, this should be
            // addressed more cleanly.  Fixes #1324; see discussion at
            // http://review.source.android.com/8224
            value = value * 0.99 + 0.01;        
            // offset value to reflect actual hardware volume that never reaches 0
            // 1% corresponds roughly to first step in VOICE_CALL stream volume setting (see AudioService.java)
            value = 0.01 + 0.99 * value;
        } else { // (type == AudioSystem::BLUETOOTH_SCO)
            hwValue = 1.0f;
        }
@@ -676,6 +672,11 @@ status_t AudioFlinger::setStreamVolume(int stream, float value)
        
    }
    
    mHardwareMixerThread->setStreamVolume(stream, value);
#ifdef WITH_A2DP
    mA2dpMixerThread->setStreamVolume(stream, value);
#endif

    mHardwareMixerThread->setStreamVolume(stream, value);
#ifdef WITH_A2DP
    mA2dpMixerThread->setStreamVolume(stream, value);
@@ -718,15 +719,14 @@ float AudioFlinger::streamVolume(int stream) const
    if (uint32_t(stream) >= AudioSystem::NUM_STREAM_TYPES) {
        return 0.0f;
    }
    float value = mHardwareMixerThread->streamVolume(stream);
    
    float volume = mHardwareMixerThread->streamVolume(stream); 
    // remove correction applied by setStreamVolume()
    if (stream == AudioSystem::VOICE_CALL) {
        // FIXME: Re-base internally generated in-call audio,
        // reverse of above in setStreamVolume.
        value = (value - 0.01) / 0.99;
        volume = (volume - 0.01) / 0.99 ;
    }
    
    return value;
    return volume;
}

bool AudioFlinger::streamMute(int stream) const
@@ -829,17 +829,12 @@ void AudioFlinger::handleForcedSpeakerRoute(int command)
                if (mForcedRoute == 0 && !(mSavedRoute & AudioSystem::ROUTE_SPEAKER)) {
                    LOGV("Route forced to Speaker ON %08x", mSavedRoute | AudioSystem::ROUTE_SPEAKER);
                    mHardwareMixerThread->setStreamMute(AudioSystem::MUSIC, true);
                    mHardwareStatus = AUDIO_HW_SET_MASTER_VOLUME;
                    mAudioHardware->setMasterVolume(0);
                    usleep(mHardwareMixerThread->latency()*1000);
                    mHardwareStatus = AUDIO_HW_SET_ROUTING;
                    mAudioHardware->setRouting(AudioSystem::MODE_NORMAL, mSavedRoute | AudioSystem::ROUTE_SPEAKER);
                    mHardwareStatus = AUDIO_HW_IDLE;
                    // delay track start so that audio hardware has time to siwtch routes
                    usleep(kStartSleepTime);
                    mHardwareStatus = AUDIO_HW_SET_MASTER_VOLUME;
                    mAudioHardware->setMasterVolume(mHardwareMixerThread->masterVolume());
                    mHardwareStatus = AUDIO_HW_IDLE;
                }
                mForcedRoute = AudioSystem::ROUTE_SPEAKER;
            }
@@ -1497,18 +1492,6 @@ status_t AudioFlinger::MixerThread::addTrack_l(const sp<Track>& track)
    return status;
}

// removeTrack_l() must be called with AudioFlinger::mLock held
void AudioFlinger::MixerThread::removeTrack_l(wp<Track> track, int name)
{
    sp<Track> t = track.promote();
    if (t!=NULL && (t->mState <= TrackBase::STOPPED)) {
        t->reset();
        deleteTrackName_l(name);
        removeActiveTrack_l(track);
        mAudioFlinger->mWaitWorkCV.broadcast();
    }
}

// destroyTrack_l() must be called with AudioFlinger::mLock held
void AudioFlinger::MixerThread::destroyTrack_l(const sp<Track>& track)
{
@@ -1714,7 +1697,7 @@ void* AudioFlinger::MixerThread::TrackBase::getBuffer(uint32_t offset, uint32_t

    // Check validity of returned pointer in case the track control block would have been corrupted.
    if (bufferStart < mBuffer || bufferStart > bufferEnd || bufferEnd > mBufferEnd || 
            cblk->channels == 2 && ((unsigned long)bufferStart & 3) ) {
        (cblk->channels == 2 && ((unsigned long)bufferStart & 3))) {
        LOGE("TrackBase::getBuffer buffer out of range:\n    start: %p, end %p , mBuffer %p mBufferEnd %p\n    \
                server %d, serverBase %d, user %d, userBase %d, channels %d",
                bufferStart, bufferEnd, mBuffer, mBufferEnd,
@@ -1750,7 +1733,6 @@ AudioFlinger::MixerThread::Track::~Track()
    wp<Track> weak(this); // never create a strong ref from the dtor
    Mutex::Autolock _l(mMixerThread->mAudioFlinger->mLock);
    mState = TERMINATED;
    mMixerThread->removeTrack_l(weak, mName);
}

void AudioFlinger::MixerThread::Track::destroy()
+0 −1
Original line number Diff line number Diff line
@@ -501,7 +501,6 @@ private:
        MixerThread& operator = (const MixerThread&);
  
        status_t    addTrack_l(const sp<Track>& track);
        void        removeTrack_l(wp<Track> track, int name);
        void        destroyTrack_l(const sp<Track>& track);
        int         getTrackName_l();
        void        deleteTrackName_l(int name);
+1 −1
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ static const char* routeStrings[] =
    "EARPIECE ",
    "SPEAKER ",
    "BLUETOOTH ",
    "HEADSET "
    "HEADSET ",
    "BLUETOOTH_A2DP "
};
static const char* routeNone = "NONE";