We had a checking to avoid the fake buffering. So nothing is broken I believe.<br><br><div class="gmail_quote">On Mon, Nov 24, 2008 at 9:23 PM, Seb Ruiz <span dir="ltr">&lt;<a href="mailto:ruiz@kde.org">ruiz@kde.org</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Does anybody know if we have any workarounds in place that might be<br>
broken by this commit? Perhaps someone running phonon trunk could test<br>
that everything is still dandy.<br>
<br>
Cheers,<br>
Seb<br>
<br>
<br>
---------- Forwarded message ----------<br>
From: Matthias Kretz &lt;<a href="mailto:kretz@kde.org">kretz@kde.org</a>&gt;<br>
Date: 2008/11/25<br>
Subject: kdesupport/phonon/xine<br>
To: <a href="mailto:kde-commits@kde.org">kde-commits@kde.org</a><br>
<br>
<br>
SVN commit 888428 by mkretz:<br>
<br>
remove fake state change to BufferingState on play as it&#39;s not<br>
consistent and other backends don&#39;t do it either<br>
<br>
&nbsp;M &nbsp;+1 -35 &nbsp; &nbsp; mediaobject.cpp<br>
&nbsp;M &nbsp;+0 -5 &nbsp; &nbsp; &nbsp;mediaobject.h<br>
<br>
<br>
--- trunk/kdesupport/phonon/xine/mediaobject.cpp #888427:888428<br>
@@ -57,9 +57,7 @@<br>
 &nbsp; &nbsp;m_stream(static_cast&lt;XineStream *&gt;(SourceNode::threadSafeObject().data())),<br>
 &nbsp; &nbsp;m_currentTitle(1),<br>
 &nbsp; &nbsp;m_transitionTime(0),<br>
