ncvisual_ need hot dispatch on _init #1309

pull/1321/head
nick black 4 years ago
parent f8a835ce7c
commit a0b905769d
No known key found for this signature in database
GPG Key ID: 5F43400C21CBFACC

@ -1060,6 +1060,7 @@ int drop_signals(void* nc);
void ncvisual_printbanner(const notcurses* nc); void ncvisual_printbanner(const notcurses* nc);
typedef struct ncvisual_implementation { typedef struct ncvisual_implementation {
int (*ncvisual_init)(int loglevel);
void (*ncvisual_printbanner)(const struct notcurses* nc); void (*ncvisual_printbanner)(const struct notcurses* nc);
int (*ncvisual_blit)(struct ncvisual* ncv, int rows, int cols, ncplane* n, int (*ncvisual_blit)(struct ncvisual* ncv, int rows, int cols, ncplane* n,
const struct blitset* bset, int placey, int placex, const struct blitset* bset, int placey, int placex,

@ -39,8 +39,10 @@ auto ncvisual_details_seed(struct ncvisual* ncv) -> void {
} }
} }
auto __attribute__ ((weak)) auto ncvisual_init(int loglevel) -> int {
ncvisual_init(int loglevel __attribute__ ((unused))) -> int { if(visual_implementation){
return visual_implementation->ncvisual_init(loglevel);
}
return 0; return 0;
} }

@ -542,7 +542,6 @@ auto ncvisual_details_seed(ncvisual* ncv) -> void {
} }
auto ffmpeg_log_level(int level) -> int{ auto ffmpeg_log_level(int level) -> int{
#ifdef USE_FFMPEG
switch(level){ switch(level){
case NCLOGLEVEL_SILENT: return AV_LOG_QUIET; case NCLOGLEVEL_SILENT: return AV_LOG_QUIET;
case NCLOGLEVEL_PANIC: return AV_LOG_PANIC; 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); fprintf(stderr, "Invalid log level: %d\n", level);
return AV_LOG_TRACE; 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)); av_log_set_level(ffmpeg_log_level(loglevel));
// FIXME could also use av_log_set_callback() and capture the message... // FIXME could also use av_log_set_callback() and capture the message...
return 0; return 0;
@ -589,6 +585,7 @@ auto ncvisual_details_destroy(ncvisual_details* deets) -> void {
} }
const static ncvisual_implementation ffmpeg_impl = { const static ncvisual_implementation ffmpeg_impl = {
.ncvisual_init = ffmpeg_init,
.ncvisual_printbanner = ncvisual_printbanner, .ncvisual_printbanner = ncvisual_printbanner,
.ncvisual_blit = ffmpeg_blit, .ncvisual_blit = ffmpeg_blit,
.ncvisual_create = ncvisual_create, .ncvisual_create = ncvisual_create,

@ -257,7 +257,7 @@ auto oiio_details_seed(ncvisual* ncv) -> void {
// FIXME? // 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 set OIIO global attribute "debug" based on loglevel
// FIXME check OIIO_VERSION_STRING components against linked openimageio_version() // FIXME check OIIO_VERSION_STRING components against linked openimageio_version()
return 0; // allow success here return 0; // allow success here
@ -269,6 +269,7 @@ void oiio_printbanner(const notcurses* nc __attribute__ ((unused))){
} }
const static ncvisual_implementation oiio_impl = { const static ncvisual_implementation oiio_impl = {
.ncvisual_init = oiio_init,
.ncvisual_printbanner = oiio_printbanner, .ncvisual_printbanner = oiio_printbanner,
.ncvisual_blit = oiio_blit, .ncvisual_blit = oiio_blit,
.ncvisual_create = oiio_create, .ncvisual_create = oiio_create,

Loading…
Cancel
Save