mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-19 00:15:30 +00:00
VIDEO: Don't allow VideoDecoder::seek() to be overridden
A new seekIntern() that performs the actual seeking is to be overriden instead. Having the caller override seek() and then call VideoDecoder::seek() kind of defeated the purpose of stopping/starting the audio.
This commit is contained in:
parent
d041177e2f
commit
6e9390feb8
@ -336,9 +336,9 @@ bool VideoDecoder::seek(const Audio::Timestamp &time) {
|
||||
if (isPlaying())
|
||||
stopAudio();
|
||||
|
||||
for (TrackList::iterator it = _tracks.begin(); it != _tracks.end(); it++)
|
||||
if (!(*it)->seek(time))
|
||||
return false;
|
||||
// Do the actual seeking
|
||||
if (!seekIntern(time))
|
||||
return false;
|
||||
|
||||
_lastTimeChange = time;
|
||||
|
||||
@ -471,6 +471,14 @@ Audio::Timestamp VideoDecoder::getDuration() const {
|
||||
return maxDuration;
|
||||
}
|
||||
|
||||
bool VideoDecoder::seekIntern(const Audio::Timestamp &time) {
|
||||
for (TrackList::iterator it = _tracks.begin(); it != _tracks.end(); it++)
|
||||
if (!(*it)->seek(time))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
VideoDecoder::Track::Track() {
|
||||
_paused = false;
|
||||
}
|
||||
|
@ -168,14 +168,15 @@ public:
|
||||
/**
|
||||
* Seek to a given time in the video.
|
||||
*
|
||||
* If the video is playing, it will continue to play. The default
|
||||
* implementation will seek each track and must still be called
|
||||
* from any other implementation.
|
||||
* If the video is playing, it will continue to play. This calls
|
||||
* seekIntern(), which can be overriden. By default, seekIntern()
|
||||
* will call Track::seek() on all tracks with the time passed to
|
||||
* this function.
|
||||
*
|
||||
* @param time The time to seek to
|
||||
* @return true on success, false otherwise
|
||||
*/
|
||||
virtual bool seek(const Audio::Timestamp &time);
|
||||
bool seek(const Audio::Timestamp &time);
|
||||
|
||||
/**
|
||||
* Seek to a given frame.
|
||||
@ -820,6 +821,15 @@ protected:
|
||||
*/
|
||||
TrackListIterator getTrackListEnd() { return _tracks.end(); }
|
||||
|
||||
/**
|
||||
* The internal seek function that does the actual seeking.
|
||||
*
|
||||
* @see seek()
|
||||
*
|
||||
* @return true on success, false otherwise
|
||||
*/
|
||||
virtual bool seekIntern(const Audio::Timestamp &time);
|
||||
|
||||
private:
|
||||
// Tracks owned by this VideoDecoder
|
||||
TrackList _tracks;
|
||||
|
Loading…
x
Reference in New Issue
Block a user