- &nbsp; &nbsp;m_autoplayTitles(true),<br>
- &nbsp; &nbsp;m_fakingBuffering(false),<br>
- &nbsp; &nbsp;m_shouldFakeBufferingOnPlay(true)<br>
+ &nbsp; &nbsp;m_autoplayTitles(true)<br>
&nbsp;{<br>
 &nbsp; &nbsp;m_stream-&gt;setMediaObject(this);<br>
 &nbsp; &nbsp;m_stream-&gt;useGaplessPlayback(true);<br>
@@ -192,10 +190,6 @@<br>
&nbsp;{<br>
 &nbsp; &nbsp;debug() &lt;&lt; Q_FUNC_INFO &lt;&lt; green &lt;&lt; &quot;PLAY&quot; &lt;&lt; normal;<br>
 &nbsp; &nbsp;m_stream-&gt;play();<br>
- &nbsp; &nbsp;if (m_shouldFakeBufferingOnPlay || m_state ==<br>
Phonon::StoppedState || m_state == Phonon::LoadingState || m_state ==<br>
Phonon::PausedState) {<br>
- &nbsp; &nbsp; &nbsp; &nbsp;m_shouldFakeBufferingOnPlay = false;<br>
- &nbsp; &nbsp; &nbsp; &nbsp;startToFakeBuffering();<br>
- &nbsp; &nbsp;}<br>
&nbsp;}<br>
<br>
&nbsp;void MediaObject::pause()<br>
@@ -226,40 +220,18 @@<br>
 &nbsp; &nbsp;return m_stream-&gt;errorType();<br>
&nbsp;}<br>
<br>
-void MediaObject::startToFakeBuffering()<br>
-{<br>
- &nbsp; &nbsp;debug() &lt;&lt; Q_FUNC_INFO &lt;&lt; blue &lt;&lt; &quot;start faking&quot; &lt;&lt; normal;<br>
- &nbsp; &nbsp;m_fakingBuffering = true;<br>
- &nbsp; &nbsp;if (m_state == Phonon::BufferingState) {<br>
- &nbsp; &nbsp; &nbsp; &nbsp;return;<br>
- &nbsp; &nbsp;} else if (m_state == Phonon::PlayingState) {<br>
- &nbsp; &nbsp; &nbsp; &nbsp;// next time we reach StoppedState from LoadingState go right<br>
into BufferingState<br>
- &nbsp; &nbsp; &nbsp; &nbsp;return;<br>
- &nbsp; &nbsp;}<br>
-<br>
- &nbsp; &nbsp;debug() &lt;&lt; Q_FUNC_INFO &lt;&lt; &quot;fake state change: reached<br>
BufferingState after &quot; &lt;&lt; m_state;<br>
-<br>
- &nbsp; &nbsp;Phonon::State oldstate = m_state;<br>
- &nbsp; &nbsp;m_state = Phonon::BufferingState;<br>
-<br>
- &nbsp; &nbsp;emit stateChanged(Phonon::BufferingState, oldstate);<br>
-}<br>
-<br>
&nbsp;void MediaObject::handleStateChange(Phonon::State newstate,<br>
Phonon::State oldstate)<br>
&nbsp;{<br>
 &nbsp; &nbsp;if (m_state == newstate &amp;&amp; m_state == BufferingState) {<br>
- &nbsp; &nbsp; &nbsp; &nbsp;m_fakingBuffering = false;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;debug() &lt;&lt; Q_FUNC_INFO &lt;&lt; blue &lt;&lt; &quot;end faking&quot; &lt;&lt; normal;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;// BufferingState -&gt; BufferingState, nothing to do<br>
 &nbsp; &nbsp; &nbsp; &nbsp;return;<br>
 &nbsp; &nbsp;} else if (m_state != oldstate) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp;// m_state == oldstate always, except when faking buffering:<br>
- &nbsp; &nbsp; &nbsp; &nbsp;Q_ASSERT(m_fakingBuffering);<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;// so we&#39;re faking BufferingState, then m_state must be in<br>
BufferingState<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Q_ASSERT(m_state == BufferingState);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;if (newstate == PlayingState || newstate == ErrorState) {<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_fakingBuffering = false;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;debug() &lt;&lt; Q_FUNC_INFO &lt;&lt; blue &lt;&lt; &quot;end faking&quot; &lt;&lt; normal;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;oldstate = m_state;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;} else {<br>
@@ -267,8 +239,6 @@<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// PlayingState or ErrorState<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
- &nbsp; &nbsp;} else if (oldstate == LoadingState &amp;&amp; newstate == StoppedState<br>
&amp;&amp; m_fakingBuffering) {<br>
- &nbsp; &nbsp; &nbsp; &nbsp;newstate = BufferingState;<br>
 &nbsp; &nbsp;}<br>
 &nbsp; &nbsp;m_state = newstate;<br>
<br>
@@ -355,7 +325,6 @@<br>
 &nbsp; &nbsp; &nbsp; &nbsp;if (source.url().scheme() == QLatin1String(&quot;kbytestream&quot;)) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_mediaSource = MediaSource();<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;qWarning() &lt;&lt; &nbsp;&quot;do not ever use kbytestream:/ URLs with<br>
MediaObject!&quot;;<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_shouldFakeBufferingOnPlay = false;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_stream-&gt;setMrl(QByteArray());<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_stream-&gt;setError(Phonon::NormalError, tr(&quot;Cannot open<br>
media data at &#39;&lt;i&gt;%1&lt;/i&gt;&#39;&quot;).arg(source.url().toString(QUrl::RemovePassword)));<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;<br>
@@ -365,7 +334,6 @@<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_stream-&gt;gaplessSwitchTo(source.url());<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;case HardSwitch:<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_shouldFakeBufferingOnPlay = true;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_stream-&gt;setUrl(source.url());<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
@@ -402,7 +370,6 @@<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_stream-&gt;gaplessSwitchTo(mrl);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;case HardSwitch:<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_shouldFakeBufferingOnPlay = true;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_stream-&gt;setMrl(mrl);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
@@ -418,7 +385,6 @@<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_stream-&gt;gaplessSwitchTo(m_bytestream-&gt;mrl());<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;case HardSwitch:<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_shouldFakeBufferingOnPlay = true;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_stream-&gt;setMrl(m_bytestream-&gt;mrl());<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
--- trunk/kdesupport/phonon/xine/mediaobject.h #888427:888428<br>
@@ -117,9 +117,6 @@<br>
 &nbsp; &nbsp; &nbsp; &nbsp;void availableAnglesChanged(int);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;void angleChanged(int);<br>
<br>
- &nbsp; &nbsp;protected slots:<br>
- &nbsp; &nbsp; &nbsp; &nbsp;void startToFakeBuffering();<br>
-<br>
 &nbsp; &nbsp;private slots:<br>
 &nbsp; &nbsp; &nbsp; &nbsp;void handleStateChange(Phonon::State newstate, Phonon::State oldstate);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;void needNextUrl();<br>
@@ -149,8 +146,6 @@<br>
 &nbsp; &nbsp; &nbsp; &nbsp;qint32 m_prefinishMark;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;qint32 m_transitionTime;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;bool m_autoplayTitles : 1;<br>
- &nbsp; &nbsp; &nbsp; &nbsp;bool m_fakingBuffering : 1;<br>
- &nbsp; &nbsp; &nbsp; &nbsp;bool m_shouldFakeBufferingOnPlay : 1;<br>
&nbsp;};<br>
&nbsp;}} //namespace Phonon::Xine<br>
<br>
<br>
<br>
<br>
--<br>
Seb Ruiz<br>
<br>
<a href="http://www.sebruiz.net/" target="_blank">http://www.sebruiz.net/</a><br>
<a href="http://amarok.kde.org/" target="_blank">http://amarok.kde.org/</a><br>
_______________________________________________<br>
Amarok-devel mailing list<br>
<a href="mailto:Amarok-devel@kde.org">Amarok-devel@kde.org</a><br>
<a href="https://mail.kde.org/mailman/listinfo/amarok-devel" target="_blank">https://mail.kde.org/mailman/listinfo/amarok-devel</a><br>
</blockquote></div><br><br clear="all"><br>-- <br>Cheers,<br>Peter ZHOU<br>-------------------------------<br><a href="http://www.peterzl.net/">http://www.peterzl.net/</a><br>