VLC_EXPORT( msg_subscription_t*, __msg_Subscribe, ( vlc_object_t * ) );
VLC_EXPORT( void, __msg_Unsubscribe, ( vlc_object_t *, msg_subscription_t * ) );
-/* Enable or disable a certain object debug messages */
-#define msg_EnableObjectPrinting(a,b) __msg_EnableObjectPrinting(VLC_OBJECT(a),b)
-#define msg_DisableObjectPrinting(a,b) __msg_DisableObjectPrinting(VLC_OBJECT(a),b)
-VLC_EXPORT( void, __msg_EnableObjectPrinting, ( vlc_object_t *, char * psz_object ) );
-VLC_EXPORT( void, __msg_DisableObjectPrinting, ( vlc_object_t *, char * psz_object ) );
-
/**
* @}
*/
"This is the verbosity level (0=only errors and " \
"standard messages, 1=warnings, 2=debug).")
-#define VERBOSE_OBJECTS_TEXT N_("Choose which objects should print debug " \
- "message")
-#define VERBOSE_OBJECTS_LONGTEXT N_( \
- "This is a ',' separated string, each objects should be prefixed by " \
- "a '+' or a '-' to respectively enable or disable it. The keyword " \
- "'all' refers to all objects. Note, you still need to use -vvv " \
- "to actually display debug message.")
-
#define QUIET_TEXT N_("Be quiet")
#define QUIET_LONGTEXT N_( \
"Turn off all warning and information messages.")
add_integer( "verbose", 0, NULL, VERBOSE_TEXT, VERBOSE_LONGTEXT,
false );
change_short('v');
- add_string( "verbose-objects", 0, NULL, VERBOSE_OBJECTS_TEXT, VERBOSE_OBJECTS_LONGTEXT,
- false );
add_bool( "quiet", 0, NULL, QUIET_TEXT, QUIET_LONGTEXT, true );
change_short('q');
/*
* Message queue options
*/
- char * psz_verbose_objects = config_GetPsz( p_libvlc, "verbose-objects" );
- if( psz_verbose_objects )
- {
- char * psz_object, * iter = psz_verbose_objects;
- while( (psz_object = strsep( &iter, "," )) )
- {
- switch( psz_object[0] )
- {
- printf("%s\n", psz_object+1);
- case '+': msg_EnableObjectPrinting(p_libvlc, psz_object+1); break;
- case '-': msg_DisableObjectPrinting(p_libvlc, psz_object+1); break;
- default:
- msg_Err( p_libvlc, "verbose-objects usage: \n"
- "--verbose-objects=+printthatobject,"
- "-dontprintthatone\n"
- "(keyword 'all' to applies to all objects)\n");
- free( psz_verbose_objects );
- return VLC_EGENERIC;
- }
- }
- free( psz_verbose_objects );
- }
var_Create( p_libvlc, "verbose", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
if( config_GetInt( p_libvlc, "quiet" ) > 0 )
msg_bank_t msg_bank; ///< The message bank
int i_verbose; ///< info messages
bool b_color; ///< color messages?
- vlc_dictionary_t msg_enabled_objects; ///< Enabled objects
- bool msg_all_objects_enabled; ///< Should we print all objects?
/* Timer stats */
vlc_mutex_t timer_lock; ///< Lock to protect timers
libvlc_priv_t *priv = libvlc_priv (p_libvlc);
vlc_mutex_init( &priv->msg_bank.lock );
vlc_mutex_init( &QUEUE.lock );
- vlc_dictionary_init( &priv->msg_enabled_objects, 0 );
- priv->msg_all_objects_enabled = true;
-
QUEUE.b_overflow = false;
QUEUE.i_start = 0;
QUEUE.i_stop = 0;
vlc_mutex_unlock( &QUEUE.lock );
}
-
-/**
- * Object Printing selection
- */
-static void const * kObjectPrintingEnabled = (void *) 1;
-static void const * kObjectPrintingDisabled = (void *) -1;
-
-void __msg_EnableObjectPrinting (vlc_object_t *p_this, char * psz_object)
-{
- libvlc_priv_t *priv = libvlc_priv (p_this->p_libvlc);
- vlc_mutex_lock( &QUEUE.lock );
- if( !strcmp(psz_object, "all") )
- priv->msg_all_objects_enabled = true;
- else
- vlc_dictionary_insert( &priv->msg_enabled_objects, psz_object, kObjectPrintingEnabled );
- vlc_mutex_unlock( &QUEUE.lock );
-}
-
-void __msg_DisableObjectPrinting (vlc_object_t *p_this, char * psz_object)
-{
- libvlc_priv_t *priv = libvlc_priv (p_this->p_libvlc);
- vlc_mutex_lock( &QUEUE.lock );
- if( !strcmp(psz_object, "all") )
- priv->msg_all_objects_enabled = false;
- else
- vlc_dictionary_insert( &priv->msg_enabled_objects, psz_object, kObjectPrintingDisabled );
- vlc_mutex_unlock( &QUEUE.lock );
-}
-
/**
* Destroy the message queues
*
#ifdef UNDER_CE
CloseHandle( QUEUE.logfile );
#endif
-
- vlc_dictionary_clear( &priv->msg_enabled_objects );
-
/* Destroy lock */
vlc_mutex_destroy( &QUEUE.lock );
vlc_mutex_destroy( &priv->msg_bank.lock);
}
psz_object = p_item->psz_object_type;
- void * val = vlc_dictionary_value_for_key( &priv->msg_enabled_objects,
- psz_object );
- if( val == kObjectPrintingDisabled )
- return;
- if( val == kObjectPrintingEnabled )
- /* Allowed */;
- else if( !priv->msg_all_objects_enabled )
- return;
#ifdef UNDER_CE
# define CE_WRITE(str) WriteFile( QUEUE.logfile, \