--- a/featuremgmt/featuremgr/src/serverexe/featmgrfeatureregistry.cpp Thu Aug 19 11:36:21 2010 +0300
+++ b/featuremgmt/featuremgr/src/serverexe/featmgrfeatureregistry.cpp Tue Aug 31 16:57:14 2010 +0300
@@ -163,6 +163,11 @@
}
else
{
+ TBitFlags32 flags = iFeatureList[index].FeatureFlags();
+ flags.Assign( EFeatureSupported, KFeatureUnsupported );
+ TUint32 data = iFeatureList[index].FeatureData();
+ TFeatureServerEntry entry( aFeature.FeatureUid(), flags, data );
+ aFeature = entry;
err = KFeatureUnsupported;
}
@@ -276,8 +281,19 @@
{
data = *aData;
}
- TFeatureServerEntry entry( aFeature, flags, data );
- err = SWICacheCommand(ESWISetFeatAndData, entry);
+
+ TFeatureServerEntry entry( aFeature, flags, data );
+
+ // If aData is not null, we want to change the user data too
+ // otherwise only change the feature status.
+ if( aData )
+ {
+ err = SWICacheCommand(ESWISetFeatAndData, entry);
+ }
+ else
+ {
+ err = SWICacheCommand(ESWISetFeat, entry);
+ }
}
else
{
@@ -1442,6 +1458,13 @@
EFeatureSupportUntouch,&data);
}
break;
+ case ESWISetFeat:
+ {
+ SetFeature( iSWICachedOperations[i].iFeatEntry.FeatureUid(),
+ iSWICachedOperations[i].iFeatEntry.FeatureFlags().Value(),
+ NULL);
+ }
+ break;
default:
break;
};