]> git.sesse.net Git - vlc/blobdiff - src/misc/messages.c
Unexport now unused picture_Delete().
[vlc] / src / misc / messages.c
index 61080c0b7e3c4ae88f9ead94b5590f05257358c1..66bd62eb03e225184442013817c12d56d8cf64fe 100644 (file)
@@ -132,6 +132,10 @@ void vlc_Log (vlc_object_t *obj, int type, const char *module,
 static void PrintColorMsg (void *, int, const msg_item_t *,
                            const char *, va_list);
 static void PrintMsg (void *, int, const msg_item_t *, const char *, va_list);
+#ifdef WIN32
+static void Win32DebugOutputMsg (void *, int , const msg_item_t *,
+                                 const char *, va_list);
+#endif
 
 /**
  * Emit a log message. This function is the variable argument list equivalent
@@ -230,6 +234,13 @@ void vlc_vaLog (vlc_object_t *obj, int type, const char *module,
         PrintMsg (&priv->i_verbose, type, &msg, format, ap);
     va_end (ap);
 
+#ifdef WIN32
+    va_list dol;
+    va_copy (dol, args);
+    Win32DebugOutputMsg (&priv->i_verbose, type, &msg, format, dol);
+    va_end (dol);
+#endif
+
     vlc_rwlock_rdlock (&msg_lock);
     for (msg_subscription_t *sub = msg_head; sub != NULL; sub = sub->next)
     {
@@ -255,7 +266,7 @@ static const char msg_color[4][8] = { WHITE, RED, YELLOW, GRAY };
 static void PrintColorMsg (void *d, int type, const msg_item_t *p_item,
                            const char *format, va_list ap)
 {
-    const int *pverbose = d;
+    const signed char *pverbose = d;
     FILE *stream = stderr;
 
     if (*pverbose < 0 || *pverbose < (type - VLC_MSG_ERR))
@@ -281,7 +292,7 @@ static void PrintColorMsg (void *d, int type, const msg_item_t *p_item,
 static void PrintMsg (void *d, int type, const msg_item_t *p_item,
                       const char *format, va_list ap)
 {
-    const int *pverbose = d;
+    const signed char *pverbose = d;
     FILE *stream = stderr;
 
     if (*pverbose < 0 || *pverbose < (type - VLC_MSG_ERR))
@@ -303,3 +314,35 @@ static void PrintMsg (void *d, int type, const msg_item_t *p_item,
     funlockfile (stream);
     vlc_restorecancel (canc);
 }
+
+#ifdef WIN32
+static void Win32DebugOutputMsg (void* d, int type, const msg_item_t *p_item,
+                                 const char *format, va_list dol)
+{
+    const signed char *pverbose = d;
+    if (pverbose && (*pverbose < 0 || *pverbose < (type - VLC_MSG_ERR)))
+        return;
+
+    va_list dol2;
+    va_copy (dol2, dol);
+    int msg_len = vsnprintf(NULL, 0, format, dol2);
+    va_end (dol2);
+
+    if(msg_len <= 0)
+        return;
+
+    char *msg = malloc(msg_len + 1 + 1);
+    if (!msg)
+        return;
+
+    msg_len = vsnprintf(msg, msg_len+1, format, dol);
+    if (msg_len > 0){
+        if(msg[msg_len-1] != '\n'){
+            msg[msg_len] = '\n';
+            msg[msg_len + 1] = '\0';
+        }
+        OutputDebugString(msg);
+    }
+    free(msg);
+}
+#endif