Binary file mediasettings/mediasettingsapp/conf/mediasettings.confml has changed
Binary file mediasettings/mediasettingsapp/conf/mediasettings_101F880B.crml has changed
--- a/mediasettings/mediasettingsapp/group/bld.inf Tue Apr 27 16:40:33 2010 +0300
+++ b/mediasettings/mediasettingsapp/group/bld.inf Tue May 11 16:15:40 2010 +0300
@@ -15,7 +15,7 @@
*/
-// Version : %version: 10 %
+// Version : %version: 11 %
#include <platform_paths.hrh>
@@ -31,11 +31,6 @@
../rom/mediasettings.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mediasettings.iby)
../rom/mediasettingsresources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(mediasettingsresources.iby)
-// Generic configuration interface for component cenrep settings
-// mediasettings_101F880B implementation specifics for cenrep data
-../conf/mediasettings.confml APP_LAYER_CONFML(mediasettings.confml)
-../conf/mediasettings_101F880B.crml APP_LAYER_CRML(mediasettings_101F880B.crml)
-
PRJ_EXTENSIONS
START EXTENSION s60/mifconv
OPTION TARGETFILE mediasettings.mif
Binary file mediasettings/mediasettingsengine/conf/mediasettings.confml has changed
Binary file mediasettings/mediasettingsengine/conf/mediasettings_101F880B.crml has changed
--- a/mediasettings/mediasettingsengine/group/bld.inf Tue Apr 27 16:40:33 2010 +0300
+++ b/mediasettings/mediasettingsengine/group/bld.inf Tue May 11 16:15:40 2010 +0300
@@ -16,7 +16,7 @@
-// Version : %version: 7 %
+// Version : %version: 8 %
#include <platform_paths.hrh>
@@ -30,6 +30,11 @@
../rom/mpsettropmodel.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpsettropmodel.iby)
../rom/mpsettropmodelrsc.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mpsettropmodelrsc.iby)
+// Generic configuration interface for component cenrep settings
+// mediasettings_101F880B implementation specifics for cenrep data
+../conf/mediasettings.confml APP_LAYER_CONFML(mediasettings.confml)
+../conf/mediasettings_101F880B.crml APP_LAYER_CRML(mediasettings_101F880B.crml)
+
PRJ_MMPFILES
../group/MPSettROPModel.mmp
--- a/videocollection/hgmyvideos/inc/vcxhgmyvideoscollectionclient.h Tue Apr 27 16:40:33 2010 +0300
+++ b/videocollection/hgmyvideos/inc/vcxhgmyvideoscollectionclient.h Tue May 11 16:15:40 2010 +0300
@@ -380,6 +380,11 @@
* Variable for storing pending collection command.
*/
TVcxHgMyVideosCollectionCommand iPendingCommand;
+
+ /**
+ * Variable for storing current collection level.
+ */
+ TInt iCollectionLevel;
#if defined(_DEBUG) && IPTV_LOGGING_METHOD != 0
private:
--- a/videocollection/hgmyvideos/inc/vcxhgmyvideosvideomodelhandler.h Tue Apr 27 16:40:33 2010 +0300
+++ b/videocollection/hgmyvideos/inc/vcxhgmyvideosvideomodelhandler.h Tue May 11 16:15:40 2010 +0300
@@ -477,9 +477,9 @@
TBool ValidOrigin( CMPXMedia& aMedia );
/**
- * Saves MPX id of highlighted item.
+ * Saves MPX id of first (topmost) visible item.
*/
- void SaveHighlightedItemIdL();
+ void SaveFirstListItemIdL();
/**
* Update scrollbar strip type depending on sort order
@@ -576,15 +576,15 @@
TInt iCurrentCategoryIndex;
/**
- * Flag for indicating that highlight should restore to the position
+ * Flag for indicating that list should restore to the position
* where it was before model deactivating.
*/
- TBool iRestoreHighlightPosition;
+ TBool iRestoreListPosition;
/**
- * MPX id of highlighted item in a video list.
+ * MPX id of first (topmost) visible item in a video list.
*/
- TMPXItemId iHighlightedItemId;
+ TMPXItemId iFirstListItemId;
/**
* Downloading has been resumed for these MPX IDs. Needed for showing
--- a/videocollection/hgmyvideos/src/vcxhgmyvideoscollectionclient.cpp Tue Apr 27 16:40:33 2010 +0300
+++ b/videocollection/hgmyvideos/src/vcxhgmyvideoscollectionclient.cpp Tue May 11 16:15:40 2010 +0300
@@ -60,7 +60,8 @@
//
CVcxHgMyVideosCollectionClient::CVcxHgMyVideosCollectionClient()
: iCollectionOpenStatus( EVcxHgCollectionNotOpen ),
- iPendingCommand( EVcxHgMyVideosCollectionCommandNone )
+ iPendingCommand( EVcxHgMyVideosCollectionCommandNone ),
+ iCollectionLevel( KErrNotFound )
{
}
@@ -185,7 +186,11 @@
}
else
{
- if ( CollectionLevelL() == KVcxMpxLevelVideos )
+ if ( iCollectionLevel == KErrNotFound )
+ {
+ iCollectionLevel = CollectionLevelL();
+ }
+ if ( iCollectionLevel == KVcxMpxLevelVideos )
{
iCollectionUtility->Collection().BackL();
}
@@ -201,13 +206,15 @@
IPTVLOGSTRING2_LOW_LEVEL(
"MPX My Videos UI # GetVideoListL(%d)", aIndex );
- TInt collectionLevel = CollectionLevelL();
-
- if ( collectionLevel == KVcxMpxLevelCategories )
+ if ( iCollectionLevel == KErrNotFound )
+ {
+ iCollectionLevel = CollectionLevelL();
+ }
+ if ( iCollectionLevel == KVcxMpxLevelCategories )
{
iCollectionUtility->Collection().OpenL( aIndex );
}
- else if ( collectionLevel == KVcxMpxLevelVideos )
+ else if ( iCollectionLevel == KVcxMpxLevelVideos )
{
iCollectionUtility->Collection().BackL();
iCollectionUtility->Collection().OpenL( aIndex );
@@ -568,6 +575,7 @@
}
iCollectionUtility->Collection().OpenL();
}
+ iCollectionLevel = CollectionLevelL();
}
break;
case TMPXCollectionMessage::ECollectionChanged:
--- a/videocollection/hgmyvideos/src/vcxhgmyvideosvideomodelhandler.cpp Tue Apr 27 16:40:33 2010 +0300
+++ b/videocollection/hgmyvideos/src/vcxhgmyvideosvideomodelhandler.cpp Tue May 11 16:15:40 2010 +0300
@@ -113,7 +113,7 @@
iView( aView ),
iScroller( aScroller ),
iCurrentCategoryIndex( KErrNotFound ),
- iRestoreHighlightPosition( EFalse )
+ iRestoreListPosition( EFalse )
{
}
@@ -188,19 +188,20 @@
iModel.CollectionClient().SetVideoModelObserver( NULL );
iScroller.DisableScrollBuffer();
- TRAP_IGNORE( SaveHighlightedItemIdL() );
+ TRAP_IGNORE( SaveFirstListItemIdL() );
IPTVLOGSTRING_LOW_LEVEL(
"MPX My Videos UI # CVcxHgMyVideosVideoModelHandler::DoModelDeactivate() - Exit" );
}
// -----------------------------------------------------------------------------
-// CVcxHgMyVideosVideoModelHandler::SaveHighlightedItemIdL()
+// CVcxHgMyVideosVideoModelHandler::SaveFirstListItemIdL()
// -----------------------------------------------------------------------------
//
-void CVcxHgMyVideosVideoModelHandler::SaveHighlightedItemIdL()
+void CVcxHgMyVideosVideoModelHandler::SaveFirstListItemIdL()
{
- iHighlightedItemId = iVideoArray->ArrayIndexToMpxItemIdL( Highlight() );
+ iFirstListItemId = iVideoArray->ArrayIndexToMpxItemIdL(
+ iScroller.FirstIndexOnScreen() );
}
// -----------------------------------------------------------------------------
@@ -216,8 +217,8 @@
// If we are re-opening the same video list again, then try
// restore the highlight to previous position.
- aCategoryIndex == iCurrentCategoryIndex ? iRestoreHighlightPosition = ETrue :
- iRestoreHighlightPosition = EFalse;
+ aCategoryIndex == iCurrentCategoryIndex ? iRestoreListPosition = ETrue :
+ iRestoreListPosition = EFalse;
// Removes videos from video list.
iVideoArray->RemoveVideoList();
@@ -1214,15 +1215,16 @@
{
ResizeScrollerL( videoCount );
- TInt highlight( KErrNotFound );
+ TInt firstItemIndex( KErrNotFound );
- if ( iRestoreHighlightPosition )
+ if ( iRestoreListPosition )
{
- highlight = iVideoArray->IndexByMPXItemId( iHighlightedItemId );
+ firstItemIndex = iVideoArray->IndexByMPXItemId( iFirstListItemId );
}
- highlight != KErrNotFound ? iScroller.SetSelectedIndex( highlight ) :
- iScroller.SetSelectedIndex( 0 );
+ IPTVLOGSTRING2_LOW_LEVEL( "CVcxHgMyVideosVideoModelHandler::NewVideoListL() Setting list position first index = %d", firstItemIndex );
+ firstItemIndex != KErrNotFound ? iScroller.SetFirstIndexOnScreen( firstItemIndex ) :
+ iScroller.SetFirstIndexOnScreen( 0 );
}
else
{
--- a/videocollection/mpxmyvideoscollection/inc/vcxmyvideosmdsdb.h Tue Apr 27 16:40:33 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/inc/vcxmyvideosmdsdb.h Tue May 11 16:15:40 2010 +0300
@@ -25,10 +25,86 @@
#include <mdequery.h>
#include <harvesterclient.h>
#include <mpxcollectionmessagedefs.h>
+#include <e32property.h>
+
+const TUid KHarvesterPSShutdown = { 0x200009F5 } ;
+const TInt KMdSShutdown = 0x00000002; // values 1 = shutdown, 0 = restart, normal state
+
+static _LIT_SECURITY_POLICY_PASS(KAllowAllPolicy);
+static _LIT_SECURITY_POLICY_C1(KPowerMgmtPolicy,ECapabilityPowerMgmt);
class CRepository;
/**
+ * PSCW Listener Observer interface for signaling that MDS has Shutdown/restarted
+ */
+class MVcxMdsShutdownMonitorObserver
+ {
+public:
+
+ virtual void ShutdownNotification( TInt aShutdownState ) = 0;
+ };
+
+/**
+ * Active object for observing P&S keys
+ */
+class CVcxMdsShutdownMonitor: public CActive
+ {
+public:
+
+ /**
+ * Two-phased constructor.
+ *
+ * @return Instance of CVcxMdsShutdownMonitor.
+ */
+ static CVcxMdsShutdownMonitor* NewL( MVcxMdsShutdownMonitorObserver& aObserver,
+ const TUid& aKeyCategory, const TInt aPropertyKey, TBool aDefineKey);
+
+ /**
+ * Destructor
+ */
+ virtual ~CVcxMdsShutdownMonitor();
+
+protected:
+
+ /**
+ * Handles an active object's request completion event.
+ */
+ void RunL();
+
+ /**
+ * Implements cancellation of an outstanding request.
+ */
+ void DoCancel();
+
+private:
+
+ /**
+ * C++ default constructor
+ *
+ * @return Instance of CVcxMdsShutdownMonitor.
+ */
+ CVcxMdsShutdownMonitor( MVcxMdsShutdownMonitorObserver& aObserver,
+ const TUid& aKeyCategory, const TInt iPropertyKey, TBool aDefineKey );
+
+ /**
+ * Symbian 2nd phase constructor can leave.
+ */
+ void ConstructL();
+
+private:
+
+ // not own
+ MVcxMdsShutdownMonitorObserver& iObserver;
+
+ const TUid& iKeyCategory;
+ RProperty iProperty;
+ TInt iPropertyKey;
+
+ TBool iDefineKey;
+};
+
+/**
* MPX My Videos collection MDS database observer class.
* Part of ECOM Plugin.
*/
@@ -86,7 +162,8 @@
public MMdESessionObserver,
public MMdEQueryObserver,
public MMdEObjectObserver,
- public MMdEObjectPresentObserver
+ public MMdEObjectPresentObserver,
+ public MVcxMdsShutdownMonitorObserver
{
public:
@@ -166,6 +243,8 @@
*/
CMPXMedia* CreateVideoL( TUint32 aId, TBool aFullDetails = ETrue );
+protected: // from base classes
+
// from MMdESessionObserver
/**
@@ -222,7 +301,6 @@
// from MMdEObjectObserver
-
void HandleObjectNotification( CMdESession& aSession,
TObserverNotificationType aType,
const RArray<TItemId>& aObjectIdArray);
@@ -230,6 +308,10 @@
// from MMdEObjectPresentObserver
void HandleObjectPresentNotification(CMdESession& aSession,
TBool aPresent, const RArray<TItemId>& aObjectIdArray);
+
+// from MVcxMdsShutdownMonitorObserver
+ void ShutdownNotification( TInt aShutdownState );
+
private:
/**
@@ -315,6 +397,17 @@
* @param aObject Creation date is written here.
*/
void SetCreationDateToObjectL( const CMPXMedia& aVideo, CMdEObject& aObject );
+
+ /**
+ * Opens MDS session.
+ */
+ void OpenMdsSessionL();
+
+ /**
+ * @return MDS session.
+ */
+ CMdESession& MdsSessionL();
+
public:
/**
@@ -328,12 +421,12 @@
/**
* The MDS session object. Own.
*/
- CMdESession* iMDSSession;
+ CMdESession* iMdsSession;
/**
- * The error code saved from the callbacks.
+ * The error code of last iMDSSession operation.
*/
- TInt iMDSError;
+ TInt iMdsSessionError;
/**
* Asynchronous video list fetching query is stored here.
@@ -517,6 +610,12 @@
* Cenrep session.
*/
CRepository* iRepository;
+
+ /**
+ * Monitors Mds server shutdown states.
+ */
+ CVcxMdsShutdownMonitor* iMdsShutdownMonitor;
+
};
#endif // VCXMYVIDEOSMDSDB_H
--- a/videocollection/mpxmyvideoscollection/src/vcxmyvideosmdsdb.cpp Tue Apr 27 16:40:33 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideosmdsdb.cpp Tue May 11 16:15:40 2010 +0300
@@ -65,6 +65,101 @@
// ---------------------------------------------------------------------------
+// CVcxMdsShutdownMonitor::NewL()
+// ---------------------------------------------------------------------------
+//
+CVcxMdsShutdownMonitor* CVcxMdsShutdownMonitor::NewL( MVcxMdsShutdownMonitorObserver& aObserver,
+ const TUid& aKeyCategory,
+ const TInt aPropertyKey,
+ TBool aDefineKey)
+ {
+ CVcxMdsShutdownMonitor* self = new( ELeave )CVcxMdsShutdownMonitor( aObserver,
+ aKeyCategory,
+ aPropertyKey,
+ aDefineKey);
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CVcxMdsShutdownMonitor::CVcxMdsShutdownMonitor()
+// ---------------------------------------------------------------------------
+//
+CVcxMdsShutdownMonitor::CVcxMdsShutdownMonitor( MVcxMdsShutdownMonitorObserver& aObserver,
+ const TUid& aKeyCategory,
+ const TInt aPropertyKey,
+ TBool aDefineKey)
+ : CActive( CActive::EPriorityStandard ), iObserver( aObserver ),
+ iKeyCategory( aKeyCategory ), iPropertyKey(aPropertyKey), iDefineKey( aDefineKey )
+ {
+ CActiveScheduler::Add( this );
+ }
+
+// ---------------------------------------------------------------------------
+// CVcxMdsShutdownMonitor::ConstructL()
+// ---------------------------------------------------------------------------
+//
+void CVcxMdsShutdownMonitor::ConstructL()
+ {
+ // define P&S property types
+ if ( iDefineKey )
+ {
+ RProperty::Define( iKeyCategory, iPropertyKey,
+ RProperty::EInt, KAllowAllPolicy, KPowerMgmtPolicy );
+ }
+
+ // attach to the property
+ TInt err = iProperty.Attach( iKeyCategory, iPropertyKey,EOwnerThread );
+ User::LeaveIfError( err );
+
+ // wait for the previously attached property to be updated
+ iProperty.Subscribe( iStatus );
+ SetActive();
+ }
+
+// ---------------------------------------------------------------------------
+// CVcxMdsShutdownMonitor::~CVcxMdsShutdownMonitor()
+// ---------------------------------------------------------------------------
+//
+CVcxMdsShutdownMonitor::~CVcxMdsShutdownMonitor()
+ {
+ Cancel();
+ iProperty.Close();
+ }
+
+// ---------------------------------------------------------------------------
+// CVcxMdsShutdownMonitor::RunL()
+// ---------------------------------------------------------------------------
+//
+void CVcxMdsShutdownMonitor::RunL()
+ {
+ // resubscribe before processing new value to prevent missing updates
+ iProperty.Subscribe( iStatus );
+ SetActive();
+
+ // retrieve the value
+ TInt value = 0;
+ TInt err = iProperty.Get( value );
+ MPX_DEBUG2("CVcxMyVideosMdsDb::RunL(): iProperty.Get(value); returns %d", err);
+
+ User::LeaveIfError( err );
+
+ iObserver.ShutdownNotification( value );
+ }
+
+// ---------------------------------------------------------------------------
+// CVcxMdsShutdownMonitor::DoCancel()
+// ---------------------------------------------------------------------------
+//
+void CVcxMdsShutdownMonitor::DoCancel()
+ {
+ iProperty.Cancel();
+ }
+
+// ---------------------------------------------------------------------------
+// CVcxMyVideosMdsDb::CVcxMyVideosMdsDb
// ---------------------------------------------------------------------------
//
CVcxMyVideosMdsDb::CVcxMyVideosMdsDb( MVcxMyVideosMdsDbObserver* aObserver, RFs& aFs )
@@ -73,58 +168,70 @@
}
// ---------------------------------------------------------------------------
+// CVcxMyVideosMdsDb::ConstructL
// ---------------------------------------------------------------------------
//
void CVcxMyVideosMdsDb::ConstructL()
{
- MPX_FUNC( "CVcxMyVideosMdsDb::ConstructL" );
+ MPX_DEBUG1( "CVcxMyVideosMdsDb::ConstructL start" );
iActiveSchedulerWait = new (ELeave) CActiveSchedulerWait;
- MPX_DEBUG1( "CVcxMyVideosMdsDb::ConstructL CMdESession::NewL" );
+ OpenMdsSessionL();
+
+ iMdsShutdownMonitor = CVcxMdsShutdownMonitor::NewL(
+ *this, KHarvesterPSShutdown, KMdSShutdown, EFalse );
+
+ MPX_DEBUG1( "CVcxMyVideosMdsDb::ConstructL exit" );
+ }
- // Create session
- iMDSError = KErrNone;
+// ---------------------------------------------------------------------------
+// CVcxMyVideosMdsDb::OpenMdsSessionL
+// ---------------------------------------------------------------------------
+//
+void CVcxMyVideosMdsDb::OpenMdsSessionL()
+ {
+ MPX_DEBUG1( "CVcxMyVideosMdsDb::OpenMdsSessionL() start" );
+
+ iMdsSessionError = KErrNone;
- iMDSSession = CMdESession::NewL( *this );
- if (!iMDSSession)
+ delete iMdsSession;
+ iMdsSession = NULL;
+ iMdsSession = CMdESession::NewL( *this );
+
+ if ( !iMdsSession )
+ {
+ User::Leave( KErrGeneral );
+ }
+
+ // Wait until session opened
+ iActiveSchedulerWait->Start();
+ MPX_DEBUG1( "CVcxMyVideosMdsDb:: iActiveSchedulerWait->Start done" );
+
+ if ( iMdsSessionError == KErrNone )
{
- // Failed to create session, leave
- User::Leave( iMDSError );
+ MPX_DEBUG1( "CVcxMyVideosMdsDb:: session opened ok, adding observers" );
+
+ // We order all object notifications. If we set video condition, then we wont
+ // receive remove notifications at all (mds feature). Extra notifications
+ // do not bother us much since we try to fetch the item from the db
+ // after the add notification anyways, and then we use video condition.
+ // Eventually extra events are ignored.
+ iMdsSession->AddObjectObserverL( *this, NULL );
+
+ iMdsSession->AddObjectPresentObserverL( *this );
+
+ GetSchemaDefinitionsL();
+ }
+ else
+ {
+ MPX_DEBUG2( "CVcxMyVideosMdsDb:: session opening failed: %d", iMdsSessionError );
+ iMdsSessionError = KErrGeneral; // this ensures that next time when mds is tried to use, it tries to open session again
+ delete iMdsSession;
+ iMdsSession = NULL;
}
- // Wait until session opened
- iActiveSchedulerWait->Start();
-
- MPX_DEBUG1( "CVcxMyVideosMdsDb::ConstructL iActiveSchedulerWait->Start done" );
-
- if ( iMDSError != KErrNone )
- {
- MPX_DEBUG2("Failed to create session to MDS: %d", iMDSError);
- User::LeaveIfError( iMDSError );
- }
-
- // Get the schema definitions
- iMDSError = KErrNone;
- GetSchemaDefinitionsL();
-
- // Is schema ok
- if ( iMDSError != KErrNone )
- {
- // Schema not loaded, abort
- User::Leave( iMDSError );
- }
-
- MPX_DEBUG1( "CVcxMyVideosMdsDb::ConstructL Adding observers" );
-
- // We order all object notifications. If we set video condition, then we wont
- // receive remove notifications at all (mds feature). Extra notifications
- // do not bother us much since we try to fetch the item from the db
- // after the add notification anyways, and then we use video condition.
- // Eventually extra events are ignored.
- iMDSSession->AddObjectObserverL( *this, NULL );
-
- iMDSSession->AddObjectPresentObserverL( *this );
+ MPX_DEBUG1( "CVcxMyVideosMdsDb::OpenMdsSessionL() exit" );
}
// ---------------------------------------------------------------------------
@@ -181,19 +288,16 @@
//
CVcxMyVideosMdsDb::~CVcxMyVideosMdsDb()
{
- MPX_FUNC( "CVcxMyVideosMdsDb::~CVcxMyVideosMdsDb()" );
-
- if ( iMDSSession )
- {
- TRAP_IGNORE( iMDSSession->RemoveObjectObserverL( *this ) );
- }
+ MPX_DEBUG1( "CVcxMyVideosMdsDb::~CVcxMyVideosMdsDb() start" );
Cancel();
-
delete iVideoQuery;
- delete iMDSSession;
+ delete iMdsSession;
delete iActiveSchedulerWait;
delete iRepository;
+ delete iMdsShutdownMonitor;
+
+ MPX_DEBUG1( "CVcxMyVideosMdsDb::~CVcxMyVideosMdsDb() exit" );
}
// ---------------------------------------------------------------------------
@@ -202,13 +306,15 @@
//
void CVcxMyVideosMdsDb::Cancel()
{
- MPX_FUNC("CVcxMyVideosMdsDb::Cancel()");
+ MPX_DEBUG1("CVcxMyVideosMdsDb::Cancel() start");
if ( iVideoQuery )
{
iVideoQuery->Cancel();
}
iVideoListFetchingIsOngoing = EFalse;
+
+ MPX_DEBUG1("CVcxMyVideosMdsDb::Cancel() exit");
}
// ---------------------------------------------------------------------------
@@ -219,15 +325,9 @@
CMPXMedia& aVideo,
TUint32& aMdsId )
{
- MPX_FUNC( "CVcxMyVideosMdsDb::AddVideoL" );
-
- if ( !iMDSSession )
- {
- MPX_DEBUG2("CVcxMyVideosMdsDb:: no mds session(%d), leaving", iMDSError);
- User::Leave( iMDSError );
- }
+ MPX_DEBUG1( "CVcxMyVideosMdsDb::AddVideoL() start" );
- CMdEObject* object = iMDSSession->NewObjectLC(
+ CMdEObject* object = MdsSessionL().NewObjectLC(
*iVideoObjectDef, aVideo.ValueText( KMPXMediaGeneralUri ) ); // 1->
// Value from aVideo is taken in use in Media2ObjectL if aVideo contains creation date
@@ -255,11 +355,11 @@
}
Media2ObjectL( aVideo, *object );
- TRAPD( err, aMdsId = iMDSSession->AddObjectL( *object ) );
+ TRAPD( err, aMdsId = MdsSessionL().AddObjectL( *object ) );
if ( err != KErrNone )
{
- MPX_DEBUG2( "CVcxMyVideosMdsDb:: iMDSSession->AddObjectL leaved with error: %d", err );
+ MPX_DEBUG2( "CVcxMyVideosMdsDb:: MdsSessionL().AddObjectL leaved with error: %d", err );
User::Leave( err );
}
@@ -275,6 +375,7 @@
CleanupStack::PopAndDestroy( object ); // <-1
+ MPX_DEBUG1( "CVcxMyVideosMdsDb::AddVideoL() exit" );
}
// ---------------------------------------------------------------------------
@@ -283,20 +384,14 @@
//
TInt CVcxMyVideosMdsDb::RemoveVideo( TUint32 aMdsId )
{
- MPX_FUNC( "CVcxMyVideosMdsDb::RemoveVideoL" );
-
- if ( !iMDSSession )
- {
- MPX_DEBUG2("CVcxMyVideosMdsDb:: no mds session, returning %d", iMDSError);
- return iMDSError;
- }
+ MPX_DEBUG1( "CVcxMyVideosMdsDb::RemoveVideoL() start" );
TInt retValue( KErrNone );
TItemId id( 0 ); //init to avoid warning
MPX_DEBUG2( "CVcxMyVideosMdsDb:: removing object %d", aMdsId );
- TRAPD( err, id = iMDSSession->RemoveObjectL( aMdsId ) );
+ TRAPD( err, id = MdsSessionL().RemoveObjectL( aMdsId ) );
if ( err == KErrNone )
{
@@ -312,10 +407,11 @@
}
else
{
- MPX_DEBUG2( "CVcxMyVideosMdsDb:: iMDSSession->RemoveObjectL left: %d", err );
+ MPX_DEBUG2( "CVcxMyVideosMdsDb:: MdsSessionL().RemoveObjectL left: %d", err );
retValue = err;
}
-
+
+ MPX_DEBUG1( "CVcxMyVideosMdsDb::RemoveVideoL() exit" );
return retValue;
}
@@ -325,20 +421,14 @@
//
void CVcxMyVideosMdsDb::UpdateVideoL( CMPXMedia& aVideo )
{
- MPX_FUNC( "CVcxMyVideosMdsDb::UpdateVideoL" );
-
- if ( !iMDSSession )
- {
- MPX_DEBUG2("CVcxMyVideosMdsDb:: no mds session(%d), leaving", iMDSError);
- User::Leave( iMDSError );
- }
+ MPX_DEBUG1( "CVcxMyVideosMdsDb::UpdateVideoL() start" );
TMPXItemId mpxId = aVideo.ValueTObjectL<TMPXItemId>( KMPXMediaGeneralId );
MPX_DEBUG2("CVcxMyVideosMdsDb::UpdateVideoL updating object %d ", mpxId.iId1);
CMdEObject* object =
- iMDSSession->OpenObjectL( mpxId.iId1, *iVideoObjectDef );
+ MdsSessionL().OpenObjectL( mpxId.iId1, *iVideoObjectDef );
if ( object == NULL )
{
// No object with this ID was found!
@@ -355,7 +445,7 @@
Media2ObjectL( aVideo, *object );
- iMDSSession->CommitObjectL(*object);
+ MdsSessionL().CommitObjectL(*object);
CleanupStack::PopAndDestroy(object);
}
@@ -367,6 +457,8 @@
User::Leave( KErrInUse );
}
}
+
+ MPX_DEBUG1( "CVcxMyVideosMdsDb::UpdateVideoL() exit" );
}
// ---------------------------------------------------------------------------
@@ -376,13 +468,7 @@
void CVcxMyVideosMdsDb::CreateVideoListL( TVcxMyVideosSortingOrder aSortingOrder,
TBool aAscending, TBool aFullDetails, CMPXMedia*& aVideoList )
{
- MPX_FUNC( "CVcxMyVideosMdsDb::CreateVideoListL" );
-
- if ( !iMDSSession )
- {
- MPX_DEBUG2("CVcxMyVideosMdsDb:: no mds session(%d), leaving", iMDSError);
- User::Leave( iMDSError );
- }
+ MPX_DEBUG1( "CVcxMyVideosMdsDb::CreateVideoListL() start" );
if ( iVideoListFetchingIsOngoing )
{
@@ -400,7 +486,7 @@
delete iVideoQuery;
iVideoQuery = NULL;
- iVideoQuery = iMDSSession->NewObjectQueryL(
+ iVideoQuery = MdsSessionL().NewObjectQueryL(
*iNamespaceDef,
*iVideoObjectDef,
this);
@@ -473,6 +559,8 @@
aVideoList->SetTObjectValueL( KMPXMediaArrayCount, mediaArray->Count() );
iVideoList = aVideoList; // lets store the pointer, ownership stays at observer
+
+ MPX_DEBUG1( "CVcxMyVideosMdsDb::CreateVideoListL() exit" );
}
// ---------------------------------------------------------------------------
@@ -504,7 +592,7 @@
TInt /*aNewItemCount*/ )
#endif
{
- MPX_FUNC("CVcxMyVideosMdsDb::HandleQueryNewResults()");
+ MPX_DEBUG1("CVcxMyVideosMdsDb::HandleQueryNewResults() start");
if ( !iVideoList )
{
@@ -536,6 +624,8 @@
iMdsDbObserver->HandleCreateVideoListResp( iVideoList, aFirstNewItemIndex,
EFalse /* not complete yet */);
+
+ MPX_DEBUG1("CVcxMyVideosMdsDb::HandleQueryNewResults() exit");
}
@@ -552,7 +642,7 @@
#endif
TInt /*aError*/)
{
- MPX_FUNC( "CVcxMyVideosMdsDb::HandleQueryCompleted" );
+ MPX_DEBUG1( "CVcxMyVideosMdsDb::HandleQueryCompleted() start" );
if ( !iVideoList )
{
@@ -575,6 +665,8 @@
iVideoListFetchingIsOngoing = EFalse;
iMdsDbObserver->HandleCreateVideoListResp( iVideoList, KErrNotFound /* KErrNotFound = no new items */,
ETrue /* complete */);
+
+ MPX_DEBUG1( "CVcxMyVideosMdsDb::HandleQueryCompleted() exit" );
iVideoList = NULL; // not owned by us -> just clear
}
@@ -585,7 +677,7 @@
//
CMPXMedia* CVcxMyVideosMdsDb::CreateVideoL( TUint32 aId, TBool aFullDetails )
{
- MPX_FUNC( "CVcxMyVideosMdsDb::CreateVideoL" );
+ MPX_DEBUG1( "CVcxMyVideosMdsDb::CreateVideoL() start" );
CMdEObject* object = ObjectL( aId );
@@ -604,6 +696,8 @@
CleanupStack::PopAndDestroy( object ); // <-1
}
+ MPX_DEBUG1( "CVcxMyVideosMdsDb::CreateVideoL() exit" );
+
return video;
}
@@ -615,7 +709,7 @@
CMdESession& /*aSession*/,
TInt aError)
{
- MPX_FUNC( "CVcxMyVideosMdsDb::HandleSessionOpened" );
+ MPX_DEBUG1("CVcxMyVideosMdsDb::HandleSessionOpened() start" );
iActiveSchedulerWait->AsyncStop();
@@ -623,10 +717,10 @@
{
MPX_DEBUG2( "CVcxMyVideosMdsDb::HandleSessionOpened: %d", aError );
- iMDSError = aError;
- delete iMDSSession;
- iMDSSession = NULL;
+ iMdsSessionError = aError;
}
+
+ MPX_DEBUG1("CVcxMyVideosMdsDb::HandleSessionOpened() exit" );
}
// ---------------------------------------------------------------------------
@@ -637,7 +731,7 @@
CMdESession& /*aSession*/,
TInt aError)
{
- MPX_FUNC( "CVcxMyVideosMdsDb::HandleSessionError" );
+ MPX_DEBUG1("CVcxMyVideosMdsDb::HandleSessionError() start" );
if (iActiveSchedulerWait->IsStarted())
{
@@ -649,17 +743,15 @@
{
MPX_DEBUG1( "CVcxMyVideosMdsDb:: Videolist fetching was going on");
iVideoListFetchingIsOngoing = EFalse;
-// delete iVideoQuery;
-// iVideoQuery = NULL;
iMdsDbObserver->HandleCreateVideoListResp( iVideoList, -1 /* -1 = no new items */,
ETrue /* complete */);
}
MPX_DEBUG2( "CVcxMyVideosMdsDb::HandleSessionError: %d", aError );
- iMDSError = aError;
- delete iMDSSession;
- iMDSSession = NULL;
+ iMdsSessionError = aError;
+
+ MPX_DEBUG1("CVcxMyVideosMdsDb::HandleSessionError() exit" );
}
// ---------------------------------------------------------------------------
@@ -671,7 +763,7 @@
TObserverNotificationType aType,
const RArray<TItemId>& aObjectIdArray)
{
- TRAP( iMDSError, DoHandleObjectNotificationL( aType, aObjectIdArray ));
+ TRAP_IGNORE( DoHandleObjectNotificationL( aType, aObjectIdArray ));
}
// ---------------------------------------------------------------------------
@@ -680,20 +772,17 @@
//
CMdEObject* CVcxMyVideosMdsDb::ObjectL( const TItemId aId )
{
- if ( !iMDSSession )
- {
- MPX_DEBUG2("CVcxMyVideosMdsDb:: no mds session(%d), leaving", iMDSError);
- User::Leave( iMDSError );
- }
+ MPX_DEBUG1("CVcxMyVideosMdsDb::ObjectL start");
// If the id is not valid, just return NULL, because
- // iMDSSession->GetObjectL leaves in that case
+ // MdsSessionL().GetObjectL leaves in that case
if ( aId == KNoId )
{
return NULL;
}
- CMdEObject* object = iMDSSession->GetObjectL( aId, *iVideoObjectDef );
+ CMdEObject* object = NULL;
+ object = MdsSessionL().GetObjectL( aId, *iVideoObjectDef );
if ( object )
{
@@ -704,6 +793,7 @@
MPX_DEBUG2( "CVcxMyVideosMdsDb::ObjectL not found, id: %d", aId );
}
+ MPX_DEBUG1("CVcxMyVideosMdsDb::ObjectL exit");
return object;
}
@@ -878,13 +968,10 @@
if ( aObject.Property( *iOriginPropertyDef, property, 0 ) != KErrNotFound )
{
TUint8 origin = static_cast<CMdEUint8Property*>(property)->Value();
- if ( origin == EVcxMyVideosOriginDownloaded ||
- origin == EVcxMyVideosOriginSideLoaded ||
- origin == EVcxMyVideosOriginTvRecording )
+ if( origin != EVcxMyVideosOriginCapturedWithCamera )
{
origin = EVcxMyVideosOriginOther;
- }
-
+ }
aVideo.SetTObjectValueL<TUint8>( KVcxMediaMyVideosOrigin, origin );
}
@@ -1416,7 +1503,7 @@
MPX_FUNC( "CVcxMyVideosMdsDb::GetSchemaDefinitionsL" );
// Namespace
- iNamespaceDef = &(iMDSSession->GetDefaultNamespaceDefL());
+ iNamespaceDef = &(MdsSessionL().GetDefaultNamespaceDefL());
// Default object definitions
iVideoObjectDef = &(iNamespaceDef->GetObjectDefL( KVcxVideoObjectName ));
@@ -1533,3 +1620,52 @@
aObject.AddInt16PropertyL( *iTimeOffsetPropertyDef, timeOffset.Int() / secondsInMinute );
aObject.AddTimePropertyL( *iLastModifiedDatePropertyDef, localTime );
}
+
+// ---------------------------------------------------------------------------
+// CVcxMyVideosMdsDb::MdsSessionL
+// ---------------------------------------------------------------------------
+//
+CMdESession& CVcxMyVideosMdsDb::MdsSessionL()
+ {
+ if ( iMdsSessionError == KErrServerTerminated )
+ {
+ // This ensures that the iMdsSessionError KErrServerTerminated
+ // value does not change, since the user can't access iMdsSession.
+ // Recovery happens in ShutDownNotification func.
+ User::Leave( KErrServerTerminated );
+ }
+
+ if ( !iMdsSession )
+ {
+ OpenMdsSessionL();
+
+ if ( !iMdsSession )
+ {
+ User::Leave( KErrGeneral );
+ }
+ }
+
+ return *iMdsSession;
+ }
+
+// ---------------------------------------------------------------------------
+// CVcxMyVideosMdsDb::ShutdownNotification
+// From MVcxMdsShutDownMonitorObserver
+// ---------------------------------------------------------------------------
+//
+void CVcxMyVideosMdsDb::ShutdownNotification( TInt aShutdownState )
+ {
+ if ( aShutdownState == 0 )
+ {
+ // Server has restarted, recreate session.
+ MPX_DEBUG1("CVcxMyVideosMdsDb:: MDS Server restarted!");
+ OpenMdsSessionL();
+ return;
+ }
+
+ if ( aShutdownState == 1 )
+ {
+ MPX_DEBUG1("CVcxMyVideosMdsDb:: MDS Server went down!");
+ iMdsSessionError = KErrServerTerminated;
+ }
+ }
--- a/videoplayback/inc/mpxvideobaseplaybackview.h Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayback/inc/mpxvideobaseplaybackview.h Tue May 11 16:15:40 2010 +0300
@@ -16,7 +16,7 @@
*/
-// Version : %version: 21 %
+// Version : %version: 22 %
// This file defines the API for VideoBasePlaybackView.dll
@@ -383,6 +383,8 @@
TBool iPdlReloading;
TBool iRealOneDelayedPlay;
TBool iKeyboardInFocus;
+
+ HBufC* iClipName;
};
#endif // __VIDEOBASEPLAYBACKVIEW_H__
--- a/videoplayback/inc/mpxvideoplaybackcontrolscontroller.h Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayback/inc/mpxvideoplaybackcontrolscontroller.h Tue May 11 16:15:40 2010 +0300
@@ -16,7 +16,7 @@
*/
-// Version : %version: e003sa33#14 %
+// Version : %version: 15 %
#ifndef MPXVIDEOPLAYBACKCONTROLSCONTROLLER_H_
@@ -107,11 +107,6 @@
*/
inline TBool IsTvOutConnected();
- /*
- * Return ETrue if TV-out cable is connected and content can be played
- */
- inline TBool IsTvOutPlaybackAllowed();
-
/**
* Reset or cancel timers for the controls
*/
@@ -313,9 +308,7 @@
/**
* Handle tvout connected/disconnected event
*/
- void HandleTvOutEventL( TBool aConnected,
- TMPXVideoPlaybackControlCommandIds aEvent,
- TInt aValue );
+ void HandleTvOutEventL( TBool aConnected, TMPXVideoPlaybackControlCommandIds aEvent );
/**
* Handle softkey pressed event
*/
@@ -411,14 +404,6 @@
}
inline
-TBool CMPXVideoPlaybackControlsController::IsTvOutPlaybackAllowed()
-{
- TBool playable = ( ! iFileDetails->iTvOutConnected || iFileDetails->iTvOutPlayAllowed );
- MPX_DEBUG(_L("CMPXVideoPlaybackControlsController::IsTvOutPlaybackAllowed() [%d]"), playable);
- return playable;
-}
-
-inline
TBool CMPXVideoPlaybackControlsController::IsRealMediaFormat()
{
MPX_DEBUG(_L("CMPXVideoPlaybackControlsController::IsRealFormat() [%d]"), iRNFormat);
--- a/videoplayback/inc/mpxvideoplaybackviewfiledetails.h Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayback/inc/mpxvideoplaybackviewfiledetails.h Tue May 11 16:15:40 2010 +0300
@@ -16,7 +16,7 @@
*/
-// Version : %version: e003sa33#13 %
+// Version : %version: 14 %
#ifndef __MPXVIDEOPLAYBACKVIEWFILEDETAILS__
@@ -51,13 +51,13 @@
* @return generated file name, ownership is transferred
*/
IMPORT_C HBufC* GenerateFileNameL();
-
+
/**
* Parse file title
* if title exists, then use it as title content directly.
* if title is null, then for streaming/live streaming clip,
* parse its file name as title content.
- *
+ *
* @return generated file title, ownership is transferred
*/
IMPORT_C HBufC* GenerateFileTitleL();
@@ -84,7 +84,6 @@
TBool iVideoEnabled;
TBool iPartialPlayback;
TBool iTvOutConnected;
- TBool iTvOutPlayAllowed;
TBool iDrmProtected;
TInt iVideoHeight;
--- a/videoplayback/videohelix/inc/mpxvideoaccessoryobserver.h Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayback/videohelix/inc/mpxvideoaccessoryobserver.h Tue May 11 16:15:40 2010 +0300
@@ -15,7 +15,7 @@
*
*/
-// Version : %version: 6 %
+// Version : %version: 7 %
@@ -65,14 +65,6 @@
*/
TBool IsTvOutConnected();
- /*
- * Returns if the playback is allowed when the TV-Out cable is connected
- * @return playback is allowed
- * ETrue playback is allowed.
- * EFalse playback is not allowed.
- */
- TBool IsTvOutPlaybackAllowed();
-
private:
/*
@@ -133,7 +125,6 @@
CMPXVideoPlaybackController* iController;
TBool iTvOutConnected;
- TBool iTvOutPlaybackAllowed;
#ifdef __ACCESSORY_FW
RAccessoryServer iServer;
--- a/videoplayback/videohelix/inc/mpxvideodrmhelper.h Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayback/videohelix/inc/mpxvideodrmhelper.h Tue May 11 16:15:40 2010 +0300
@@ -15,7 +15,9 @@
*
*/
-// Version : %version: 5 %
+
+// Version : %version: 6 %
+
#ifndef __MPXVIDEODRMHELPER_H__
#define __MPXVIDEODRMHELPER_H__
@@ -52,13 +54,10 @@
TInt GetDrmRightsStatus( RFile& aFile );
- TBool IsTvOutAllowedL( RFile& aFile );
-
#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
- TBool IsProtected64L( RFile64& aFile );
+ TBool IsProtected64L( RFile64& aFile );
TInt GetDrmRightsStatus64( RFile64& aFile );
- TBool IsTvOutAllowed64L( RFile64& aFile );
#endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
--- a/videoplayback/videohelix/inc/mpxvideoplaybackcontroller.h Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayback/videohelix/inc/mpxvideoplaybackcontroller.h Tue May 11 16:15:40 2010 +0300
@@ -16,7 +16,7 @@
*/
-// Version : %version: 24 %
+// Version : %version: 25 %
#ifndef _CMPXVIDEOPLAYBACKCONTROLLER_H_
@@ -186,7 +186,7 @@
CHWRMLight* GetLightsL();
void ReleaseLights();
- void SendTvOutEventL( TBool aConnected, TBool aPlaybackAllowed );
+ void SendTvOutEventL( TBool aConnected );
protected:
--- a/videoplayback/videohelix/inc/mpxvideoplaybackmode.h Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayback/videohelix/inc/mpxvideoplaybackmode.h Tue May 11 16:15:40 2010 +0300
@@ -15,7 +15,8 @@
*
*/
-// Version : %version: 14 %
+
+// Version : %version: 15 %
#ifndef _CMPXVIDEOPLAYBACKMODE_H_
@@ -68,7 +69,6 @@
virtual void HandleBackground();
virtual TBool IsNetworkMode2GL();
virtual TBool CanPlayNow();
- virtual TBool IsTvOutAllowedL();
virtual void OpenFileL( const TDesC& aMediaFile );
virtual void OpenFileL( const RFile& aMediaFile );
@@ -129,7 +129,6 @@
inline virtual TInt GetMode();
virtual TBool CanPlayNow();
virtual void HandleOpenComplete();
- TBool IsTvOutAllowedL();
void OpenFileL( const TDesC& aMediaFile );
virtual void HandlePause();
};
--- a/videoplayback/videohelix/inc/mpxvideoplaybackstate.h Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayback/videohelix/inc/mpxvideoplaybackstate.h Tue May 11 16:15:40 2010 +0300
@@ -15,7 +15,8 @@
*
*/
-// Version : %version: 17 %
+
+// Version : %version: 18 %
#ifndef _CMPXVIDEOPLAYBACKSTATE_H_
@@ -48,7 +49,6 @@
*/
NONSHARABLE_CLASS( CMPXVideoPlaybackState ) : public CBase
{
-
public:
//
// Constructors and destructor
@@ -104,6 +104,8 @@
virtual void ResolveTimeoutError( TInt aError );
+ virtual void UpdateSeekableL( CMPXCommand& aCmd );
+
//
// Set aspect ratio to mmf controller
//
@@ -165,9 +167,9 @@
virtual void HandleBackground();
virtual void HandleForeground();
virtual void HandlePlay();
+ virtual void UpdateSeekableL( CMPXCommand& aCmd );
inline virtual TMPXVideoPlaybackState GetState();
-
};
--- a/videoplayback/videohelix/src/mpxvideoaccessoryobserver.cpp Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayback/videohelix/src/mpxvideoaccessoryobserver.cpp Tue May 11 16:15:40 2010 +0300
@@ -15,7 +15,7 @@
*
*/
-// Version : %version: 8 %
+// Version : %version: 9 %
//
// INCLUDE FILES
@@ -84,7 +84,6 @@
: CActive( CActive::EPriorityStandard )
, iController( aController )
, iTvOutConnected( EFalse )
- , iTvOutPlaybackAllowed( ETrue )
{
CActiveScheduler::Add( this );
}
@@ -180,19 +179,6 @@
if ( iTvOutConnected != tvOutConnected )
{
iTvOutConnected = tvOutConnected;
-
- if ( iTvOutConnected )
- {
- //
- // Check the playablility of the clip
- //
- iTvOutPlaybackAllowed = iController->iPlaybackMode->IsTvOutAllowedL();
- }
- else
- {
- iTvOutPlaybackAllowed = ETrue;
- }
-
statusChanged = ETrue;
}
@@ -275,16 +261,4 @@
return iTvOutConnected;
}
-// -------------------------------------------------------------------------------------------------
-// CMPXVideoAccessoryObserver::IsTvOutPlaybackAllowed
-// -------------------------------------------------------------------------------------------------
-//
-TBool CMPXVideoAccessoryObserver::IsTvOutPlaybackAllowed()
-{
- TBool playAllowed = ( ! iTvOutConnected || iTvOutPlaybackAllowed );
- MPX_DEBUG(_L("CMPXVideoAccessoryObserver::IsTvOutPlaybackAllowed(%d)"), playAllowed);
-
- return playAllowed;
-}
-
// End of File
--- a/videoplayback/videohelix/src/mpxvideodrmhelper.cpp Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayback/videohelix/src/mpxvideodrmhelper.cpp Tue May 11 16:15:40 2010 +0300
@@ -15,7 +15,8 @@
*
*/
-// Version : %version: 8 %
+
+// Version : %version: 9 %
#include <caf/data.h>
@@ -110,41 +111,6 @@
return drmError;
}
-TBool CMpxVideoDrmHelper::IsTvOutAllowedL( RFile& aFile )
-{
- TBool tvOutAllowed = ETrue;
-
- if ( IsProtectedL( aFile ) )
- {
- ContentAccess::CContent* content = ContentAccess::CContent::NewLC( aFile );
-
- ContentAccess::CData* data = content->OpenContentL( ContentAccess::EPeek );
-
- TInt fileType;
-
- TInt error = data->GetAttribute( ContentAccess::EFileType, fileType );
-
- if ( error == KErrNone )
- {
- //
- // TV-out is not allowed for DRM content other than OMA1 DRM
- //
- if ( fileType != ContentAccess::EOma1Dcf )
- {
- tvOutAllowed = EFalse;
- }
- }
-
- delete data;
-
- CleanupStack::PopAndDestroy( content );
- }
-
- MPX_DEBUG(_L("CMpxVideoDrmHelper::IsTvOutAllowedL(%d)"), tvOutAllowed);
-
- return tvOutAllowed;
-}
-
#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
// ------------------------------------------------------------------------------------------------
@@ -203,45 +169,6 @@
return drmError;
}
-// ------------------------------------------------------------------------------------------------
-// CMpxVideoDrmHelper::IsTvOutAllowed64L()
-// ------------------------------------------------------------------------------------------------
-//
-TBool CMpxVideoDrmHelper::IsTvOutAllowed64L( RFile64& aFile )
-{
- TBool tvOutAllowed = ETrue;
-
- if ( IsProtected64L( aFile ) )
- {
- ContentAccess::CContent* content = ContentAccess::CContent::NewLC( aFile );
-
- ContentAccess::CData* data = content->OpenContentL( ContentAccess::EPeek );
-
- TInt fileType;
-
- TInt error = data->GetAttribute( ContentAccess::EFileType, fileType );
-
- if ( error == KErrNone )
- {
- //
- // TV-out is not allowed for DRM content other than OMA1 DRM
- //
- if ( fileType != ContentAccess::EOma1Dcf )
- {
- tvOutAllowed = EFalse;
- }
- }
-
- delete data;
-
- CleanupStack::PopAndDestroy( content );
- }
-
- MPX_DEBUG(_L("CMpxVideoDrmHelper::IsTvOutAllowed64L(%d)"), tvOutAllowed);
-
- return tvOutAllowed;
-}
-
#endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
// EOF
--- a/videoplayback/videohelix/src/mpxvideoplaybackcontroller.cpp Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayback/videohelix/src/mpxvideoplaybackcontroller.cpp Tue May 11 16:15:40 2010 +0300
@@ -16,7 +16,7 @@
*/
-// Version : %version: 56 %
+// Version : %version: 58 %
//
@@ -155,7 +155,6 @@
iAccessPointId = KUseDefaultIap;
iVideoSeeker = CMPXVideoSeeker::NewL( this );
- // Initiliaze to True
iSeekable = ETrue;
InitVolumeWatchersL();
@@ -197,6 +196,12 @@
ChangeState( EMPXVideoInitializing );
+ if ( iClipName )
+ {
+ delete iClipName;
+ iClipName = NULL;
+ }
+
iClipName = aMediaFile.AllocL();
iAccessPointId = aAccessPointId;
@@ -228,35 +233,28 @@
iAccessoryMonitor = CMPXVideoAccessoryObserver::NewL( this );
}
- if ( iAccessoryMonitor->IsTvOutPlaybackAllowed() )
+ if ( fileExists )
{
- if ( fileExists )
+ //
+ // Ensure there are rights for protected clips
+ //
+ TInt drmError = iDrmHelper->GetDrmRightsStatus( iFileHandle );
+
+ if ( drmError )
{
//
- // Ensure there are rights for protected clips
+ // Send error to observer for handling
//
- TInt drmError = iDrmHelper->GetDrmRightsStatus( iFileHandle );
-
- if ( drmError )
- {
- //
- // Send error to observer for handling
- //
- HandleError( drmError );
- }
- else
- {
- iState->OpenFileL( iFileHandle );
- }
+ HandleError( drmError );
}
else
{
- iState->OpenFileL( iClipName->Des() );
+ iState->OpenFileL( iFileHandle );
}
}
else
{
- HandleError( KMPXVideoTvOutPlaybackNotAllowedClose );
+ iState->OpenFileL( iClipName->Des() );
}
}
@@ -418,7 +416,7 @@
{
case EPbCmdInitView:
{
- if ( iState != iNotIntialisedState)
+ if ( iState != iNotIntialisedState )
{
aCmd.SetTextValueL( KMPXMediaVideoPlaybackFileName, *iClipName );
aCmd.SetTObjectValueL<TInt>( KMPXMediaVideoMode, iPlaybackMode->GetMode() );
@@ -426,12 +424,10 @@
aCmd.SetTObjectValueL<TInt>( KMPXMediaVideoTvOutConnected,
iAccessoryMonitor->IsTvOutConnected() );
- aCmd.SetTObjectValueL<TInt>( KMPXMediaVideoTvOutPlayAllowed,
- iAccessoryMonitor->IsTvOutPlaybackAllowed() );
-
if ( iRecognizedMimeType )
{
- aCmd.SetTextValueL( KMPXMediaVideoRecognizedMimeType, *iRecognizedMimeType );
+ aCmd.SetTextValueL( KMPXMediaVideoRecognizedMimeType,
+ *iRecognizedMimeType );
}
}
@@ -475,7 +471,9 @@
}
case EPbCmdHandleBackground:
{
- iAppInForeground = static_cast<TBool>(aCmd.ValueTObjectL<TBool>(KMPXMediaVideoAppForeground));
+ iAppInForeground =
+ static_cast<TBool>(aCmd.ValueTObjectL<TBool>(KMPXMediaVideoAppForeground));
+
iState->HandleBackground();
break;
}
@@ -496,13 +494,7 @@
}
case EPbCmdUpdateSeekable:
{
- iSeekable = aCmd.ValueTObjectL<TBool>(KMPXMediaGeneralExtVideoSeekable);
-
- if ( iFileDetails )
- {
- iFileDetails->iSeekable &= iSeekable;
- }
-
+ iState->UpdateSeekableL( aCmd );
break;
}
case EPbCmdEndofClipReached:
@@ -1773,7 +1765,7 @@
// CMPXVideoPlaybackController::SendTvOutEventL
// -------------------------------------------------------------------------------------------------
//
-void CMPXVideoPlaybackController::SendTvOutEventL( TBool aConnected, TBool aPlaybackAllowed )
+void CMPXVideoPlaybackController::SendTvOutEventL( TBool aConnected )
{
MPX_ENTER_EXIT(_L("CMPXVideoPlaybackController::SendTvOutEventL()"));
@@ -1788,7 +1780,6 @@
message->SetTObjectValueL<TMPXVideoPlaybackCommand>
( KMPXMediaVideoPlaybackCommand, EPbCmdTvOutEvent );
message->SetTObjectValueL<TInt>( KMPXMediaVideoTvOutConnected, aConnected );
- message->SetTObjectValueL<TInt>( KMPXMediaVideoTvOutPlayAllowed, aPlaybackAllowed );
iMPXPluginObs->HandlePlaybackMessage( message, KErrNone );
@@ -1829,9 +1820,7 @@
MPX_ENTER_EXIT( _L("CMPXVideoPlaybackController::HandleTvOutEventL()"),
_L("aConnected = %d"), aConnected );
- TBool playbackAllowed = iAccessoryMonitor->IsTvOutPlaybackAllowed();
-
- SendTvOutEventL( aConnected, playbackAllowed );
+ SendTvOutEventL( aConnected );
//
// Check playback status of clip with new Tv-Out status
@@ -1841,25 +1830,12 @@
//
// TV-Out accessory connected
//
- if ( ! playbackAllowed )
+ // If lights are being controlled enable display timer so that screen backlight will be turned
+ // of after timeout.
+ if ( iBackLightTimer->IsActive() )
{
- //
- // Clip has DRM protection and TV-Out is connected
- // Pause playback and display info note
- //
- DoHandleCommandL( EPbCmdPause );
-
- iState->SendErrorToViewL( KMPXVideoTvOutPlaybackNotAllowed );
+ RestartDisplayTimer();
}
- else
- {
- // If lights are being controlled enable display timer so that screen backlight will be turned
- // of after timeout.
- if ( iBackLightTimer->IsActive() )
- {
- RestartDisplayTimer();
- }
- }
}
else
{
@@ -1922,6 +1898,7 @@
MPX_ENTER_EXIT(_L("CMPXVideoPlaybackController::DoHandleBackLightTimeout()"));
TBool tvOutConnected( EFalse );
+
if ( iAccessoryMonitor )
{
tvOutConnected = iAccessoryMonitor->IsTvOutConnected();
@@ -1931,7 +1908,8 @@
// it keeps resetting display timer and keeps lights on whenever there is user activity
if ( tvOutConnected )
{
- MPX_DEBUG ( _L("CMPXVideoPlaybackController::DoHandleBackLightTimeout() inactivity time = %d"), User::InactivityTime().Int() );
+ MPX_DEBUG(_L("CMPXVideoPlaybackController::DoHandleBackLightTimeout() inactivity time = %d"), User::InactivityTime().Int() );
+
// Cancel activity timer. Otherwise resetting inactivity time would fire user activity detection
CancelUserActivityTimer();
}
@@ -2357,7 +2335,7 @@
ChangeState( EMPXVideoNotInitialized );
//
- // Move the FW state to Initialized so that it can request for Media
+ // Move the FW state to Initialized so that it can request for Media
//
iMPXPluginObs->HandlePluginEvent( MMPXPlaybackPluginObserver::EPInitialised, 0, KErrNone );
@@ -2390,12 +2368,6 @@
iFileDetails = NULL;
}
- if ( iClipName )
- {
- delete iClipName;
- iClipName = NULL;
- }
-
if ( iRecognizedMimeType )
{
delete iRecognizedMimeType;
@@ -2414,7 +2386,6 @@
}
#endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
- // reset to True
iSeekable = ETrue;
//
@@ -2497,6 +2468,12 @@
ChangeState( EMPXVideoInitializing );
+ if ( iClipName )
+ {
+ delete iClipName;
+ iClipName = NULL;
+ }
+
iClipName = aMediaFile.AllocL();
iAccessPointId = aAccessPointId;
@@ -2528,35 +2505,28 @@
iAccessoryMonitor = CMPXVideoAccessoryObserver::NewL( this );
}
- if ( iAccessoryMonitor->IsTvOutPlaybackAllowed() )
+ if ( fileExists )
{
- if ( fileExists )
+ //
+ // Ensure there are rights for protected clips
+ //
+ TInt drmError = iDrmHelper->GetDrmRightsStatus64( iFileHandle64 );
+
+ if ( drmError )
{
//
- // Ensure there are rights for protected clips
+ // Send error to observer for handling
//
- TInt drmError = iDrmHelper->GetDrmRightsStatus64( iFileHandle64 );
-
- if ( drmError )
- {
- //
- // Send error to observer for handling
- //
- HandleError( drmError );
- }
- else
- {
- iState->OpenFile64L( iFileHandle64 );
- }
+ HandleError( drmError );
}
else
{
- iState->OpenFileL( iClipName->Des() );
+ iState->OpenFile64L( iFileHandle64 );
}
}
else
{
- HandleError( KMPXVideoTvOutPlaybackNotAllowedClose );
+ iState->OpenFileL( iClipName->Des() );
}
}
--- a/videoplayback/videohelix/src/mpxvideoplaybackmode.cpp Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayback/videohelix/src/mpxvideoplaybackmode.cpp Tue May 11 16:15:40 2010 +0300
@@ -15,8 +15,8 @@
*
*/
-// Version : %version: 23 %
+// Version : %version: 25 %
//
@@ -177,29 +177,31 @@
{
MPX_DEBUG(_L("CMPXVideoPlaybackMode::HandleBackground()"));
+ //
+ // Pause in all cases to remove the different behavior based on the decoder
+ //
+ iVideoPlaybackCtlr->iState->HandlePause();
+
if ( iVideoPlaybackCtlr->iAppInForeground )
{
if ( iVideoPlaybackCtlr->IsAlarm() )
{
iVideoPlaybackCtlr->iForegroundPause = ETrue;
- iVideoPlaybackCtlr->iState->HandlePause();
}
- else if ( iVideoPlaybackCtlr->IsKeyLocked() && iVideoPlaybackCtlr->iFileDetails->iVideoEnabled )
+ else if ( iVideoPlaybackCtlr->IsKeyLocked() &&
+ iVideoPlaybackCtlr->iFileDetails->iVideoEnabled )
{
iVideoPlaybackCtlr->iForegroundPause = ETrue;
- iVideoPlaybackCtlr->iState->HandlePause();
iVideoPlaybackCtlr->SendHideControlsEventL();
}
else if ( iVideoPlaybackCtlr->IsPhoneCall() || iVideoPlaybackCtlr->IsVideoCall() )
{
iVideoPlaybackCtlr->iForegroundPause = EFalse;
- iVideoPlaybackCtlr->iState->HandlePause();
}
}
else
{
iVideoPlaybackCtlr->iForegroundPause = EFalse;
- iVideoPlaybackCtlr->iState->HandlePause();
}
}
@@ -224,11 +226,6 @@
{
iVideoPlaybackCtlr->iForegroundPause = ETrue;
}
- else if ( ! iVideoPlaybackCtlr->iAccessoryMonitor->IsTvOutPlaybackAllowed() )
- {
- MPX_TRAPD( err,
- iVideoPlaybackCtlr->iState->SendErrorToViewL( KMPXVideoTvOutPlaybackNotAllowed ) );
- }
else
{
playAllowed = ETrue;
@@ -279,22 +276,6 @@
return networkMode2g;
}
-
-// ------------------------------------------------------------------------------------------------
-// CMPXVideoPlaybackMode::IsTvOutAllowedL()
-// ------------------------------------------------------------------------------------------------
-TBool CMPXVideoPlaybackMode::IsTvOutAllowedL()
-{
- MPX_DEBUG(_L("CMPXVideoPlaybackMode::IsTvOutAllowedL()"));
-
- TBool allowTvOut =
- iVideoPlaybackCtlr->iDrmHelper->IsTvOutAllowedL( iVideoPlaybackCtlr->iFileHandle );
-
- MPX_DEBUG(_L("CMPXVideoPlaybackMode::IsTvOutAllowedL(%d)"), allowTvOut);
-
- return allowTvOut;
-}
-
//************************************************************************************************//
// CMPXLocalPlaybackMode
//************************************************************************************************//
@@ -412,7 +393,7 @@
else
{
MPX_TRAPD( err,
- playAllowed = !( iVideoPlaybackCtlr->IsVoiceCall() && IsNetworkMode2GL() ) );
+ playAllowed = !( iVideoPlaybackCtlr->IsVoiceCall() && IsNetworkMode2GL() ) );
if ( !playAllowed )
{
@@ -427,15 +408,6 @@
}
// ------------------------------------------------------------------------------------------------
-// CMPXStreamingPlaybackMode::IsTvOutAllowedL()
-// ------------------------------------------------------------------------------------------------
-TBool CMPXStreamingPlaybackMode::IsTvOutAllowedL()
-{
- MPX_ENTER_EXIT(_L("CMPXStreamingPlaybackMode::IsTvOutAllowedL(1)"));
- return ETrue;
-}
-
-// ------------------------------------------------------------------------------------------------
// CMPXStreamingPlaybackMode::HandlePause()
// ------------------------------------------------------------------------------------------------
void CMPXStreamingPlaybackMode::HandlePause()
@@ -517,19 +489,10 @@
{
MPX_DEBUG(_L("CMPXLiveStreamingPlaybackMode::HandleBackground()"));
- if ( iVideoPlaybackCtlr->iAppInForeground )
- {
- if ( iVideoPlaybackCtlr->IsPhoneCall() ||
- iVideoPlaybackCtlr->IsVideoCall() ||
- ( iVideoPlaybackCtlr->IsKeyLocked() && iVideoPlaybackCtlr->iFileDetails->iVideoEnabled ))
- {
- iVideoPlaybackCtlr->iState->HandlePause();
- }
- }
- else
- {
- iVideoPlaybackCtlr->iState->HandlePause();
- }
+ //
+ // Pause in all cases to remove the different behavior based on the decoder
+ //
+ iVideoPlaybackCtlr->iState->HandlePause();
}
//************************************************************************************************//
--- a/videoplayback/videohelix/src/mpxvideoplaybackstate.cpp Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayback/videohelix/src/mpxvideoplaybackstate.cpp Tue May 11 16:15:40 2010 +0300
@@ -16,7 +16,7 @@
*/
-// Version : %version: 39 %
+// Version : %version: 41 %
//
@@ -24,6 +24,7 @@
//
#include <mpxcommandgeneraldefs.h>
#include <mpxmessagegeneraldefs.h>
+#include <mpxmediageneralextdefs.h>
#include "mpxvideoplaybackcontroller.h"
#include "mpxvideoplaybackstate.h"
@@ -54,7 +55,6 @@
MPX_ENTER_EXIT(_L("CMPXVideoPlaybackState::ConstructL()"));
iVideoPlaybackCtlr = aVideoPlaybackCtlr;
- iVideoPlaybackCtlr->iPBPluginError = KErrNone;
User::LeaveIfError( iFs.Connect() );
iFs.ShareProtected();
@@ -296,8 +296,15 @@
TUint attrG(0); // General attributes
TUint attrV(0); // Video attributes
- if (iVideoPlaybackCtlr->iPBPluginError != KErrNone)
+ if ( iVideoPlaybackCtlr->iPBPluginError != KErrNone )
{
+ if ( iVideoPlaybackCtlr->iClipName )
+ {
+ aMedia->SetTextValueL(
+ TMPXAttribute( KMPXMediaIdGeneral, EMPXMediaGeneralUri ),
+ *( iVideoPlaybackCtlr->iClipName ) );
+ }
+
aMedia->SetTObjectValueL<TInt>(
TMPXAttribute( KMPXMediaVideoError ), iVideoPlaybackCtlr->iPBPluginError );
@@ -485,16 +492,6 @@
}
//
- // TV-Out Playback Allowed
- //
- if ( attrV & KMPXMediaVideoTvOutPlayAllowed.iAttributeId )
- {
- aMedia->SetTObjectValueL<TInt>(
- TMPXAttribute( KMPXMediaVideoTvOutPlayAllowed ),
- iVideoPlaybackCtlr->iAccessoryMonitor->IsTvOutPlaybackAllowed() );
- }
-
- //
// BitRate
//
if ( attrV & KMPXMediaVideoBitRate.iAttributeId )
@@ -578,9 +575,9 @@
TMPXAttribute( KMPXMediaVideoKeywords ),
*( iVideoPlaybackCtlr->iFileDetails->iKeywords ) );
}
-
+
//
- // Creation date/time
+ // Creation date/time
//
if ( attrV & KMPXMediaVideoCreated.iAttributeId )
{
@@ -590,7 +587,7 @@
}
//
- // Last Modified date/time
+ // Last Modified date/time
//
if ( attrV & KMPXMediaVideoLastModified.iAttributeId )
{
@@ -752,7 +749,7 @@
MMPXPlaybackPluginObserver::TEvent aEvent,
TBool aSendEvent )
{
- MPX_ENTER_EXIT(_L("CMPXVideoPlaybackState::CMPXVideoPlaybackState::IssuePlayCommand()"),
+ MPX_ENTER_EXIT(_L("CMPXVideoPlaybackState::IssuePlayCommand()"),
_L("aState = %d, aEvent = %d, aSendEvent = %d"), aState, aEvent, aSendEvent );
MPX_TRAPD( err, iVideoPlaybackCtlr->iPlayer->PlayL() );
@@ -772,6 +769,21 @@
}
}
+// ------------------------------------------------------------------------------------------------
+// CMPXVideoPlaybackState::UpdateSeekableL()
+// ------------------------------------------------------------------------------------------------
+void CMPXVideoPlaybackState::UpdateSeekableL( CMPXCommand& aCmd )
+{
+ MPX_ENTER_EXIT(_L("CMPXVideoPlaybackState::UpdateSeekableL()"));
+
+ iVideoPlaybackCtlr->iSeekable = aCmd.ValueTObjectL<TBool>(KMPXMediaGeneralExtVideoSeekable);
+
+ if ( iVideoPlaybackCtlr->iFileDetails )
+ {
+ iVideoPlaybackCtlr->iFileDetails->iSeekable &= iVideoPlaybackCtlr->iSeekable;
+ }
+}
+
// *************************************************************************************************
//
// STATE SUB-CLASSES
@@ -829,6 +841,16 @@
if ( iVideoPlaybackCtlr->iPBPluginError != KErrNone )
{
+ if ( iVideoPlaybackCtlr->iClipName )
+ {
+ //
+ // Send the clip name and error code for further processing
+ //
+ aMedia->SetTextValueL(
+ TMPXAttribute( KMPXMediaIdGeneral, EMPXMediaGeneralUri ),
+ *( iVideoPlaybackCtlr->iClipName ) );
+ }
+
aMedia->SetTObjectValueL<TInt>(
TMPXAttribute( KMPXMediaVideoError ), iVideoPlaybackCtlr->iPBPluginError );
@@ -902,6 +924,21 @@
MPX_TRAPD( err, SendErrorToViewL( iVideoPlaybackCtlr->iPBPluginError ) );
}
+// ------------------------------------------------------------------------------------------------
+// CMPXNotInitialisedState::UpdateSeekableL()
+// ------------------------------------------------------------------------------------------------
+void CMPXNotInitialisedState::UpdateSeekableL( CMPXCommand& /*aCmd*/ )
+{
+ MPX_DEBUG(_L("CMPXNotInitialisedState::UpdateSeekableL()"));
+
+ //
+ // Do not update the seekable state since the plugin is in the not initialized state
+ // An error probably occurred, plugin went to not initialized. If update was applied,
+ // it would not be cleared for the next clip since we are already in not initialized
+ // state.
+ //
+}
+
// *************************************************************************************************
//
// CMPXInitialisingState
@@ -1024,25 +1061,7 @@
}
else
{
- //
- // Transistion back to EMPXVideoNotInitialized, for pre loaded plugin
- // this state will alert the view that pre loading failed
- //
- iVideoPlaybackCtlr->ChangeState( EMPXVideoNotInitialized );
-
- // Store the error, in case of pre loaded pluging this can
- // later be sent to the view
- iVideoPlaybackCtlr->iPBPluginError = aError;
-
- //
- // move the FW state to Initialized irrespective of the playback state
- // This enables the FW to send initailized event to view, which in turn
- // queries for the error
- //
- iVideoPlaybackCtlr->iMPXPluginObs->HandlePluginEvent(
- MMPXPlaybackPluginObserver::EPInitialised,
- 0,
- KErrNone );
+ iVideoPlaybackCtlr->HandleError( aError );
}
}
@@ -1090,23 +1109,7 @@
}
else
{
- //
- // Transistion back to EMPXVideoNotInitialized, for pre loaded plugin
- // this state will alert the view that pre loading failed
- //
- iVideoPlaybackCtlr->ChangeState( EMPXVideoNotInitialized );
-
- // Store the error, in case of pre loaded pluging this can
- // later be sent to the view
- iVideoPlaybackCtlr->iPBPluginError = aError;
-
- //
- // move the FW state to Initialized irrespective of the playback state
- // This enables the FW to send initailized event to view, which in turn
- // queries for the error
- //
- iVideoPlaybackCtlr->iMPXPluginObs->
- HandlePluginEvent( MMPXPlaybackPluginObserver::EPInitialised, 0, KErrNone );
+ iVideoPlaybackCtlr->HandleError( aError );
}
}
@@ -1745,22 +1748,22 @@
MPX_DEBUG(_L("CMPXBufferingState::HandleLoadingStarted()"));
TInt loadingPercentage = RetrieveBufferingPercentage();
-
+
if ( loadingPercentage < 100 )
{
MPX_TRAPD( err,
{
CMPXMessage* message = CMPXMessage::NewL();
CleanupStack::PushL( message );
-
- message->SetTObjectValueL<TMPXMessageId>( KMPXMessageGeneralId,
+
+ message->SetTObjectValueL<TMPXMessageId>( KMPXMessageGeneralId,
KMPXMediaIdVideoPlayback );
-
- message->SetTObjectValueL<TMPXVideoPlaybackCommand>( KMPXMediaVideoPlaybackCommand,
+
+ message->SetTObjectValueL<TMPXVideoPlaybackCommand>( KMPXMediaVideoPlaybackCommand,
EPbCmdLoadingStarted );
-
+
iVideoPlaybackCtlr->iMPXPluginObs->HandlePlaybackMessage( message, KErrNone );
-
+
CleanupStack::PopAndDestroy( message );
} );
}
--- a/videoplayback/videohelix/tsrc/ut_videohelixtest/conf/videohelixtest.cfg Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayback/videohelix/tsrc/ut_videohelixtest/conf/videohelixtest.cfg Tue May 11 16:15:40 2010 +0300
@@ -1,5 +1,4 @@
[Define]
-KMPXVideoTvOutPlaybackNotAllowedClose 4
KErrNone 0
KErrNotFound -1
KErrGeneral -2
@@ -41,7 +40,6 @@
EPbDlStateNotDownloading 0
EPbDlStateDownloading 2
-ETvOutPlaybackNotAllowed 0
ETvOutPlaybackAllowed 1
ENoEvent 0
@@ -646,10 +644,10 @@
[Endtest]
[Test]
-title 42. Tv-Out before Initialization - Unsupported DRM Playback Not Allowed
+title 42. Tv-Out before Initialization - DRM Playback Allowed
create videohelixtest test
-test SetTvOutConnected ETvOutPlaybackNotAllowed
-test Initialize 0 10 dcf.odf KErrNone KErrNone KMPXVideoTvOutPlaybackNotAllowedClose
+test SetTvOutConnected ETvOutPlaybackAllowed
+test Initialize 0 10 dcf.odf KErrNone KErrNone KErrNone
waittestclass test
pause 100
test GetMedia
@@ -659,13 +657,11 @@
[Endtest]
[Test]
-title 43. Tv-Out after Initialization - Unsupported DRM Playback Not Allowed
+title 43. Tv-Out after Initialization - DRM Playback Allowed
create videohelixtest test
test Initialize 0 10 dcf.odf KErrNone KErrNone KErrNone
waittestclass test
-test IssueGeneralCommand EPbCmdPlay KErrNone ECallbackBuffering
-waittestclass test
-test ConnectTvOut ETvOutPlaybackNotAllowed
+test ConnectTvOut ETvOutPlaybackAllowed
waittestclass test
test DisconnectTvOut
waittestclass test
--- a/videoplayback/videohelix/tsrc/ut_videohelixtest/src/mpxvideodrmhelper_stub.cpp Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayback/videohelix/tsrc/ut_videohelixtest/src/mpxvideodrmhelper_stub.cpp Tue May 11 16:15:40 2010 +0300
@@ -15,7 +15,7 @@
*
*/
-// Version : %version: 6 %
+// Version : %version: 7 %
#include "mpxvideodrmhelper.h"
@@ -108,13 +108,6 @@
return drmError;
}
-TBool CMpxVideoDrmHelper::IsTvOutAllowedL( RFile& aFile )
-{
- TBool tvOutAllowed = ETrue;
-
- return tvOutAllowed;
-}
-
#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
// ------------------------------------------------------------------------------------------------
@@ -180,17 +173,6 @@
return drmError;
}
-// ------------------------------------------------------------------------------------------------
-// CMpxVideoDrmHelper::IsTvOutAllowed64L()
-// ------------------------------------------------------------------------------------------------
-//
-TBool CMpxVideoDrmHelper::IsTvOutAllowed64L( RFile64& aFile )
-{
- TBool tvOutAllowed = ETrue;
-
- return tvOutAllowed;
-}
-
#endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
// EOF
--- a/videoplayback/videohelix/tsrc/ut_videohelixtest/src/videohelixtestbody.cpp Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayback/videohelix/tsrc/ut_videohelixtest/src/videohelixtestbody.cpp Tue May 11 16:15:40 2010 +0300
@@ -15,7 +15,7 @@
*
*/
-// Version : %version: 19 %
+// Version : %version: 21 %
// [INCLUDE FILES] - do not remove
@@ -1418,7 +1418,7 @@
callback->iEvent = EPbCmdTvOutEvent;
callback->iData = *aMsg->Value<TInt>( KMPXMediaVideoTvOutConnected );
- callback->iError = *aMsg->Value<TInt>( KMPXMediaVideoTvOutPlayAllowed );
+ callback->iError = KErrNone;
ProcessEvent( callback );
@@ -1964,19 +1964,6 @@
{
iAccObserver->SetTvOutPlaybackAllowed( playable );
- if ( ! playable )
- {
- TCallbackEvent* event = new TCallbackEvent;
-
- event->iEvent = EPPaused;
- event->iData = 0;
- event->iError = 0;
-
- AddExpectedEvent( event );
-
- iExpectedError = KMPXVideoTvOutPlaybackNotAllowed;
- }
-
//
// Add event for callback
//
@@ -1984,7 +1971,7 @@
event->iEvent = EPbCmdTvOutEvent;
event->iData = ETrue;
- event->iError = playable;
+ event->iError = KErrNone;
AddExpectedEvent( event );
}
@@ -2007,10 +1994,10 @@
event->iEvent = EPbCmdTvOutEvent;
event->iData = EFalse;
- event->iError = ETrue;
+ event->iError = KErrNone;
AddExpectedEvent( event );
-
+
iAccObserver->UpdateTvOutStatusL( EFalse );
return KErrNone;
@@ -2373,7 +2360,6 @@
RFs fs;
TInt error = fs.Connect();
- TInt fileError = KErrNone;
//
// Open a file handle to the clip
@@ -2381,7 +2367,7 @@
if ( fileHandle32 )
{
RFile file;
- fileError = file.Open( fs, fullPath, EFileRead );
+ file.Open( fs, fullPath, EFileRead );
iPlaybackPlugin->InitialiseWithPositionL( file, position );
file.Close();
}
@@ -2389,7 +2375,7 @@
else
{
RFile64 file64;
- fileError = file64.Open( fs, fullPath, EFileRead );
+ file64.Open( fs, fullPath, EFileRead );
iPlaybackPlugin->Initialise64L( file64, position );
file64.Close();
}
--- a/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackbuttonbar.cpp Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackbuttonbar.cpp Tue May 11 16:15:40 2010 +0300
@@ -15,8 +15,8 @@
*
*/
-// Version : %version: 18 %
+// Version : %version: 19 %
// INCLUDE FILES
@@ -328,43 +328,40 @@
{
MPX_DEBUG(_L("CMPXVideoPlaybackButtonBar::HandleButtonDownEventL()"));
- if ( iController->IsTvOutPlaybackAllowed() )
+ if ( iSeekingTimer->IsActive() )
{
- if ( iSeekingTimer->IsActive() )
- {
- iSeekingTimer->Cancel();
- }
+ iSeekingTimer->Cancel();
+ }
- if ( iMiddleButtonRect.Contains( aPointerEvent.iPosition ) )
- {
- iButtonPressed = EMPXMiddleButtonPressed;
- }
- else if ( iTopButtonRect.Contains( aPointerEvent.iPosition ) &&
- iButtons[EMPXButtonFastForward]->IsVisible() &&
- ! iButtons[EMPXButtonFastForward]->IsDimmed() )
- {
- iButtons[EMPXButtonFastForward]->SetPressed( ETrue );
+ if ( iMiddleButtonRect.Contains( aPointerEvent.iPosition ) )
+ {
+ iButtonPressed = EMPXMiddleButtonPressed;
+ }
+ else if ( iTopButtonRect.Contains( aPointerEvent.iPosition ) &&
+ iButtons[EMPXButtonFastForward]->IsVisible() &&
+ ! iButtons[EMPXButtonFastForward]->IsDimmed() )
+ {
+ iButtons[EMPXButtonFastForward]->SetPressed( ETrue );
- iSeekingTimer->Start(
- KMPXLongPressInterval,
- KMPXTactileInterval,
- TCallBack( CMPXVideoPlaybackButtonBar::StartSeekingL, this ) );
+ iSeekingTimer->Start(
+ KMPXLongPressInterval,
+ KMPXTactileInterval,
+ TCallBack( CMPXVideoPlaybackButtonBar::StartSeekingL, this ) );
- iButtonPressed = EMPXTopButtonPressed;
- }
- else if( iBottomButtonRect.Contains( aPointerEvent.iPosition ) &&
- iButtons[EMPXButtonRewind]->IsVisible() &&
- ! iButtons[EMPXButtonRewind]->IsDimmed() )
- {
- iButtons[EMPXButtonRewind]->SetPressed( ETrue );
+ iButtonPressed = EMPXTopButtonPressed;
+ }
+ else if( iBottomButtonRect.Contains( aPointerEvent.iPosition ) &&
+ iButtons[EMPXButtonRewind]->IsVisible() &&
+ ! iButtons[EMPXButtonRewind]->IsDimmed() )
+ {
+ iButtons[EMPXButtonRewind]->SetPressed( ETrue );
- iSeekingTimer->Start(
- KMPXLongPressInterval,
- KMPXTactileInterval,
- TCallBack( CMPXVideoPlaybackButtonBar::StartSeekingL, this ) );
+ iSeekingTimer->Start(
+ KMPXLongPressInterval,
+ KMPXTactileInterval,
+ TCallBack( CMPXVideoPlaybackButtonBar::StartSeekingL, this ) );
- iButtonPressed = EMPXBottomButtonPressed;
- }
+ iButtonPressed = EMPXBottomButtonPressed;
}
}
--- a/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackcontrolscontroller.cpp Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackcontrolscontroller.cpp Tue May 11 16:15:40 2010 +0300
@@ -16,7 +16,7 @@
*/
-// Version : %version: e003sa33#36 %
+// Version : %version: 37 %
// INCLUDE FILES
@@ -314,14 +314,14 @@
{
MPX_DEBUG(_L(" [EMPXControlCmdTvOutConnected]"));
iTvOutConnected = ETrue;
- HandleTvOutEventL( ETrue, aEvent, aValue );
+ HandleTvOutEventL( ETrue, aEvent );
break;
}
case EMPXControlCmdTvOutDisconnected:
{
MPX_DEBUG(_L(" [EMPXControlCmdTvOutDisConnected]"));
iTvOutConnected = EFalse;
- HandleTvOutEventL( EFalse, aEvent, aValue );
+ HandleTvOutEventL( EFalse, aEvent );
break;
}
case EMPXControlCmdHandleBackgroundEvent:
@@ -1797,21 +1797,11 @@
// -------------------------------------------------------------------------------------------------
//
void CMPXVideoPlaybackControlsController::HandleTvOutEventL(
- TBool aConnected, TMPXVideoPlaybackControlCommandIds aEvent, TInt aValue )
+ TBool aConnected, TMPXVideoPlaybackControlCommandIds aEvent )
{
MPX_DEBUG(_L("CMPXVideoPlaybackControlsController::HandleTvOutEventL()"));
iFileDetails->iTvOutConnected = aConnected;
-
- if ( iFileDetails->iTvOutConnected )
- {
- iFileDetails->iTvOutPlayAllowed = aValue;
- }
- else
- {
- iFileDetails->iTvOutPlayAllowed = ETrue;
- }
-
iControlsConfig->UpdateControlListL( aEvent );
ControlsListUpdatedL();
}
@@ -1950,19 +1940,19 @@
//
TBool CMPXVideoPlaybackControlsController::ShowAspectRatioIcon()
{
- MPX_ENTER_EXIT(_L("CMPXVideoPlaybackControlsController::ShowAspectRatioIcon()"));
+ MPX_ENTER_EXIT(_L("CMPXVideoPlaybackControlsController::ShowAspectRatioIcon()"));
TBool retVal = EFalse;
if ( iFileDetails->iVideoEnabled &&
- iFileDetails->iVideoHeight > 0 &&
- iFileDetails->iVideoWidth > 0 &&
- AknLayoutUtils::PenEnabled() )
+ iFileDetails->iVideoHeight > 0 &&
+ iFileDetails->iVideoWidth > 0 &&
+ AknLayoutUtils::PenEnabled() )
{
TRect displayRect = iContainer->Rect();
TReal displayAspectRatio = ( TReal32 )displayRect.Width() / ( TReal32 )displayRect.Height();
TReal videoAspectRatio = ( TReal32 )iFileDetails->iVideoWidth /
- ( TReal32 )iFileDetails->iVideoHeight;
+ ( TReal32 )iFileDetails->iVideoHeight;
// If clip's AR is as same as screen display AR, AspectRatioIcon does not display.
if ( displayAspectRatio != videoAspectRatio )
--- a/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackprogressbar.cpp Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackprogressbar.cpp Tue May 11 16:15:40 2010 +0300
@@ -15,7 +15,7 @@
*
*/
-// Version : %version: 21 %
+// Version : %version: 22 %
// INCLUDE FILES
@@ -334,8 +334,7 @@
// - If TV-Out is connected and the clip is DRM protected
//
if ( iController->FileDetails()->iSeekable &&
- ( state == EPbStatePlaying || state == EPbStatePaused ) &&
- iController->IsTvOutPlaybackAllowed() )
+ ( state == EPbStatePlaying || state == EPbStatePaused ) )
{
TReal ratio = (TReal) ( aPointerEvent.iPosition.iX - iFrameIconRect.iTl.iX )/
(TReal)( iFrameIconRect.Width() - KMPXProgressSliderWidth );
--- a/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackvolumebar.cpp Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackvolumebar.cpp Tue May 11 16:15:40 2010 +0300
@@ -15,7 +15,8 @@
*
*/
-// Version : %version: 21 %
+
+// Version : %version: 22 %
// INCLUDE FILES
@@ -775,11 +776,7 @@
{
MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::HandlePointerEventL()"));
- //
- // Block pointer events in the following cases:
- // - If TV-Out is connected and the clip is DRM protected
- //
- if ( iController->IsTvOutPlaybackAllowed() && iController->FileDetails()->iAudioEnabled )
+ if ( iController->FileDetails()->iAudioEnabled )
{
//
// Volume up
--- a/videoplayback/videoplaybackviews/src/mpxvideobaseplaybackview.cpp Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayback/videoplaybackviews/src/mpxvideobaseplaybackview.cpp Tue May 11 16:15:40 2010 +0300
@@ -16,7 +16,7 @@
*/
-// Version : %version: 75 %
+// Version : %version: 77 %
// Include Files
@@ -130,6 +130,12 @@
{
MPX_DEBUG(_L("CMPXVideoBasePlaybackView::~CMPXVideoBasePlaybackView()"));
+ if ( iClipName )
+ {
+ delete iClipName;
+ iClipName = NULL;
+ }
+
if ( iCloseAO )
{
delete iCloseAO;
@@ -532,6 +538,12 @@
iMediaRequested = EFalse;
iPlaybackState = EPbStateNotInitialised;
+
+ if ( iClipName )
+ {
+ delete iClipName;
+ iClipName = NULL;
+ }
}
// -------------------------------------------------------------------------------------------------
@@ -867,18 +879,15 @@
TMPXVideoPlaybackControlCommandIds cmdId = EMPXControlCmdTvOutDisconnected;
TBool tvOutConnected( *aMessage->Value<TInt>( KMPXMediaVideoTvOutConnected ) );
- TBool playbackAllowed = ETrue;
if ( tvOutConnected )
{
cmdId = EMPXControlCmdTvOutConnected;
-
- playbackAllowed = *aMessage->Value<TInt>( KMPXMediaVideoTvOutPlayAllowed );
}
if ( iContainer )
{
- MPX_TRAPD( err, iContainer->HandleEventL( cmdId, playbackAllowed ) );
+ MPX_TRAPD( err, iContainer->HandleEventL( cmdId ) );
}
break;
}
@@ -958,17 +967,6 @@
DisplayInfoMessageL( R_MPX_VIDEO_CALL_ONGOING );
break;
}
- case KMPXVideoTvOutPlaybackNotAllowed:
- {
- DisplayInfoMessageL( R_MPX_VIDEO_DRM_NO_TV_OUT );
- break;
- }
- case KMPXVideoTvOutPlaybackNotAllowedClose:
- {
- DisplayErrorMessageL( R_MPX_VIDEO_DRM_NO_TV_OUT );
- HandleClosePlaybackViewL();
- break;
- }
default:
{
//
@@ -1216,15 +1214,6 @@
}
//
- // TV-Out Playback Allowed
- //
- if ( aMedia.IsSupported( KMPXMediaVideoTvOutPlayAllowed ) )
- {
- iFileDetails->iTvOutPlayAllowed =
- aMedia.ValueTObjectL<TInt>( KMPXMediaVideoTvOutPlayAllowed );
- }
-
- //
// Video BitRate
//
if ( aMedia.IsSupported( KMPXMediaVideoBitRate ) )
@@ -1368,17 +1357,26 @@
}
else
{
+ //
+ // Retreive the clip name for all use cases
+ //
+ if ( aMedia.IsSupported( KMPXMediaGeneralUri ) )
+ {
+ if ( iClipName )
+ {
+ delete iClipName;
+ iClipName = NULL;
+ }
+
+ TPtrC uri( aMedia.ValueText( KMPXMediaGeneralUri ) );
+ iClipName = uri.AllocL();
+ }
+
if ( aMedia.IsSupported( KMPXMediaVideoError ) )
{
TInt error = aMedia.ValueTObjectL<TInt>( KMPXMediaVideoError );
- // Reset the controls
- iContainer->HandleCommandL( EMPXPbvCmdResetControls );
-
- // Set the iMediaRequested flag to false
iMediaRequested = EFalse;
-
- // Handle the plugin error
HandlePluginErrorL( error );
}
else
@@ -1974,10 +1972,10 @@
TInt openError = KErrNotFound;
RFs& fs = iCoeEnv->FsSession();
- if ( iPlaylistView && iFileDetails->iClipName )
+ if ( iPlaylistView && iClipName )
{
openError = aFile.Open( fs,
- iFileDetails->iClipName->Des(),
+ iClipName->Des(),
EFileRead | EFileShareReadersOrWriters );
}
else
@@ -2002,11 +2000,14 @@
//
HBufC* tempFileName = s->UriL();
- openError = aFile.Open( fs,
- tempFileName->Des(),
- EFileRead | EFileShareReadersOrWriters );
+ if ( tempFileName )
+ {
+ openError = aFile.Open( fs,
+ tempFileName->Des(),
+ EFileRead | EFileShareReadersOrWriters );
- delete tempFileName;
+ delete tempFileName;
+ }
}
}
}
@@ -2110,10 +2111,10 @@
TInt openError = KErrNotFound;
RFs& fs = iCoeEnv->FsSession();
- if ( iPlaylistView && iFileDetails->iClipName )
+ if ( iPlaylistView && iClipName )
{
openError = aFile.Open( fs,
- iFileDetails->iClipName->Des(),
+ iClipName->Des(),
EFileRead | EFileShareReadersOrWriters );
}
else
@@ -2139,11 +2140,14 @@
//
HBufC* tempFileName = s->UriL();
- openError = aFile.Open( fs,
- tempFileName->Des(),
- EFileRead | EFileShareReadersOrWriters );
+ if ( tempFileName )
+ {
+ openError = aFile.Open( fs,
+ tempFileName->Des(),
+ EFileRead | EFileShareReadersOrWriters );
- delete tempFileName;
+ delete tempFileName;
+ }
}
}
}
--- a/videoplayback/videoplaybackviews/src/mpxvideoplaybackcontainer.cpp Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayback/videoplaybackviews/src/mpxvideoplaybackcontainer.cpp Tue May 11 16:15:40 2010 +0300
@@ -16,7 +16,7 @@
*/
-// Version : %version: 27 %
+// Version : %version: 28 %
// INCLUDE FILES
@@ -577,7 +577,6 @@
iFileDetails->iPlaybackMode = (TMPXVideoMode) cmd->ValueTObjectL<TInt>( KMPXMediaVideoMode );
iFileDetails->iTvOutConnected = cmd->ValueTObjectL<TInt>( KMPXMediaVideoTvOutConnected );
- iFileDetails->iTvOutPlayAllowed = cmd->ValueTObjectL<TInt>( KMPXMediaVideoTvOutPlayAllowed );
TPtrC mimeType( cmd->ValueText( KMPXMediaVideoRecognizedMimeType ) );
iFileDetails->iMimeType = mimeType.AllocL();
--- a/videoplayback/videoplaybackviews/src/mpxvideoplaybackviewfiledetails.cpp Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayback/videoplaybackviews/src/mpxvideoplaybackviewfiledetails.cpp Tue May 11 16:15:40 2010 +0300
@@ -15,7 +15,7 @@
*
*/
-// Version : %version: e003sa33#11 %
+// Version : %version: 12 %
//
@@ -92,7 +92,6 @@
iDuration = 0;
iTvOutConnected = EFalse;
- iTvOutPlayAllowed = ETrue;
iDrmProtected = EFalse;
iVideoHeight = 0;
--- a/videoplayer_plat/video_player_file_details_dialog_api/inc/MPFileDetailsDialog.h Tue Apr 27 16:40:33 2010 +0300
+++ b/videoplayer_plat/video_player_file_details_dialog_api/inc/MPFileDetailsDialog.h Tue May 11 16:15:40 2010 +0300
@@ -15,7 +15,7 @@
*/
-// Version : %version: 7 %
+// Version : %version: 8 %
@@ -24,14 +24,14 @@
#define MPFILEDETAILSDIALOG_H
// INCLUDES
-#include <aknpopup.h>
+#include <aknPopup.h>
#ifdef SYMBIAN_BUILD_GCE
#include <videoplayer2.h>
#else
#include <videoplayer.h>
#endif //SYMBIAN_BUILD_GCE
#include <mdaaudiosampleplayer.h>
-#include <mpfiledetails.h>
+#include <MPFileDetails.h>
// FORWARD DECLARATIONS
class CAknDoublePopupMenuStyleListBox;