diff -r 28839de615b4 -r 26645d81f48d featuremgmt/featuremgr/src/serverexe/featmgrfeatureregistry.cpp --- 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; };