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