paplayer: dvdplayercodec - check if seek is possible before trying to seek
authorRainer Hochecker <fernetmenta@online.de>
Wed, 30 Apr 2014 13:29:51 +0000 (15:29 +0200)
committerRainer Hochecker <fernetmenta@online.de>
Thu, 1 May 2014 06:01:07 +0000 (08:01 +0200)
xbmc/cores/paplayer/DVDPlayerCodec.cpp

index c60abc8..411d6bf 100644 (file)
@@ -194,17 +194,21 @@ bool DVDPlayerCodec::Init(const CStdString &strFile, unsigned int filecache)
   }
 
   // test if seeking is supported
-  if (Seek(1) != DVD_NOPTS_VALUE)
-  {
-    // rewind stream to beginning
-    Seek(0);
-    m_bCanSeek = true;
-  }
-  else
+  m_bCanSeek = false;
+  if (m_pInputStream->Seek(0, SEEK_POSSIBLE))
   {
+    // reset eof flag of stream, with eof set seek returns always success
     m_pInputStream->Seek(0, SEEK_SET);
-    m_pDemuxer->Reset();
-    m_bCanSeek = false;
+    if (Seek(1) != DVD_NOPTS_VALUE)
+    {
+      // rewind stream to beginning
+      Seek(0);
+    }
+    else
+    {
+      m_pInputStream->Seek(0, SEEK_SET);
+      m_pDemuxer->Reset();
+    }
   }
 
   if (m_Channels == 0) // no data - just guess and hope for the best