aboutsummaryrefslogtreecommitdiff
path: root/src/QuickMedia.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/QuickMedia.cpp')
-rw-r--r--src/QuickMedia.cpp25
1 files changed, 14 insertions, 11 deletions
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp
index 47e2530..c81d59d 100644
--- a/src/QuickMedia.cpp
+++ b/src/QuickMedia.cpp
@@ -2388,7 +2388,7 @@ namespace QuickMedia {
const bool is_matrix = strcmp(plugin_name, "matrix") == 0;
idle_active_handler();
- std::unique_ptr<VideoPlayer> video_player;
+ video_player.reset();
BodyItems related_videos;
if(video_page->autoplay_next_item() && play_index + 1 >= 0 && play_index + 1 < (int)next_play_items.size())
@@ -2406,7 +2406,7 @@ namespace QuickMedia {
std::function<void(const char*)> video_event_callback;
bool go_to_previous_page = false;
- auto load_video_error_check = [this, &video_title, &video_tasks, &video_player, &channel_url, previous_page, &go_to_previous_page, &time_watched_timer, &video_loaded, video_page, &video_event_callback, &on_window_create, &video_player_window, is_youtube, is_matrix, download_if_streaming_fails](bool resume_video) mutable {
+ auto load_video_error_check = [this, &video_title, &video_tasks, &channel_url, previous_page, &go_to_previous_page, &time_watched_timer, &video_loaded, video_page, &video_event_callback, &on_window_create, &video_player_window, is_youtube, is_matrix, download_if_streaming_fails](bool resume_video) mutable {
video_player.reset();
channel_url.clear();
video_loaded = false;
@@ -2580,7 +2580,7 @@ namespace QuickMedia {
}
};
- video_event_callback = [&video_player, &time_watched_timer, &video_loaded](const char *event_name) mutable {
+ video_event_callback = [this, &time_watched_timer, &video_loaded](const char *event_name) mutable {
if(strcmp(event_name, "pause") == 0) {
//double time_remaining = 9999.0;
//if(video_player->get_time_remaining(&time_remaining) == VideoPlayer::Error::OK && time_remaining <= 1.0)
@@ -2610,7 +2610,7 @@ namespace QuickMedia {
bool cursor_visible = true;
sf::Clock cursor_hide_timer;
- auto save_video_url_to_clipboard = [video_page, &video_player]() {
+ auto save_video_url_to_clipboard = [this, video_page]() {
std::string url = video_page->get_url();
if(video_url_supports_timestamp(url)) {
// TODO: Remove timestamp (&t= or ?t=) from video_url
@@ -2726,7 +2726,7 @@ namespace QuickMedia {
}
bool page_changed = false;
- page_loop(tabs, 1, [this, &video_player, &page_changed](const std::vector<Tab> &new_tabs) {
+ page_loop(tabs, 1, [this, &page_changed](const std::vector<Tab> &new_tabs) {
if(!page_changed && new_tabs.size() == 1 && new_tabs[0].page->get_type() == PageTypez::VIDEO) {
window.setMouseCursorVisible(true);
if(video_player) {
@@ -2743,10 +2743,12 @@ namespace QuickMedia {
}
});
- if(!window.isOpen() || current_page == PageType::EXIT)
+ if(!window.isOpen() || current_page == PageType::EXIT) {
+ video_player.reset();
return;
+ }
- if(page_changed) {
+ if(!video_player) {
current_page = PageType::VIDEO_CONTENT;
load_video_error_check(true);
} else {
@@ -2794,7 +2796,7 @@ namespace QuickMedia {
if(task_result == TaskResult::CANCEL || task_result == TaskResult::FALSE) {
current_page = previous_page;
go_to_previous_page = true;
- return;
+ break;
}
}
@@ -2833,7 +2835,7 @@ namespace QuickMedia {
if(load_next_page_result == TaskResult::CANCEL) {
current_page = previous_page;
go_to_previous_page = true;
- continue;
+ break;
}
}
@@ -2853,12 +2855,12 @@ namespace QuickMedia {
if(get_playable_url_result == TaskResult::CANCEL) {
current_page = previous_page;
go_to_previous_page = true;
- return;
+ break;
} else if(get_playable_url_result == TaskResult::FALSE) {
show_notification("QuickMedia", "Failed to get playable url", Urgency::CRITICAL);
current_page = previous_page;
go_to_previous_page = true;
- return;
+ break;
}
load_video_error_check(false);
@@ -2901,6 +2903,7 @@ namespace QuickMedia {
std::this_thread::sleep_for(std::chrono::milliseconds(50));
}
+ video_player.reset();
window.setMouseCursorVisible(true);
window_set_fullscreen(disp, window.getSystemHandle(), WindowFullscreenState::UNSET);