diff --git a/rpc/srv/dsAudio.c b/rpc/srv/dsAudio.c index 90b1504a..b41b8874 100755 --- a/rpc/srv/dsAudio.c +++ b/rpc/srv/dsAudio.c @@ -3257,6 +3257,11 @@ IARM_Result_t _dsSetAudioMute(void *arg) INT_DEBUG("%s: port: %s , persist audio mute: %s\n",__func__,"HEADPHONE0", param->mute ? "TRUE" : "FALSE"); device::HostPersistence::getInstance().persistHostProperty("HEADPHONE0.audio.mute", _mute); break; + case dsAUDIOPORT_TYPE_HDMI_ARC: + INT_DEBUG("%s: port: %s , persist audio mute: %s\n",__func__,"HDMI_ARC0", param->mute ? "TRUE" : "FALSE"); + device::HostPersistence::getInstance().persistHostProperty("HDMI_ARC0.audio.mute", _mute); + break; + default: break; } @@ -3279,15 +3284,15 @@ IARM_Result_t _dsIsAudioMute(void *arg) dsAudioSetMutedParam_t *param = (dsAudioSetMutedParam_t *)arg; bool muted = false; - + dsError_t ret = dsIsAudioMute(param->handle, &muted); - if (ret == dsERR_NONE) { + dsAudioPortType_t _APortType = _GetAudioPortType(param->handle); + if (ret == dsERR_NONE || (_APortType == dsAUDIOPORT_TYPE_HDMI_ARC)) { param->mute = muted; #ifdef DS_AUDIO_SETTINGS_PERSISTENCE std::string isMuteKey(""); std::string _mute("FALSE"); - dsAudioPortType_t _APortType = _GetAudioPortType(param->handle); switch(_APortType) { case dsAUDIOPORT_TYPE_SPDIF: isMuteKey.append("SPDIF0.audio.mute"); @@ -3301,6 +3306,9 @@ IARM_Result_t _dsIsAudioMute(void *arg) case dsAUDIOPORT_TYPE_HEADPHONE: isMuteKey.append("HEADPHONE0.audio.mute"); break; + case dsAUDIOPORT_TYPE_HDMI_ARC: + isMuteKey.append("HDMI_ARC0.audio.mute"); + break; default: break; } @@ -3312,6 +3320,7 @@ IARM_Result_t _dsIsAudioMute(void *arg) _mute = "FALSE"; } if ("TRUE" == _mute) { + INT_INFO("%s: param mute to true \n", __FUNCTION__); param->mute = true; } INT_DEBUG("%s: persist value:%s for :%s\n", __FUNCTION__, _mute.c_str(), isMuteKey.c_str()); @@ -7080,11 +7089,11 @@ static void* persist_audioLevel_timer_threadFunc(void* arg) { INT_DEBUG("%s Audio level persistence update timer thread running...\n",__func__); struct timespec ts; while(1){ - clock_gettime(CLOCK_REALTIME, &ts); - ts.tv_sec += 5; pthread_mutex_lock(&audioLevelMutex); while(!audioLevel_timer_set){ + clock_gettime(CLOCK_REALTIME, &ts); + ts.tv_sec += 5; int rc = pthread_cond_timedwait(&audioLevelTimerCV, &audioLevelMutex, &ts); if (rc == ETIMEDOUT) continue; diff --git a/rpc/srv/dsVideoPort.c b/rpc/srv/dsVideoPort.c index d29966d2..21ffdcd2 100644 --- a/rpc/srv/dsVideoPort.c +++ b/rpc/srv/dsVideoPort.c @@ -921,23 +921,20 @@ IARM_Result_t _dsSetResolution(void *arg) bool IsIgnoreEdid = ignoreEdidParam.ignoreEDID; IARM_BUS_Lock(lock); INT_DEBUG("ResOverride _dsSetResolution IsIgnoreEdid:%d\n", IsIgnoreEdid); - //IsIgnoreEdid is true platform will take care of current resolution cache. - if (!IsIgnoreEdid) { - dsVideoPortResolution_t platresolution; - memset(&platresolution,'\0',sizeof(platresolution)); - dsGetResolution(param->handle,&platresolution); - INT_INFO("Resolution Requested ..%s Platform Resolution - %s\r\n",resolution.name,platresolution.name); - if ((strcmp(resolution.name,platresolution.name) == 0 )) - { + dsVideoPortResolution_t platresolution; + memset(&platresolution,'\0',sizeof(platresolution)); + dsGetResolution(param->handle,&platresolution); + INT_INFO("Resolution Requested ..%s Platform Resolution - %s\r\n",resolution.name,platresolution.name); + if ((strcmp(resolution.name,platresolution.name) == 0 )) + { - INT_INFO("Same Resolution ..Ignoring Resolution Request------\r\n"); - _dsHDMIResolution = platresolution.name; - /*!< Persist Resolution Settings */ - persistResolution(param); - param->result = ret; - IARM_BUS_Unlock(lock); - return IARM_RESULT_SUCCESS; - } + INT_INFO("Same Resolution ..Ignoring Resolution Request------\r\n"); + _dsHDMIResolution = platresolution.name; + /*!< Persist Resolution Settings */ + persistResolution(param); + param->result = ret; + IARM_BUS_Unlock(lock); + return IARM_RESULT_SUCCESS; } /*!< Resolution Pre Change Event - IARM_BUS_DSMGR_EVENT_RES_POSTCHANGE */ _dsVideoPortPreResolutionCall(¶m->resolution);