From f21c5b6b2788d1ba2073cb4066eedee0de1b249e Mon Sep 17 00:00:00 2001 From: Grigori Goronzy Date: Sun, 26 Jul 2009 16:03:37 +0200 Subject: Improve message callback API Instead of passing a pointer to a va_list, pass the va_list itself. Additionally, use const char for the format string and use names in the prototype that describe the arguments' meaning. --- libass/ass.h | 4 ++-- libass/ass_library.c | 7 +++---- libass/ass_library.h | 2 +- libass/ass_utils.c | 2 +- test/test.c | 4 ++-- 5 files changed, 9 insertions(+), 10 deletions(-) diff --git a/libass/ass.h b/libass/ass.h index e243711..ddc2d55 100644 --- a/libass/ass.h +++ b/libass/ass.h @@ -124,8 +124,8 @@ void ass_process_force_style(ass_track_t *track); * \param msg_cb pointer to callback function * \param data additional data, will be passed to callback */ -void ass_set_message_cb(ass_library_t *priv, - void (*msg_cb)(int, char *, va_list *, void *), +void ass_set_message_cb(ass_library_t *priv, void (*msg_cb) + (int level, const char *fmt, va_list args, void *data), void *data); /** diff --git a/libass/ass_library.c b/libass/ass_library.c index f464af7..3481b6f 100644 --- a/libass/ass_library.c +++ b/libass/ass_library.c @@ -28,12 +28,12 @@ #include "ass_library.h" #include "ass_utils.h" -static void ass_msg_handler(int level, char *fmt, va_list *va, void *data) +static void ass_msg_handler(int level, const char *fmt, va_list va, void *data) { if (level > MSGL_INFO) return; fprintf(stderr, "[ass] "); - vfprintf(stderr, fmt, *va); + vfprintf(stderr, fmt, va); fprintf(stderr, "\n"); } @@ -137,7 +137,7 @@ void ass_clear_fonts(ass_library_t *priv) * \param data additional data that will be passed to the callback */ void ass_set_message_cb(ass_library_t *priv, - void (*msg_cb)(int, char *, va_list *, void *), + void (*msg_cb)(int, const char *, va_list, void *), void *data) { if (msg_cb) { @@ -145,4 +145,3 @@ void ass_set_message_cb(ass_library_t *priv, priv->msg_callback_data = data; } } - diff --git a/libass/ass_library.h b/libass/ass_library.h index 85b0842..e6b37e8 100644 --- a/libass/ass_library.h +++ b/libass/ass_library.h @@ -36,7 +36,7 @@ struct ass_library_s { ass_fontdata_t *fontdata; int num_fontdata; - void (*msg_callback)(int, char *, va_list *, void *); + void (*msg_callback)(int, const char *, va_list, void *); void *msg_callback_data; }; diff --git a/libass/ass_utils.c b/libass/ass_utils.c index 56ca0ef..50b150f 100644 --- a/libass/ass_utils.c +++ b/libass/ass_utils.c @@ -126,7 +126,7 @@ void ass_msg(ass_library_t *priv, int lvl, char *fmt, ...) { va_list va; va_start(va, fmt); - priv->msg_callback(lvl, fmt, &va, priv->msg_callback_data); + priv->msg_callback(lvl, fmt, va, priv->msg_callback_data); va_end(va); } diff --git a/test/test.c b/test/test.c index ac4bfe6..86fa342 100644 --- a/test/test.c +++ b/test/test.c @@ -12,12 +12,12 @@ typedef struct image_s { ass_library_t *ass_library; ass_renderer_t *ass_renderer; -void msg_callback(int level, char *fmt, va_list * va, void *data) +void msg_callback(int level, const char *fmt, va_list va, void *data) { if (level > 6) return; printf("libass: "); - vprintf(fmt, *va); + vprintf(fmt, va); printf("\n"); } -- cgit v1.2.3