From bd97eb8819889e01ab66381c76ef65ed621c89af Mon Sep 17 00:00:00 2001 From: nick black Date: Mon, 21 Dec 2020 02:20:35 -0500 Subject: [PATCH] vlc: pass ncvisual to callback --- src/lib/vlc.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/lib/vlc.cpp b/src/lib/vlc.cpp index d7ebfa6fa..0241ac9fd 100644 --- a/src/lib/vlc.cpp +++ b/src/lib/vlc.cpp @@ -23,9 +23,16 @@ auto ncvisual_subtitle(const ncvisual* ncv) -> char* { return nullptr; } +static void +media_callback(const struct libvlc_event_t* p_event, void* p_data) { + ncvisual* nc = static_cast(p_data); + fprintf(stderr, "CALLBACK! %p\n", nc); + libvlc_media_player_stop(nc->details.player); +} + int ncvisual_decode(ncvisual* nc){ - (void)nc; // FIXME - return -1; + libvlc_media_player_play(nc->details.player); // FIXME retcode + return 0; } // resize frame to oframe, converting to RGBA (if necessary) along the way @@ -36,11 +43,6 @@ int ncvisual_resize(ncvisual* nc, int rows, int cols) { return -1; } -static void -media_callback(const struct libvlc_event_t* p_event, void* p_data) { - fprintf(stderr, "CALLBACK!\n"); -} - ncvisual* ncvisual_from_file(const char* filename) { ncvisual* ret = ncvisual_create(); if(ret == nullptr){ @@ -57,7 +59,7 @@ ncvisual* ncvisual_from_file(const char* filename) { return nullptr; } if(libvlc_event_attach(ret->details.manager, libvlc_MediaPlayerOpening, - media_callback, nullptr)){ + media_callback, ret)){ ncvisual_destroy(ret); return nullptr; } @@ -66,7 +68,10 @@ ncvisual* ncvisual_from_file(const char* filename) { ncvisual_destroy(ret); return nullptr; } - libvlc_media_player_play(ret->details.player); + if(ncvisual_decode(ret)){ + ncvisual_destroy(ret); + return nullptr; + } return ret; }