[haiku-commits] haiku: hrev50655 - src/apps/mediaplayer/playlist

  • From: b.vitruvio@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Wed, 2 Nov 2016 19:45:49 +0100 (CET)

hrev50655 adds 1 changeset to branch 'master'
old head: 1649750c5d966215acd136db3db259e3f1269ada
new head: ce8fd10683495d7720e3fc78d94c2924638adf2b
overview: 
http://cgit.haiku-os.org/haiku/log/?qt=range&q=ce8fd1068349+%5E1649750c5d96

----------------------------------------------------------------------------

ce8fd1068349: MediaPlayer: Emulate duration attribute for BUrl playlists
  
  * Make the Playlist window working again by caching
  the duration value.

                                [ Dario Casalinuovo <b.vitruvio@xxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev50655
Commit:      ce8fd10683495d7720e3fc78d94c2924638adf2b
URL:         http://cgit.haiku-os.org/haiku/commit/?id=ce8fd1068349
Author:      Dario Casalinuovo <b.vitruvio@xxxxxxxxx>
Date:        Wed Nov  2 18:38:57 2016 UTC

----------------------------------------------------------------------------

2 files changed, 14 insertions(+), 6 deletions(-)
src/apps/mediaplayer/playlist/UrlPlaylistItem.cpp | 19 +++++++++++++------
src/apps/mediaplayer/playlist/UrlPlaylistItem.h   |  1 +

----------------------------------------------------------------------------

diff --git a/src/apps/mediaplayer/playlist/UrlPlaylistItem.cpp 
b/src/apps/mediaplayer/playlist/UrlPlaylistItem.cpp
index 1546e3e..5f2fbc2 100644
--- a/src/apps/mediaplayer/playlist/UrlPlaylistItem.cpp
+++ b/src/apps/mediaplayer/playlist/UrlPlaylistItem.cpp
@@ -14,7 +14,8 @@
 
 UrlPlaylistItem::UrlPlaylistItem(BUrl url)
        :
-       fUrl(url)
+       fUrl(url),
+       fDuration(-1)
 {
 }
 
@@ -105,6 +106,10 @@ UrlPlaylistItem::SetAttribute(const Attribute& attribute, 
const int64& value)
 status_t
 UrlPlaylistItem::GetAttribute(const Attribute& attribute, int64& value) const
 {
+       if (attribute == ATTR_INT64_DURATION && fDuration >= 0) {
+               value = fDuration;
+               return B_OK;
+       }
        return B_NOT_SUPPORTED;
 }
 
@@ -140,12 +145,14 @@ UrlPlaylistItem::RestoreFromTrash()
 bigtime_t
 UrlPlaylistItem::_CalculateDuration()
 {
-       BMediaFile mediaFile(fUrl);
+       if (fDuration < 0) {
+               BMediaFile mediaFile(fUrl);
 
-       if (mediaFile.InitCheck() != B_OK || mediaFile.CountTracks() < 1)
-               return 0;
-
-       return mediaFile.TrackAt(0)->Duration();
+               if (mediaFile.InitCheck() != B_OK || mediaFile.CountTracks() < 
1)
+                       return 0;
+               fDuration = mediaFile.TrackAt(0)->Duration();
+       }
+       return fDuration;
 }
 
 
diff --git a/src/apps/mediaplayer/playlist/UrlPlaylistItem.h 
b/src/apps/mediaplayer/playlist/UrlPlaylistItem.h
index 91f3338..11481b7 100644
--- a/src/apps/mediaplayer/playlist/UrlPlaylistItem.h
+++ b/src/apps/mediaplayer/playlist/UrlPlaylistItem.h
@@ -54,6 +54,7 @@ protected:
 
 private:
                        BUrl                            fUrl;
+                       bigtime_t                       fDuration;
 };
 
 #endif


Other related posts:

  • » [haiku-commits] haiku: hrev50655 - src/apps/mediaplayer/playlist - b . vitruvio