[vlmc-devel] [PATCH] MLTBackend: Add MLT service info in logHandler

Pawel Golinski golpaw1 at gmail.com
Fri Jul 29 14:38:50 CEST 2016


---
 src/Backend/MLT/MLTBackend.cpp | 28 ++++++++++++++++++++++++++--
 1 file changed, 26 insertions(+), 2 deletions(-)

diff --git a/src/Backend/MLT/MLTBackend.cpp b/src/Backend/MLT/MLTBackend.cpp
index 3d39930..5f407b0 100644
--- a/src/Backend/MLT/MLTBackend.cpp
+++ b/src/Backend/MLT/MLTBackend.cpp
@@ -28,6 +28,7 @@
 #include <mlt++/MltRepository.h>
 
 #include <mlt/framework/mlt_log.h>
+#include <mlt/framework/mlt_service.h>
 
 #include "MLTFilter.h"
 
@@ -101,8 +102,22 @@ void
 MLTBackend::setLogHandler( IBackend::LogHandler logHandler )
 {
     staticLogHandler = logHandler;
-    mlt_log_set_callback( []( void*, int level, const char* format, va_list vl )
+    mlt_log_set_callback( []( void* ptr, int level, const char* format, va_list vl )
     {
+        char* prefix_buffer = nullptr;
+
+        mlt_properties properties = ptr ? MLT_SERVICE_PROPERTIES( ( mlt_service )ptr ) : NULL;
+
+        if ( properties )
+        {
+            char *mlt_type = mlt_properties_get( properties, "mlt_type" );
+            char *mlt_service = mlt_properties_get( properties, "mlt_service" );
+            if ( mlt_service )
+                asprintf( &prefix_buffer, "[%s %s] ", mlt_type, mlt_service );
+            else
+                asprintf( &prefix_buffer, "[%s %p] ", mlt_type, ptr );
+        }
+
         char* buffer = nullptr;
 
         auto lvl = IBackend::None;
@@ -118,7 +133,16 @@ MLTBackend::setLogHandler( IBackend::LogHandler logHandler )
         if ( vasprintf( &buffer, format, vl ) < 0 )
             return;
 
-        staticLogHandler( lvl, buffer );
+        std::string prefix_buffer_str;
+        std::string buffer_str;
+        if ( prefix_buffer )
+            prefix_buffer_str = prefix_buffer;
+        if ( buffer )
+            buffer_str = buffer;
+        std::string msg_str = prefix_buffer_str + buffer_str;
+
+        staticLogHandler( lvl, msg_str.c_str() );
+        free( prefix_buffer );
         free( buffer );
     } );
 }
-- 
2.7.4 (Apple Git-66)



More information about the Vlmc-devel mailing list