[vlc-commits] access/file: don't read-ahead when processing remote contents ( closes #9885, refs #8446)

Felix Paul Kühne git at videolan.org
Sun Apr 27 16:25:39 CEST 2014


vlc | branch: master | Felix Paul Kühne <fkuehne at videolan.org> | Sun Apr 27 12:33:15 2014 +0200| [b8b8c438f8f65a93da82364c8fea1dbf987c4a8e] | committer: Felix Paul Kühne

access/file: don't read-ahead when processing remote contents (closes #9885, refs #8446)

OS X Mavericks takes read-ahead very seriously when accessing SMB drives, so it caches up to a 100 MB. However, when the end of said cache is reached, VLC will stutter because the file system needs to re-connect to the server first. Disabling read-ahead leads to a continous data flow at the media's bitrate.

This solves a regression introduced in fe0a075ef3

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=b8b8c438f8f65a93da82364c8fea1dbf987c4a8e
---

 modules/access/file.c |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/modules/access/file.c b/modules/access/file.c
index 6d4423e..6a1bde1 100644
--- a/modules/access/file.c
+++ b/modules/access/file.c
@@ -235,12 +235,15 @@ int FileOpen( vlc_object_t *p_this )
         posix_fadvise (fd, 0, 4096, POSIX_FADV_WILLNEED);
         /* In most cases, we only read the file once. */
         posix_fadvise (fd, 0, 0, POSIX_FADV_NOREUSE);
-#ifdef F_RDAHEAD
-        fcntl (fd, F_RDAHEAD, 1);
-#endif
 #ifdef F_NOCACHE
         fcntl (fd, F_NOCACHE, 0);
 #endif
+#ifdef F_RDAHEAD
+        if (IsRemote(fd, p_access->psz_filepath))
+            fcntl (fd, F_RDAHEAD, 0);
+        else
+            fcntl (fd, F_RDAHEAD, 1);
+#endif
     }
     else
     {



More information about the vlc-commits mailing list