Loading services/soundtrigger/SoundTriggerHwService.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -535,6 +535,16 @@ status_t SoundTriggerHwService::Module::loadSoundModel(const sp<IMemory>& modelM (struct sound_trigger_sound_model *)modelMemory->pointer(); AutoMutex lock(mLock); if (mModels.size() >= mDescriptor.properties.max_sound_models) { if (mModels.size() == 0) { return INVALID_OPERATION; } ALOGW("loadSoundModel() max number of models exceeded %d making room for a new one", mDescriptor.properties.max_sound_models); unloadSoundModel_l(mModels.valueAt(0)->mHandle); } status_t status = mHwDevice->load_sound_model(mHwDevice, sound_model, SoundTriggerHwService::soundModelCallback, Loading Loading @@ -566,6 +576,11 @@ status_t SoundTriggerHwService::Module::unloadSoundModel(sound_model_handle_t ha } AutoMutex lock(mLock); return unloadSoundModel_l(handle); } status_t SoundTriggerHwService::Module::unloadSoundModel_l(sound_model_handle_t handle) { ssize_t index = mModels.indexOfKey(handle); if (index < 0) { return BAD_VALUE; Loading @@ -574,6 +589,7 @@ status_t SoundTriggerHwService::Module::unloadSoundModel(sound_model_handle_t ha mModels.removeItem(handle); if (model->mState == Model::STATE_ACTIVE) { mHwDevice->stop_recognition(mHwDevice, model->mHandle); model->mState = Model::STATE_IDLE; } AudioSystem::releaseSoundTriggerSession(model->mCaptureSession); return mHwDevice->unload_sound_model(mHwDevice, handle); Loading services/soundtrigger/SoundTriggerHwService.h +3 −0 Original line number Diff line number Diff line Loading @@ -141,6 +141,9 @@ public: private: status_t unloadSoundModel_l(sound_model_handle_t handle); Mutex mLock; wp<SoundTriggerHwService> mService; struct sound_trigger_hw_device* mHwDevice; Loading Loading
services/soundtrigger/SoundTriggerHwService.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -535,6 +535,16 @@ status_t SoundTriggerHwService::Module::loadSoundModel(const sp<IMemory>& modelM (struct sound_trigger_sound_model *)modelMemory->pointer(); AutoMutex lock(mLock); if (mModels.size() >= mDescriptor.properties.max_sound_models) { if (mModels.size() == 0) { return INVALID_OPERATION; } ALOGW("loadSoundModel() max number of models exceeded %d making room for a new one", mDescriptor.properties.max_sound_models); unloadSoundModel_l(mModels.valueAt(0)->mHandle); } status_t status = mHwDevice->load_sound_model(mHwDevice, sound_model, SoundTriggerHwService::soundModelCallback, Loading Loading @@ -566,6 +576,11 @@ status_t SoundTriggerHwService::Module::unloadSoundModel(sound_model_handle_t ha } AutoMutex lock(mLock); return unloadSoundModel_l(handle); } status_t SoundTriggerHwService::Module::unloadSoundModel_l(sound_model_handle_t handle) { ssize_t index = mModels.indexOfKey(handle); if (index < 0) { return BAD_VALUE; Loading @@ -574,6 +589,7 @@ status_t SoundTriggerHwService::Module::unloadSoundModel(sound_model_handle_t ha mModels.removeItem(handle); if (model->mState == Model::STATE_ACTIVE) { mHwDevice->stop_recognition(mHwDevice, model->mHandle); model->mState = Model::STATE_IDLE; } AudioSystem::releaseSoundTriggerSession(model->mCaptureSession); return mHwDevice->unload_sound_model(mHwDevice, handle); Loading
services/soundtrigger/SoundTriggerHwService.h +3 −0 Original line number Diff line number Diff line Loading @@ -141,6 +141,9 @@ public: private: status_t unloadSoundModel_l(sound_model_handle_t handle); Mutex mLock; wp<SoundTriggerHwService> mService; struct sound_trigger_hw_device* mHwDevice; Loading