taskswitcher/contextengine/tsfswpreviewprovider/wsplugin/src/previewprovidercrp.cpp
branchRCL_3
changeset 19 79311d856354
parent 11 ff572dfe6d86
--- a/taskswitcher/contextengine/tsfswpreviewprovider/wsplugin/src/previewprovidercrp.cpp	Wed Apr 14 15:47:59 2010 +0300
+++ b/taskswitcher/contextengine/tsfswpreviewprovider/wsplugin/src/previewprovidercrp.cpp	Tue Apr 27 16:26:12 2010 +0300
@@ -53,7 +53,8 @@
 // --------------------------------------------------------------------------
 //    
 void CPreviewProviderCRP::ConstructL()
-    { 
+    {
+    iLastWgIdRedraw = ETrue;
     }
 
 // --------------------------------------------------------------------------
@@ -147,7 +148,8 @@
     
     BaseConstructL( aEnv, aId, aOwner );
     aEnv.RegisterEventHandler( this, this, TWservCrEvent::EWindowGroupChanged |
-                                           TWservCrEvent::EDeviceOrientationChanged );
+                                           TWservCrEvent::EDeviceOrientationChanged |
+                                           TWservCrEvent::EScreenDrawing );
     iScreenChangedTime = 0;
     
     TSLOG_OUT();
@@ -174,7 +176,10 @@
             TInt err = currTime.SecondsFrom( iScreenChangedTime, secondsFrom );
             if ( err != KErrNone || secondsFrom.Int() > KMinTimeForOrientationSwitch )
                 {
-                TRAP_IGNORE( ScreenshotL() );
+                if ( iLastWgIdRedraw )
+                    {
+                    TRAP_IGNORE( ScreenshotL() );
+                    }
                 }
             else
                 {
@@ -186,11 +191,19 @@
             iPrevReg = 0;
             }
         iPrevId = wgId;
+        iLastWgIdRedraw = EFalse;
         }
     else if ( aEvent.Type() == TWservCrEvent::EDeviceOrientationChanged )
         {
         iScreenChangedTime.HomeTime();
-        TRAP_IGNORE( ScreenshotL() );
+        if ( iLastWgIdRedraw )
+            {
+            TRAP_IGNORE( ScreenshotL() );
+            }
+        }
+    else if ( aEvent.Type() == TWservCrEvent::EScreenDrawing )
+        {
+        iLastWgIdRedraw = ETrue;
         }
     
     TSLOG_OUT();