aboutsummaryrefslogtreecommitdiff
path: root/src/QuickMedia.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2024-08-11 15:37:13 +0200
committerdec05eba <dec05eba@protonmail.com>2024-08-11 15:37:13 +0200
commit7d3a13e15eeb4a1824256c8bb24ba2e35514e354 (patch)
tree05db81614afc2975de1a2a9cac0fc38c5449d58d /src/QuickMedia.cpp
parent69a2bac43b5d3939a3356c96ed29bbcc6bfdd8ac (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.cpp13
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;