From a0b905769dde329fc6661153563085f22f300e95 Mon Sep 17 00:00:00 2001 From: nick black Date: Wed, 20 Jan 2021 02:17:43 -0500 Subject: [PATCH] ncvisual_ need hot dispatch on _init #1309 --- src/lib/internal.h | 1 + src/lib/visual.cpp | 6 ++++-- src/media/ffmpeg.cpp | 7 ++----- src/media/oiio.cpp | 3 ++- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/lib/internal.h b/src/lib/internal.h index aafdca128..b5f670508 100644 --- a/src/lib/internal.h +++ b/src/lib/internal.h @@ -1060,6 +1060,7 @@ int drop_signals(void* nc); void ncvisual_printbanner(const notcurses* nc); typedef struct ncvisual_implementation { + int (*ncvisual_init)(int loglevel); void (*ncvisual_printbanner)(const struct notcurses* nc); int (*ncvisual_blit)(struct ncvisual* ncv, int rows, int cols, ncplane* n, const struct blitset* bset, int placey, int placex, diff --git a/src/lib/visual.cpp b/src/lib/visual.cpp index 52e2f045b..768052ba5 100644 --- a/src/lib/visual.cpp +++ b/src/lib/visual.cpp @@ -39,8 +39,10 @@ auto ncvisual_details_seed(struct ncvisual* ncv) -> void { } } -auto __attribute__ ((weak)) -ncvisual_init(int loglevel __attribute__ ((unused))) -> int { +auto ncvisual_init(int loglevel) -> int { + if(visual_implementation){ + return visual_implementation->ncvisual_init(loglevel); + } return 0; } diff --git a/src/media/ffmpeg.cpp b/src/media/ffmpeg.cpp index 351b7145d..598921926 100644 --- a/src/media/ffmpeg.cpp +++ b/src/media/ffmpeg.cpp @@ -542,7 +542,6 @@ auto ncvisual_details_seed(ncvisual* ncv) -> void { } auto ffmpeg_log_level(int level) -> int{ -#ifdef USE_FFMPEG switch(level){ case NCLOGLEVEL_SILENT: return AV_LOG_QUIET; case NCLOGLEVEL_PANIC: return AV_LOG_PANIC; @@ -557,12 +556,9 @@ auto ffmpeg_log_level(int level) -> int{ } fprintf(stderr, "Invalid log level: %d\n", level); return AV_LOG_TRACE; -#else - return level; -#endif } -auto ncvisual_init(int loglevel) -> int { +auto ffmpeg_init(int loglevel) -> int { av_log_set_level(ffmpeg_log_level(loglevel)); // FIXME could also use av_log_set_callback() and capture the message... return 0; @@ -589,6 +585,7 @@ auto ncvisual_details_destroy(ncvisual_details* deets) -> void { } const static ncvisual_implementation ffmpeg_impl = { + .ncvisual_init = ffmpeg_init, .ncvisual_printbanner = ncvisual_printbanner, .ncvisual_blit = ffmpeg_blit, .ncvisual_create = ncvisual_create, diff --git a/src/media/oiio.cpp b/src/media/oiio.cpp index bbeb2f3be..4c7f96e36 100644 --- a/src/media/oiio.cpp +++ b/src/media/oiio.cpp @@ -257,7 +257,7 @@ auto oiio_details_seed(ncvisual* ncv) -> void { // FIXME? } -int ncvisual_init(int loglevel __attribute__ ((unused))) { +int oiio_init(int loglevel __attribute__ ((unused))) { // FIXME set OIIO global attribute "debug" based on loglevel // FIXME check OIIO_VERSION_STRING components against linked openimageio_version() return 0; // allow success here @@ -269,6 +269,7 @@ void oiio_printbanner(const notcurses* nc __attribute__ ((unused))){ } const static ncvisual_implementation oiio_impl = { + .ncvisual_init = oiio_init, .ncvisual_printbanner = oiio_printbanner, .ncvisual_blit = oiio_blit, .ncvisual_create = oiio_create,