diff options
author | dec05eba <dec05eba@protonmail.com> | 2024-08-11 15:37:13 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2024-08-11 15:37:13 +0200 |
commit | 7d3a13e15eeb4a1824256c8bb24ba2e35514e354 (patch) | |
tree | 05db81614afc2975de1a2a9cac0fc38c5449d58d /src/QuickMedia.cpp | |
parent | 69a2bac43b5d3939a3356c96ed29bbcc6bfdd8ac (diff) |
dramacool: support asianload backend (fixes many videos), retry getting video duration (fixes video progress sometimes failing to save)
Diffstat (limited to 'src/QuickMedia.cpp')
-rw-r--r-- | src/QuickMedia.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp index d18ad4e..f3e21da 100644 --- a/src/QuickMedia.cpp +++ b/src/QuickMedia.cpp @@ -3330,18 +3330,21 @@ namespace QuickMedia { std::string audio_url; bool has_embedded_audio = true; + bool update_duration_retry = false; auto update_video_duration_handler = [&]() { if(!video_player) return; - if(update_duration) { + if(update_duration || update_duration_retry) { update_duration = false; successfully_fetched_video_duration = false; double file_duration = 0.0; video_player->get_duration(&file_duration); video_info.duration = std::max(video_info.duration, file_duration); - if(video_info.duration > 0.001) + if(video_info.duration > 0.001) { + update_duration_retry = false; successfully_fetched_video_duration = true; + } } }; @@ -3361,6 +3364,9 @@ namespace QuickMedia { update_time_pos = true; } + if(update_duration || (update_duration_retry && update_time_pos)) + update_video_duration_handler(); + if(update_time_pos) { update_time_pos = false; const double prev_video_time_pos = video_time_pos; @@ -3382,8 +3388,6 @@ namespace QuickMedia { } } } - - update_video_duration_handler(); }; auto load_video_error_check = [&](std::string start_time = "", bool reuse_media_source = false) mutable { @@ -3589,6 +3593,7 @@ namespace QuickMedia { //video_player->set_paused(false); } else if(strcmp(event_name, "start-file") == 0) { update_duration = true; + update_duration_retry = true; added_recommendations = false; time_watched_timer.restart(); video_loaded = true; |