Revision: 13080
http://xbmc.svn.sourceforge.net/xbmc/?rev=13080&view=rev
Author: elupus
Date: 2008-05-17 08:46:12 -0700 (Sat, 17 May 2008)
Log Message:
-----------
added: abort support for standard filesystem, which fixes aborts when libavformat has gone heywire and keeps reading without returning packets (dvdplayer).
Modified Paths:
--------------
trunk/XBMC/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
Modified: trunk/XBMC/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
===================================================================
--- trunk/XBMC/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp 2008-05-17 15:25:02 UTC (rev 13079)
+++ trunk/XBMC/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp 2008-05-17 15:46:12 UTC (rev 13080)
@@ -100,6 +100,18 @@
buffer.erase(0, start);
}
+static DWORD g_urltimeout = 0;
+static int interrupt_cb(void)
+{
+ if(!g_urltimeout)
+ return 0;
+
+ if(GetTickCount() > g_urltimeout)
+ return 1;
+
+ return 0;
+}
+
////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////
/*
@@ -111,6 +123,9 @@
static int dvd_file_read(URLContext *h, BYTE* buf, int size)
{
+ if (g_urltimeout && GetTickCount() > g_urltimeout)
+ return -1;
+
CDVDInputStream* pInputStream = (CDVDInputStream*)h->priv_data;
return pInputStream->Read(buf, size);
}
@@ -121,7 +136,10 @@
}
*/
static __int64 dvd_file_seek(URLContext *h, __int64 pos, int whence)
-{
+{
+ if (g_urltimeout && GetTickCount() > g_urltimeout)
+ return -1;
+
CDVDInputStream* pInputStream = (CDVDInputStream*)h->priv_data;
if(whence == AVSEEK_SIZE)
return pInputStream->GetLength();
@@ -134,18 +152,6 @@
return 0;
}
-static DWORD g_urltimeout = 0;
-static int interrupt_cb(void)
-{
- if(!g_urltimeout)
- return 0;
-
- if(GetTickCount() > g_urltimeout)
- return 1;
-
- return 0;
-}
-
URLProtocol dvd_file_protocol = {
"CDVDInputStream",
NULL,
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|