browserui/browser/FavouritesSrc/BrowserFavouritesListbox.cpp
branchRCL_3
changeset 60 b149f0820e5a
parent 31 868cceedabd3
--- a/browserui/browser/FavouritesSrc/BrowserFavouritesListbox.cpp	Wed Jun 09 09:45:02 2010 +0300
+++ b/browserui/browser/FavouritesSrc/BrowserFavouritesListbox.cpp	Mon Jun 21 15:43:41 2010 +0300
@@ -107,6 +107,8 @@
     delete iIconIndexes;
     delete iItems;
     delete iNewState;
+    if(iIconUpdateCallback) iIconUpdateCallback->Cancel();
+    delete iIconUpdateCallback;
     
     if ( iFontItalic )
         {
@@ -144,7 +146,16 @@
     CleanupStack::PushL( aItems );
 
     // Get all favicons asynchronously by iteration on icon array
+    /* TODO: There should a callback from engine when favIcon are decode
+       otherwise it takes some redundant calls to engine in order to get 
+     the favIcons to UI. */
+#ifdef BRDO_PERF_IMPROVEMENTS_ENABLED_FF    
+    if(iApiProvider.StartedUp())
+        UpdateFavIconsL();
+#else
     iFaviconHandler->StartGetFaviconsL( aItems );
+#endif     
+
 
     // Get icon indexes into new list. Replace the existing
     // data only if successfully gotten. This ensures that they don't go out
@@ -188,6 +199,33 @@
     }
 
 // ---------------------------------------------------------
+// CBrowserFavouritesListbox::UpdateFavIcons
+// ---------------------------------------------------------
+//
+void CBrowserFavouritesListbox::UpdateFavIconsL()
+    {
+    if(iIconUpdateCallback)
+        iIconUpdateCallback->Cancel();
+    else 
+        iIconUpdateCallback = CIdle::NewL(CActive::EPriorityIdle);
+
+    iFaviconHandler->RequestFavicons(iItems);
+    iIconUpdateCallback->Start(TCallBack(UpdateFavIconsCallback, this));
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserBookmarksView::CompleteAppInitCallback
+// ----------------------------------------------------------------------------
+//
+TInt CBrowserFavouritesListbox::UpdateFavIconsCallback( TAny* aParam )
+    {
+    CBrowserFavouritesListbox  *favListBox = STATIC_CAST(CBrowserFavouritesListbox*, aParam);
+    TRAP_IGNORE( (favListBox->iFaviconHandler->StartGetFaviconsL(favListBox->iItems)) )
+    return EFalse;
+    }
+
+
+// ---------------------------------------------------------
 // CBrowserFavouritesListbox::DrawFavicons
 // ---------------------------------------------------------
 //