diff -r a1a5d4e727e8 -r 800203832575 webengine/widgetengine/src/Preferences.cpp --- a/webengine/widgetengine/src/Preferences.cpp Wed Jun 09 10:52:50 2010 +0300 +++ b/webengine/widgetengine/src/Preferences.cpp Mon Jun 21 16:54:17 2010 +0300 @@ -49,7 +49,8 @@ m_basepath(0), m_filepath(0) { - m_preferences = new RPtrHashMap(); + m_preferences = new RPtrHashMap(); + m_asynsave = new (ELeave) CAsyncCallBack(TCallBack(SavePref,this),CActive::EPriorityIdle); } // ---------------------------------------------------------------------------- @@ -59,8 +60,19 @@ // // ---------------------------------------------------------------------------- WidgetPreferences::~WidgetPreferences() -{ - //TRAP_IGNORE( saveL() ); +{ + if(m_asynsave && m_asynsave->IsActive()) + { + m_asynsave->Cancel(); + TRAPD(err, saveL()); + if(err!= KErrNone) + { + deleteAllPrefFiles(); + } + } + delete m_asynsave; + m_asynsave = NULL; + if (m_preferences) { m_preferences->ResetAndDestroy(); m_preferences->Close(); @@ -265,14 +277,10 @@ CleanupStack::Pop(); // k - // Save update to persistent storage - TRAPD(err, saveL()); - if(err!= KErrNone) - { - deleteAllPrefFiles(); - } + // Save update to persistent storage + m_asynsave->Cancel(); + m_asynsave->CallBack(); } - } // ---------------------------------------------------------------------------- @@ -544,6 +552,23 @@ CleanupStack::PopAndDestroy(3); // readStream, filePath, fs } + +// ---------------------------------------------------------------------------- +// WidgetPreferences::SavePref +// Save preferences for persistent storage +// +// +// +TInt WidgetPreferences::SavePref(TAny* aPtr) +{ + WidgetPreferences* self = (WidgetPreferences*)aPtr; + TRAPD(err, self->saveL()); + if(err!= KErrNone) + { + self->deleteAllPrefFiles(); + } + return 0; +} // ---------------------------------------------------------------------------- // PrefElement::PrefElement