]> granicus.if.org Git - libass/commitdiff
Improve message callback API
authorGrigori Goronzy <greg@blackbox>
Sun, 26 Jul 2009 14:03:37 +0000 (16:03 +0200)
committerGrigori Goronzy <greg@blackbox>
Sun, 26 Jul 2009 14:03:37 +0000 (16:03 +0200)
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
libass/ass_library.c
libass/ass_library.h
libass/ass_utils.c
test/test.c

index e2437113756dec9cc3720bcdd1ebb7e550e489e6..ddc2d5511140d77784bdee758df7c7b1cfa4c639 100644 (file)
@@ -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);
 
 /**
index f464af7aaf3c5fbd827545ff08de3bb244738be8..3481b6fafa02f364384730bb8a36baa02f8cf97c 100644 (file)
 #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;
     }
 }
-
index 85b0842db4bf45397a989e3df32a9fc31957f9bc..e6b37e870f62fa4ff6ea9c4ee560803a699135c8 100644 (file)
@@ -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;
 };
 
index 56ca0ef63d2acfb75c035f6198729245e8af9bcc..50b150f441f1fcd69c9aab28e327a920e21bcaf2 100644 (file)
@@ -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);
 }
 
index ac4bfe6959391152492ce03740bb2e09bafe64c0..86fa3428a26b00cee71ccda36db436a5d66cae6e 100644 (file)
@@ -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");
 }