Index: trunk/kdesupport/phonon/ds9/mediaobject.h =================================================================== --- trunk/kdesupport/phonon/ds9/mediaobject.h (revision 971606) +++ trunk/kdesupport/phonon/ds9/mediaobject.h (working copy) @@ -182,6 +182,7 @@ void stop(); void ensureStopped(); void seek(qint64 time); + void setRate(double rate); QString errorString() const; Phonon::ErrorType errorType() const; @@ -251,6 +252,10 @@ void totalTimeChanged(qint64 length) const; void currentSourceChanged(const MediaSource &); + // Of all the signals, not one can be safely used to denote a load + // completion. + void loadingFinished(); + protected: void setState(Phonon::State); void timerEvent(QTimerEvent *e); Index: trunk/kdesupport/phonon/ds9/mediaobject.cpp =================================================================== --- trunk/kdesupport/phonon/ds9/mediaobject.cpp (revision 971606) +++ trunk/kdesupport/phonon/ds9/mediaobject.cpp (working copy) @@ -650,6 +650,10 @@ } } + void MediaObject::setRate(double rate) { + currentGraph()->setRate(rate); + } + QString MediaObject::errorString() const { return m_errorString; @@ -786,6 +790,8 @@ emit metaDataChanged(currentGraph()->metadata()); emit totalTimeChanged(totalTime()); + emit loadingFinished(); + //let's put the next state switch(m_nextState) { Index: trunk/kdesupport/phonon/ds9/mediagraph.h =================================================================== --- trunk/kdesupport/phonon/ds9/mediagraph.h (revision 971606) +++ trunk/kdesupport/phonon/ds9/mediagraph.h (working copy) @@ -47,6 +47,7 @@ void stop(); void pause(); void absoluteSeek(qint64); + void setRate(double rate); QMultiMap metadata() const; Index: trunk/kdesupport/phonon/ds9/mediagraph.cpp =================================================================== --- trunk/kdesupport/phonon/ds9/mediagraph.cpp (revision 971606) +++ trunk/kdesupport/phonon/ds9/mediagraph.cpp (working copy) @@ -372,6 +372,11 @@ m_seekId = m_mediaObject->workerThread()->addSeekRequest(m_graph, time); } + void MediaGraph::setRate(double rate) { + ComPointer mediaSeeking(m_graph, IID_IMediaSeeking); + mediaSeeking->SetRate(rate); + } + HRESULT MediaGraph::removeFilter(const Filter& filter) { FILTER_INFO info; Index: trunk/kdesupport/phonon/ds9/videowidget.cpp =================================================================== --- trunk/kdesupport/phonon/ds9/videowidget.cpp (revision 971606) +++ trunk/kdesupport/phonon/ds9/videowidget.cpp (working copy) @@ -171,6 +171,9 @@ //initialisation of the widget m_widget = new VideoWindow(parent, this); + // Bugfix here. VideoWindow has some arbitrary default size. Follow parent's size. + m_widget->setFixedSize(parent->size()); + //initialization of the renderers qMemSet(m_renderers, 0, sizeof(m_renderers));