summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGrigori Goronzy <greg@blackbox>2009-07-26 16:03:37 +0200
committerGrigori Goronzy <greg@blackbox>2009-07-26 16:03:37 +0200
commitf21c5b6b2788d1ba2073cb4066eedee0de1b249e (patch)
tree027a48eea625849f03c4756f770ad101b8a080a7
parent311ec23031e257a8edde5153b09a5d0c2d6b0f6b (diff)
downloadlibass-f21c5b6b2788d1ba2073cb4066eedee0de1b249e.tar.bz2
libass-f21c5b6b2788d1ba2073cb4066eedee0de1b249e.tar.xz
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.
-rw-r--r--libass/ass.h4
-rw-r--r--libass/ass_library.c7
-rw-r--r--libass/ass_library.h2
-rw-r--r--libass/ass_utils.c2
-rw-r--r--test/test.c4
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");
}