aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/QuickMedia.cpp5
-rw-r--r--src/VideoPlayer.cpp17
2 files changed, 14 insertions, 8 deletions
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp
index 88c74f9..a9087b1 100644
--- a/src/QuickMedia.cpp
+++ b/src/QuickMedia.cpp
@@ -281,12 +281,13 @@ namespace QuickMedia {
search_bar->onTextUpdateCallback = nullptr;
search_bar->onTextSubmitCallback = nullptr;
- std::unique_ptr<VideoPlayer> video_player;
+ std::unique_ptr<VideoPlayer> video_player = nullptr;
try {
printf("Play video: %s\n", video_url.c_str());
- video_player = std::make_unique<VideoPlayer>(window_size.x, window_size.y, window.getSystemHandle(), video_url.c_str());
+ video_player.reset(new VideoPlayer(window_size.x, window_size.y, window.getSystemHandle(), video_url.c_str()));
} catch(VideoInitializationException &e) {
fprintf(stderr, "Failed to create video player!. TODO: Show this to the user");
+ video_player = nullptr;
}
std::vector<std::unique_ptr<BodyItem>> related_media = current_plugin->get_related_media(video_url);
diff --git a/src/VideoPlayer.cpp b/src/VideoPlayer.cpp
index 51caa8c..7ce5f19 100644
--- a/src/VideoPlayer.cpp
+++ b/src/VideoPlayer.cpp
@@ -79,7 +79,11 @@ namespace QuickMedia {
if(mpv_initialize(mpv) < 0)
throw VideoInitializationException("Failed to initialize mpv");
- //check_error(mpv_set_option_string(mpv, "vo", "opengl-cb"));
+ // TODO: Enabling vo=gpu will make mpv create its own window, or take over the QuickMedia window fully
+ // if "wid" option is used. To take advantage of vo=gpu, QuickMedia should create a parent window
+ // and make mpv use that and then embed that into the parent QuickMedia window.
+ // This will also remove the need for rendering with sfml (no need for texture copy!).
+ //check_error(mpv_set_option_string(mpv, "vo", "gpu"));
//check_error(mpv_set_option_string(mpv, "hwdec", "auto"));
check_error(mpv_set_option_string(mpv, "terminal", "yes"));
@@ -95,6 +99,7 @@ namespace QuickMedia {
mpv_opengl_init_params opengl_init_params;
opengl_init_params.get_proc_address = getProcAddressMpv;
opengl_init_params.get_proc_address_ctx = nullptr;
+ opengl_init_params.extra_exts = nullptr;
mpv_render_param params[] = {
{ MPV_RENDER_PARAM_API_TYPE, (void*)MPV_RENDER_API_TYPE_OPENGL },
{ MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &opengl_init_params },
@@ -114,15 +119,16 @@ namespace QuickMedia {
VideoPlayer::~VideoPlayer() {
if(mpvGl) {
- mpv_render_context_set_update_callback(mpvGl, nullptr, nullptr);
+ //mpv_render_context_set_update_callback(mpvGl, nullptr, nullptr);
mpv_render_context_free(mpvGl);
}
free(textureBuffer);
if(mpv) {
- mpv_set_wakeup_callback(mpv, nullptr, nullptr);
- mpv_detach_destroy(mpv);
+ //mpv_set_wakeup_callback(mpv, nullptr, nullptr);
+ //mpv_detach_destroy(mpv);
+ mpv_terminate_destroy(mpv);
}
}
@@ -202,8 +208,7 @@ namespace QuickMedia {
}
void VideoPlayer::draw(sf::RenderWindow &window) {
- bool do_event_update = event_update.exchange(false);
- if(do_event_update)
+ if(event_update.exchange(false))
handle_events();
if(textureBuffer && redraw) {