Commit ca377a2d authored by Pawel Golinski's avatar Pawel Golinski Committed by luyikei
Browse files

MLTBackend: Add MLT service info in logHandler


Signed-off-by: luyikei's avatarYikai Lu <luyikei.qmltu@gmail.com>
parent 87a8af7f
......@@ -26,12 +26,14 @@
#include <mlt++/MltFactory.h>
#include <mlt++/MltProperties.h>
#include <mlt++/MltRepository.h>
#include <mlt++/MltService.h>
#include <mlt/framework/mlt_log.h>
#include "MLTFilter.h"
#include <mutex>
#include <sstream>
#include "Tools/VlmcDebug.h"
#include "vlmc.h"
......@@ -101,8 +103,28 @@ 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 )
{
std::string msg_str;
Mlt::Service service( ( mlt_service )ptr );
if ( service.is_valid() )
{
const char *mlt_type = service.get( "mlt_type" );
const char *mlt_service = service.get( "mlt_service" );
std::ostringstream os;
if ( mlt_service && mlt_type )
os << "[" << mlt_type << " " << mlt_service << "] ";
else if ( mlt_type )
{
os << "[" << mlt_type << " " << ptr << "] ";
}
msg_str = os.str();
}
char* buffer = nullptr;
auto lvl = IBackend::None;
......@@ -118,7 +140,12 @@ MLTBackend::setLogHandler( IBackend::LogHandler logHandler )
if ( vasprintf( &buffer, format, vl ) < 0 )
return;
staticLogHandler( lvl, buffer );
if ( buffer )
msg_str += buffer;
if ( !msg_str.empty() )
staticLogHandler( lvl, msg_str.c_str() );
free( buffer );
} );
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment