SL-16510 VLC time slider sometimes does not work

meow-7.2.2
Andrey Kleshchev 2021-12-14 21:13:57 +02:00
parent 3d96d00bce
commit e55a0510ff
2 changed files with 24 additions and 7 deletions

View File

@ -1527,6 +1527,7 @@ void LLPluginClassMedia::seek(float time)
LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_TIME, "seek");
message.setValueReal("time", time);
mCurrentTime = time; // assume that it worked and we will receive an update later
sendMessage(message);
}

View File

@ -93,8 +93,8 @@ private:
bool mIsLooping;
float mCurTime;
float mDuration;
F64 mCurTime;
F64 mDuration;
EStatus mVlcStatus;
};
@ -606,11 +606,27 @@ void MediaPluginLibVLC::receiveMessage(const char* message_string)
}
else if (message_name == "seek")
{
if (mDuration > 0)
{
F64 normalized_offset = message_in.getValueReal("time") / mDuration;
libvlc_media_player_set_position(mLibVLCMediaPlayer, normalized_offset);
}
if (mLibVLCMediaPlayer)
{
libvlc_time_t time = 1000.0 * message_in.getValueReal("time");
libvlc_media_player_set_time(mLibVLCMediaPlayer, time);
time = libvlc_media_player_get_time(mLibVLCMediaPlayer);
if (time < 0)
{
// -1 if there is no media
mCurTime = 0;
}
else
{
mCurTime = (F64)time / 1000.0;
}
if (!libvlc_media_player_is_playing(mLibVLCMediaPlayer))
{
// if paused, won't trigger update, update now
setDirty(0, 0, mWidth, mHeight);
}
}
}
else if (message_name == "set_loop")
{