CVS commit by welwarsky: fix for BR50183, BR51398 M +8 -4 kioinputstream_impl.cpp 1.26 M +1 -0 kioinputstream_impl.h 1.19 M +10 -4 kplayobjectcreator.cc 1.3 M +1 -0 kplayobjectcreator.h 1.2 --- kdelibs/arts/kde/kplayobjectcreator.cc 1.3: @@ -92,7 +92,13 @@ void KDE::PlayObjectCreator::slotMimeTyp emit playObjectCreated(Arts::PlayObject::null()); - emit playObjectCreated ( - m_server.createPlayObjectForStream( - m_instream, std::string(mimetype_copy.latin1()), m_createBUS) - ); + playObject = m_server.createPlayObjectForStream( + m_instream, + std::string( mimetype_copy.latin1() ), + m_createBUS ); + if ( playObject.isNull() ) { + m_instream.streamEnd(); + emit playObjectCreated( Arts::PlayObject::null() ); + return; + } + emit playObjectCreated( playObject ); } --- kdelibs/arts/kde/kplayobjectcreator.h 1.2: @@ -48,4 +48,5 @@ private: Arts::SoundServerV2 m_server; Arts::KIOInputStream m_instream; + Arts::PlayObject playObject; bool m_createBUS; }; --- kdelibs/arts/kde/kioinputstream_impl.cpp 1.26: @@ -42,7 +42,7 @@ using namespace Arts; -const unsigned int KIOInputStream_impl::PACKET_COUNT = 5; +const unsigned int KIOInputStream_impl::PACKET_COUNT = 10; -KIOInputStream_impl::KIOInputStream_impl() : m_packetSize(1024) +KIOInputStream_impl::KIOInputStream_impl() : m_packetSize(2048) { m_job = 0; @@ -53,4 +53,5 @@ KIOInputStream_impl::KIOInputStream_impl m_streamStarted = false; m_streamSuspended = false; + m_streamPulled = false; } @@ -102,9 +103,11 @@ void KIOInputStream_impl::streamEnd() this, SLOT(slotScanMimeType(KIO::Job *, const QString &))); + if ( m_streamPulled ) + outdata.endPull(); + m_job->kill(); m_job = 0; } - outdata.endPull(); m_streamStarted = false; } @@ -187,8 +190,9 @@ void KIOInputStream_impl::processQueue() if (!m_firstBuffer) { if(m_data.size() < (m_packetBuffer * m_packetSize * 2) ) { - kdDebug() << "STREAMING: Buffering in progress... (Needed bytes before it starts to play: " << ((m_packetBuffer * m_packetSize) - m_data.size()) << ")" << endl; + kdDebug() << "STREAMING: Buffering in progress... (Needed bytes before it starts to play: " << ((m_packetBuffer * m_packetSize * 2) - m_data.size()) << ")" << endl; return; } else { m_firstBuffer = true; + m_streamPulled = true; outdata.setPull(PACKET_COUNT, m_packetSize); } --- kdelibs/arts/kde/kioinputstream_impl.h 1.19: @@ -75,4 +75,5 @@ private: bool m_streamStarted; bool m_streamSuspended; + bool m_streamPulled; unsigned int m_packetBuffer;