116 void MMF::AbstractPlayer::videoOutputChanged() |
111 void MMF::AbstractPlayer::videoOutputChanged() |
117 { |
112 { |
118 // Default behaviour is empty - overridden by VideoPlayer |
113 // Default behaviour is empty - overridden by VideoPlayer |
119 } |
114 } |
120 |
115 |
121 void MMF::AbstractPlayer::setError(Phonon::ErrorType error) |
116 void MMF::AbstractPlayer::setError(Phonon::ErrorType error, |
|
117 const QString &errorMessage) |
122 { |
118 { |
123 TRACE_CONTEXT(AbstractPlayer::setError, EAudioInternal); |
119 TRACE_CONTEXT(AbstractPlayer::setError, EAudioInternal); |
124 TRACE_ENTRY("state %d error %d", m_state, error); |
120 TRACE_ENTRY("state %d error %d", m_state, error); |
125 |
121 |
126 m_error = error; |
122 m_error = error; |
|
123 m_errorString = errorMessage; |
127 changeState(ErrorState); |
124 changeState(ErrorState); |
128 |
125 |
129 TRACE_EXIT_0(); |
126 TRACE_EXIT_0(); |
130 } |
127 } |
131 |
128 |
132 Phonon::ErrorType MMF::AbstractPlayer::errorType() const |
129 Phonon::ErrorType MMF::AbstractPlayer::errorType() const |
133 { |
130 { |
134 const Phonon::ErrorType result = (ErrorState == m_state) |
131 const Phonon::ErrorType result = (ErrorState == m_state) |
135 ? errorType() : NoError; |
132 ? m_error : NoError; |
136 return result; |
133 return result; |
137 } |
134 } |
138 |
135 |
139 QString MMF::AbstractPlayer::errorString() const |
136 QString MMF::AbstractPlayer::errorString() const |
140 { |
137 { |
141 // TODO: put in proper error strings |
138 return m_errorString; |
142 QString result; |
|
143 return result; |
|
144 } |
139 } |
145 |
140 |
146 Phonon::State MMF::AbstractPlayer::phononState() const |
141 Phonon::State MMF::AbstractPlayer::phononState() const |
147 { |
142 { |
148 return phononState(m_state); |
143 return phononState(m_state); |
171 void MMF::AbstractPlayer::setState(PrivateState newState) |
166 void MMF::AbstractPlayer::setState(PrivateState newState) |
172 { |
167 { |
173 m_state = newState; |
168 m_state = newState; |
174 } |
169 } |
175 |
170 |
|
171 void MMF::AbstractPlayer::changeState(PrivateState newState) |
|
172 { |
|
173 TRACE_CONTEXT(AbstractPlayer::changeState, EAudioInternal); |
|
174 TRACE_ENTRY("state %d newState %d", privateState(), newState); |
|
175 |
|
176 // TODO: add some invariants to check that the transition is valid |
|
177 |
|
178 const Phonon::State oldPhononState = phononState(privateState()); |
|
179 |
|
180 // We need to change the state before we emit stateChanged(), because |
|
181 // some user code, for instance the mediaplayer, switch on MediaObject's |
|
182 // state. |
|
183 setState(newState); |
|
184 |
|
185 const Phonon::State newPhononState = phononState(newState); |
|
186 |
|
187 if (oldPhononState != newPhononState) { |
|
188 TRACE("emit stateChanged(%d, %d)", newPhononState, oldPhononState); |
|
189 emit stateChanged(newPhononState, oldPhononState); |
|
190 } |
|
191 |
|
192 TRACE_EXIT_0(); |
|
193 } |
|
194 |
176 QT_END_NAMESPACE |
195 QT_END_NAMESPACE |
177 |
196 |