Summary: | arts plays streams but never stops | ||
---|---|---|---|
Product: | [Unmaintained] akodelib | Reporter: | John M <phlogistonjohn> |
Component: | general | Assignee: | Allan Sandfeld <kde> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Gentoo Packages | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
John M
2004-08-26 02:05:29 UTC
From a decoding point-of-view it is just a stream, and there could always appear more data that would need to be decoded. It is upto the application to shut the decoding down when the source of data ends. I will look into where this should happen, but I would like to know if this worked in KDE 3.2? In KDE 3.2 the applications (noatun for sure) behaved the way I expected they should, when the song "ends" the player continues onto the next track. In fact, since I still have 3.2 & an older version of arts installed, I can run the old artsd from the cmd line and noatun 2.6.0 (KDE 3.3.0) will play like the older (2.4.x) version did running from the 3.2 environment. I discovered this when attempting to listen to streams from magnatune.com so I've been using this album http://magnatune.com/artists/music/Electronica/Magnatune%20Remixed/Ridin%20the%20Faders/ to test since it has some very short tracks. But this also happens to songs that I ripped myself and are streamed off a gnump3d server, these mp3s play normally from the harddrive with both versions of artsd running. CVS commit by carewolf: Close streams if EOF is reached. BUG: 88092 M +13 -12 akodePlayObject_impl.cpp 1.27 --- kdemultimedia/akode/arts_plugin/akodePlayObject_impl.cpp #1.26:1.27 @@ -459,7 +459,7 @@ void akodePlayObject_impl::process_indat } -void akodePlayObject_impl::processQueue() { +void akodePlayObject_impl::processQueue() +{ while (!m_packetQueue->empty()) { - long freespace = m_bytebuffer->space(); @@ -475,4 +475,5 @@ void akodePlayObject_impl::processQueue( return; } + if (instream.eof()) m_bytebuffer->close(); } |