From: Grigori Goronzy Date: Sun, 26 Jul 2009 14:03:37 +0000 (+0200) Subject: Improve message callback API X-Git-Tag: 0.9.7~12 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f21c5b6b2788d1ba2073cb4066eedee0de1b249e;p=libass 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. --- 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"); }