diff options
author | Guillaume Denneulin <guillaume.denneulin@intel.com> | 2012-12-20 17:53:29 +0100 |
---|---|---|
committer | David Wagner <david.wagner@intel.com> | 2014-02-12 17:03:31 +0100 |
commit | f2fd15a331fd3b5b63f0dc6f492651330adcedf9 (patch) | |
tree | 4176f855bf77467ed7d1519490bdce022bd1ea4d /parameter/ParameterMgr.cpp | |
parent | ace81f873b910493ab884dc5a6a38ba6ec3d56d3 (diff) | |
download | external_parameter-framework-f2fd15a331fd3b5b63f0dc6f492651330adcedf9.zip external_parameter-framework-f2fd15a331fd3b5b63f0dc6f492651330adcedf9.tar.gz external_parameter-framework-f2fd15a331fd3b5b63f0dc6f492651330adcedf9.tar.bz2 |
PFW: Add resync mechanism if a subsystem needs resync
BZ: 76267
In the case of a hw subsystems reset, it's possible that its
parameter managed by the PFW may not be aligned with the PFW
blackboard.
A re-synchronization mechanism is implemented to ensure that the
subsystem is re-synchronized on the next configurations application.
Change-Id: I032150955d25a7020cf494e69456897b4c157916
Signed-off-by: Guillaume Denneulin <guillaume.denneulin@intel.com>
Reviewed-on: http://android.intel.com:8080/83015
Reviewed-by: Rocard, KevinX <kevinx.rocard@intel.com>
Reviewed-by: Centelles, Sylvain <sylvain.centelles@intel.com>
Tested-by: Dixon, CharlesX <charlesx.dixon@intel.com>
Reviewed-by: cactus <cactus@intel.com>
Tested-by: cactus <cactus@intel.com>
Diffstat (limited to 'parameter/ParameterMgr.cpp')
-rw-r--r-- | parameter/ParameterMgr.cpp | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/parameter/ParameterMgr.cpp b/parameter/ParameterMgr.cpp index 5244199..4116dbe 100644 --- a/parameter/ParameterMgr.cpp +++ b/parameter/ParameterMgr.cpp @@ -355,9 +355,8 @@ bool CParameterMgr::load(string& strError) // We need to ensure all domains are valid pConfigurableDomains->validate(_pMainParameterBlackboard); - // Ensure application of currently selected configurations - // Force-apply configurations - pConfigurableDomains->apply(_pMainParameterBlackboard, true); + // At initialization, check subsystems that need resync + doApplyConfigurations(true); // Start remote processor server if appropriate return handleRemoteProcessingInterface(strError); @@ -559,7 +558,7 @@ CSelectionCriterion* CParameterMgr::getSelectionCriterion(const string& strName) return getSelectionCriteria()->getSelectionCriterion(strName); } -// Selection criteria changed event +// Configuration application void CParameterMgr::applyConfigurations() { CAutoLog autoLog(this, "Configuration application request"); @@ -570,11 +569,7 @@ void CParameterMgr::applyConfigurations() if (!_bTuningModeIsOn) { // Apply configuration(s) - getConfigurableDomains()->apply(_pMainParameterBlackboard, false); - - // Reset the modified status of the current criteria to indicate that a new configuration has been applied - getSelectionCriteria()->resetModifiedStatus(); - + doApplyConfigurations(false); } else { log_warning("Configurations were not applied because the TuningMode is on"); @@ -1335,7 +1330,7 @@ bool CParameterMgr::setTuningMode(bool bOn, string& strError) // Ensure application of currently selected configurations // Force-apply configurations - getConfigurableDomains()->apply(_pMainParameterBlackboard, true); + doApplyConfigurations(true); // Turn auto sync back on _bAutoSyncOn = true; @@ -1908,8 +1903,22 @@ const CConfigurableDomains* CParameterMgr::getConstConfigurableDomains() const return static_cast<const CConfigurableDomains*>(getChild(EConfigurableDomains)); } -/// GUI commands functions +// Apply configurations +void CParameterMgr::doApplyConfigurations(bool bForce) +{ + CSyncerSet syncerSet; + // Check subsystems that need resync + getSystemClass()->checkForSubsystemsToResync(syncerSet); + + // Ensure application of currently selected configurations + getConfigurableDomains()->apply(_pMainParameterBlackboard, syncerSet, bForce); + + // Reset the modified status of the current criteria to indicate that a new configuration has been applied + getSelectionCriteria()->resetModifiedStatus(); +} + +/// GUI commands functions bool CParameterMgr::getDomainsXMLString(string& strResult, bool bWithSettings) { |