diff -r 30342f40acbf -r e1bea15f9a39 widgets/widgetapp/src/WidgetUiWindow.cpp --- a/widgets/widgetapp/src/WidgetUiWindow.cpp Thu Jul 15 19:53:20 2010 +0300 +++ b/widgets/widgetapp/src/WidgetUiWindow.cpp Thu Aug 19 10:58:56 2010 +0300 @@ -99,7 +99,8 @@ iPreferredOrientation(TBrCtlDefs::EOrientationUndefined), iIsCurrent(EFalse), iShowSoftkeys(EFalse), iWidgetLoaded(EFalse), iSchemeProcessing (EFalse), iNetworkState(ENetworkNotAllowed), iUserPermission(ETrue), - iClickCount(0), iWidgetLoadStarted(EFalse) + iClickCount(0), iWidgetLoadStarted(EFalse), iSapiPromptCleared(ETrue),iNeedToIgnoreSapiNtfn(0), + iNeedToIgnoreSapiClearNtfn(0) { } @@ -203,7 +204,7 @@ iNeedToNotifyNetworkState = EFalse; // determine initial widget online/offline network state DetermineNetworkState(); - iAsyncCallBack = new (ELeave) CAsyncCallBack(TCallBack(DeleteItself,this),CActive::EPriorityUserInput); + iAsyncCallBack = new (ELeave) CAsyncCallBack(TCallBack(DeleteItself,this),CActive::EPriorityLow); } // ----------------------------------------------------------------------------- @@ -1303,6 +1304,12 @@ return !iConnecting; } + +void CWidgetUiWindow::DeleteItself() + { + iAsyncCallBack->CallBack(); + } + // ----------------------------------------------------------------------------- // CWidgetUiWindow::DeleteItself() // ----------------------------------------------------------------------------- @@ -1311,6 +1318,12 @@ { CWidgetUiWindow* self = (CWidgetUiWindow*)aPtr; CWidgetUiWindowManager* p = &self->iWindowManager; + //if sync request start another event loop + if(self->Engine()->IsSynchRequestPending()) + { + self->DeleteItself(); + return KErrNone; + } delete self; //The Correct fix is to call AppUI::Exit() //But that is leaving