summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/phonon/mmf/abstractmediaplayer.cpp
diff options
context:
space:
mode:
authorGareth Stockwell <gareth.stockwell@sosco.com>2009-08-20 16:24:55 (GMT)
committerGareth Stockwell <gareth.stockwell@sosco.com>2009-08-20 16:24:55 (GMT)
commit2150242ddbe66c5d4c440599f1282580be013e61 (patch)
treed0eefc4aa67a121987f8b74822e558603d3cedc1 /src/3rdparty/phonon/mmf/abstractmediaplayer.cpp
parentee990e2ed366a16605afb6a13edd9c59b1bcc33d (diff)
downloadQt-2150242ddbe66c5d4c440599f1282580be013e61.zip
Qt-2150242ddbe66c5d4c440599f1282580be013e61.tar.gz
Qt-2150242ddbe66c5d4c440599f1282580be013e61.tar.bz2
Started fleshing out the VideoPlayer implementation
Now loads, prepares and plays a clip, but the video is not visible because it's not yet wired up to a VideoWidget. Video 'playback' can be tested using the demos/mediaplayer application, but the menus are not displayed properly, so a video clip filename must be hardcoded in main.cpp and passed to the MediaPlayer constructor.
Diffstat (limited to 'src/3rdparty/phonon/mmf/abstractmediaplayer.cpp')
-rw-r--r--src/3rdparty/phonon/mmf/abstractmediaplayer.cpp34
1 files changed, 27 insertions, 7 deletions
diff --git a/src/3rdparty/phonon/mmf/abstractmediaplayer.cpp b/src/3rdparty/phonon/mmf/abstractmediaplayer.cpp
index a86f634..dbb4d2d 100644
--- a/src/3rdparty/phonon/mmf/abstractmediaplayer.cpp
+++ b/src/3rdparty/phonon/mmf/abstractmediaplayer.cpp
@@ -70,12 +70,15 @@ void MMF::AbstractMediaPlayer::play()
switch(m_state)
{
case GroundState:
- case LoadingState:
// Is this the correct error? Really we want 'NotReadyError'
m_error = NormalError;
changeState(ErrorState);
break;
-
+
+ case LoadingState:
+ m_playPending = true;
+ break;
+
case StoppedState:
case PausedState:
doPlay();
@@ -102,6 +105,8 @@ void MMF::AbstractMediaPlayer::pause()
TRACE_CONTEXT(AbstractMediaPlayer::pause, EAudioApi);
TRACE_ENTRY("state %d", m_state);
+ m_playPending = false;
+
switch(m_state)
{
case GroundState:
@@ -132,6 +137,8 @@ void MMF::AbstractMediaPlayer::stop()
TRACE_CONTEXT(AbstractMediaPlayer::stop, EAudioApi);
TRACE_ENTRY("state %d", m_state);
+ m_playPending = false;
+
switch(m_state)
{
case GroundState:
@@ -375,16 +382,29 @@ void MMF::AbstractMediaPlayer::changeState(PrivateState newState)
// TODO: add some invariants to check that the transition is valid
- const Phonon::State currentPhononState = phononState(m_state);
+ const Phonon::State oldPhononState = phononState(m_state);
const Phonon::State newPhononState = phononState(newState);
- if(currentPhononState != newPhononState)
+ if(oldPhononState != newPhononState)
{
- TRACE("emit stateChanged(%d, %d)", newPhononState, currentPhononState);
- emit stateChanged(newPhononState, currentPhononState);
+ TRACE("emit stateChanged(%d, %d)", newPhononState, oldPhononState);
+ emit stateChanged(newPhononState, oldPhononState);
}
m_state = newState;
-
+
+ // Check whether play() was called while clip was being loaded. If so,
+ // playback should be started now
+ if(
+ LoadingState == oldPhononState
+ and StoppedState == newPhononState
+ and m_playPending
+ )
+ {
+ TRACE("Play was called while loading; starting playback now");
+ m_playPending = false;
+ play();
+ }
+
TRACE_EXIT_0();
}