diff options
author | Andrew den Exter <andrew.den-exter@nokia.com> | 2010-10-06 12:02:12 +1000 |
---|---|---|
committer | Andrew den Exter <andrew.den-exter@nokia.com> | 2010-10-06 12:41:36 +1000 |
commit | 43afae646c920d04584bdc2946f7119da4893859 (patch) | |
tree | 554441ab1b1111e27f77e48d081ba9022ca6759b | |
parent | 806002dbb1323397b37db8d29a04e94bb097099d (diff) |
QVideoWidget::sizeHint() is only updated when media is loaded.
Update the size hint when the the state of the video sink changes
instead of when the entire pipeline's state changes.
Task-number: QTMOBILITY-548
Reviewed-by: Dmytro Poplavskiy
-rw-r--r-- | plugins/multimedia/gstreamer/mediaplayer/qgstreamerplayersession.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/plugins/multimedia/gstreamer/mediaplayer/qgstreamerplayersession.cpp b/plugins/multimedia/gstreamer/mediaplayer/qgstreamerplayersession.cpp index 01f8b15639..06828fe19a 100644 --- a/plugins/multimedia/gstreamer/mediaplayer/qgstreamerplayersession.cpp +++ b/plugins/multimedia/gstreamer/mediaplayer/qgstreamerplayersession.cpp @@ -710,13 +710,7 @@ void QGstreamerPlayerSession::busMessage(const QGstreamerMessage &message) m_playbackRate = 1.0; setPlaybackRate(rate); } - - if (m_renderer) - m_renderer->precessNewStream(); - } - - break; case GST_STATE_PLAYING: if (oldState == GST_STATE_PAUSED) @@ -804,6 +798,16 @@ void QGstreamerPlayerSession::busMessage(const QGstreamerMessage &message) case GST_MESSAGE_ANY: break; } + } else if (m_videoSink + && m_renderer + && GST_MESSAGE_SRC(gm) == GST_OBJECT_CAST(m_videoSink) + && GST_MESSAGE_TYPE(gm) == GST_MESSAGE_STATE_CHANGED) { + GstState oldState; + GstState newState; + gst_message_parse_state_changed(gm, &oldState, &newState, 0); + + if (oldState == GST_STATE_READY && newState == GST_STATE_PAUSED) + m_renderer->precessNewStream(); } } } |