[prev in list] [next in list] [prev in thread] [next in thread] 

List:       helix-clientapps-dev
Subject:    [Clientapps-dev] CR: ou1cimx1#838053: Videos: Black frame or
From:       <ext-debashis.2.panigrahi () nokia ! com>
Date:       2011-08-26 5:35:20
Message-ID: 099BCA98809A10489DC52CB686AA736402B8C7 () 008-AM1MPN1-022 ! mgdnok ! nokia ! com
[Download RAW message or body]

"Nokia submits this code under the terms of a commercial contribution agreement with \
RealNetworks, and I am authorized to contribute this code under said agreement."

Modified by: ext-debashis.2.panigrahi@nokia.com

Reviewed by: girish.shetty@nokia.com

TSW Id: ou1cimx1#838053

Date: 08/25/2011

Project: SymbianMmf_wm

Synopsis:   Videos: Black frame or "System: System error" is displayed if seeking \
after returning from background

Overview:  This change will only address the system error. Other issues like 'black \
frame' and playback not resuming after seek are due to GOOM, which takes more time to \
free the memory (Ref: Case 888697 and Case 887257). It is a special case where play \
is getting called after DevVideo Restored event, while DevVideo is unable to get last \
frame for the Post Processor. This causes the state controller to remove the display \
surface thinking it as the temporary surface that's get created to display the last \
frame after seek. All this happens because both 'm_resourceLost' and \
'm_bSurfaceCreated' flags are set before play is called. When the surface handler \
queries for buffers for posting the frame, its unable to get it and a fatal error \
(KErrArgument) is raised from PP, which propagates as System Error.

Fix:  Clearing the 'm_resourceLost' flag on getting Device Restored event from \
DevVideo. This will prevent RemoveSurface() from getting called, if it is not needed. \
This change was done before but was removed as no CR was associated with it. Also \
made some minor changes related to setting of HXBOOL's.

Files modified & changes:
/cvsroot/clientapps/symbianMmf/hxmmfstatectrl.cpp

Image Size and Heap Use impact: No major impact

Module Release testing (STIF): Yes

Test case(s) Added: No 

Memory leak check performed: Passed, No additional leaks introduced.

Platforms and Profiles Build Verified: helix-client-s60-52-mmf-mdf-dsp

Platforms and Profiles Functionality verified: armv5

Branch: 420Brizo and HEAD

Diff: 
cvs diff: Diffing .
Index: hxmmfstatectrl.cpp
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/hxmmfstatectrl.cpp,v
retrieving revision 1.32.12.17
diff -u -w -r1.32.12.17 hxmmfstatectrl.cpp
--- hxmmfstatectrl.cpp  23 Jun 2011 23:21:27 -0000      1.32.12.17
+++ hxmmfstatectrl.cpp  25 Aug 2011 06:29:50 -0000
@@ -357,7 +357,12 @@
     if(ulHXCode == HXR_DEVVIDEO_RESOURCE_LOST)
     {
         HXLOGL2(HXLOG_SMMF, "HXMMFStateCtrl::ErrorOccurred() Resource Loss");
-        m_resourceLost = true;
+        m_resourceLost = TRUE;
+    }
+    else if(ulHXCode == HXR_DEVVIDEO_RESOURCE_RESTORED)
+    {
+        HXLOGL2(HXLOG_SMMF, "HXMMFStateCtrl::ErrorOccurred() Resource Restored");
+        m_resourceLost = FALSE;
     }

     //
@@ -482,8 +487,8 @@
     , m_pRegistry(NULL)
     , m_pTitleChangeObs(NULL)
     , m_pAuthorChangeObs(NULL)
-    , m_resourceLost(false)
-    , m_bEnablePausedLoadingStatus(false)
+    , m_resourceLost(FALSE)
+    , m_bEnablePausedLoadingStatus(FALSE)
     , m_clientTid(0)
     , m_bSurfaceCreated(FALSE)
 #ifdef HELIX_FEATURE_POWER_SAVE
@@ -810,7 +815,7 @@
 void
 HXMMFStateCtrl::OnPlaying()
 {
-       m_resourceLost = false;
+       m_resourceLost = FALSE;
     if ( m_pObserver )
         m_pObserver->OnPlaying();
 }

_______________________________________________
Clientapps-dev mailing list
Clientapps-dev@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/clientapps-dev


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic