From 7d3a13e15eeb4a1824256c8bb24ba2e35514e354 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sun, 11 Aug 2024 15:37:13 +0200 Subject: dramacool: support asianload backend (fixes many videos), retry getting video duration (fixes video progress sometimes failing to save) --- src/QuickMedia.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src/QuickMedia.cpp') 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; -- cgit v1.2.3