Added Initialization on demand for MediaPlayer 13/86513/2
authorDenis Dolzhenko <d.dolzhenko@samsung.com>
Thu, 1 Sep 2016 13:36:12 +0000 (16:36 +0300)
committerDenis Dolzhenko <d.dolzhenko@samsung.com>
Thu, 1 Sep 2016 13:44:35 +0000 (16:44 +0300)
Change-Id: I6fb45213f189f896c054302c86fd89211d8acf10
Signed-off-by: Denis Dolzhenko <d.dolzhenko@samsung.com>
src/Viewer/Controller/inc/SmilPlayer.h
src/Viewer/Controller/src/SmilPlayer.cpp

index 004f76e..f020d26 100644 (file)
@@ -25,6 +25,7 @@
 
 #include <Ecore.h>
 #include <vector>
+#include <memory>
 
 namespace Msg
 {
@@ -87,7 +88,7 @@ namespace Msg
         private:
             ISmilPlayerListener *m_pListener;
             Ecore_Timer *m_pTimer;
-            MediaPlayer m_MediaPlayer;
+            std::unique_ptr<MediaPlayer> m_MediaPlayer;
             PageList m_PageList;
             unsigned m_CurrentPageIndex;
             int m_Duration;
index 0d42595..4ee26a5 100644 (file)
@@ -44,8 +44,6 @@ SmilPlayer::~SmilPlayer()
 
 void SmilPlayer::create(const MessageMms &mms)
 {
-    m_MediaPlayer.setListener(this);
-
     // Pages:
     const MsgPageList &pages = mms.getPageList();
     for(int i = 0; i < pages.getLength(); ++i)
@@ -190,26 +188,36 @@ void SmilPlayer::playPage()
 
 void SmilPlayer::prepareMedia()
 {
-    m_MediaPlayer.stop();
+    if(m_MediaPlayer)
+        m_MediaPlayer->stop();
+
     SmilPage *page = getCurrentPage();
     if(page->hasMedia())
     {
-        m_MediaPlayer.setUri(page->getMediaPath());
+        if(!m_MediaPlayer)
+        {
+            m_MediaPlayer.reset(new MediaPlayer);
+            m_MediaPlayer->setListener(this);
+        }
+
+        m_MediaPlayer->setUri(page->getMediaPath());
         Evas_Object *videoSink = page->getVideoSink();
-        m_MediaPlayer.setDisplay(videoSink);
+        m_MediaPlayer->setDisplay(videoSink);
     }
+
 }
 
 void SmilPlayer::stopMedia()
 {
-    m_MediaPlayer.pause();
+    if(m_MediaPlayer)
+        m_MediaPlayer->pause();
     getCurrentPage()->playAnimation(false);
 }
 
 void SmilPlayer::startMedia()
 {
-    if(getCurrentPage()->hasMedia())
-        m_MediaPlayer.start();
+    if(m_MediaPlayer && getCurrentPage()->hasMedia())
+        m_MediaPlayer->start();
     getCurrentPage()->playAnimation(true);
 }
 
@@ -314,12 +322,12 @@ void SmilPlayer::onBeforeDelete(View &view)
 
 void SmilPlayer::onMediaPlayerSoundFocusChanged()
 {
-    if(m_MediaPlayer.isPlaying() && m_MediaPlayer.isFocusChangedCallReason())
+    if(m_MediaPlayer->isPlaying() && m_MediaPlayer->isFocusChangedCallReason())
     {
         SmilPage *page = getCurrentPage();
         if(page)
         {
-            m_MediaPlayer.pause();
+            m_MediaPlayer->pause();
             if(page->hasVideo())
                 showUnableToPlayVideoNotif();
             else if(page->hasAudio())