int swi_log_musttrace(const char *module, swi_log_level_t severity) { md_list_t *entry; swi_log_level_t lev; static __thread char cache[64]; if (unlikely(module == NULL)) return 0; if(!strcmp(cache, module)) return severity <= (cache[ (uint8_t)cache[63] ] - '0'); for (entry = md_list; entry; entry = entry->next) { if (!strcmp(entry->module, module)) { lev = entry->level; break; } } if (entry == NULL) lev = default_level; changeVerbosity(module, &lev); memset(cache, 0, 64); memcpy(cache, module, strlen(module)); cache[63] = strlen(module); cache[ (uint8_t)cache[63] ] = lev + '0'; return severity <= lev; }
MessagesDialog::MessagesDialog( intf_thread_t *_p_intf) : QVLCFrame( _p_intf ) { setWindowTitle( qtr( "Messages" ) ); setWindowRole( "vlc-messages" ); /* Build Ui */ ui.setupUi( this ); ui.bottomButtonsBox->addButton( new QPushButton( qtr("&Close"), this ), QDialogButtonBox::RejectRole ); /* Modules tree */ ui.modulesTree->setHeaderHidden( true ); /* Buttons and general layout */ ui.saveLogButton->setToolTip( qtr( "Saves all the displayed logs to a file" ) ); int i_verbosity = var_InheritInteger( p_intf, "verbose" ); changeVerbosity( i_verbosity ); ui.verbosityBox->setValue( qMin( i_verbosity, 2 ) ); getSettings()->beginGroup( "Messages" ); ui.filterEdit->setText( getSettings()->value( "messages-filter" ).toString() ); getSettings()->endGroup(); updateButton = new QPushButton( QIcon(":/update"), "" ); updateButton->setFlat( true ); ui.mainTab->setCornerWidget( updateButton ); #ifndef NDEBUG QWidget *pldebugTab = new QWidget(); QVBoxLayout *pldebugTabLayout = new QVBoxLayout(); pldebugTab->setLayout( pldebugTabLayout ); ui.mainTab->addTab( pldebugTab, "Playlist Tree" ); pldebugTree = new QTreeWidget(); pldebugTree->headerItem()->setText( 0, "Name" ); pldebugTree->headerItem()->setText( 1, "PL id" ); pldebugTree->headerItem()->setText( 2, "Item id" ); pldebugTree->headerItem()->setText( 3, "PL flags" ); pldebugTree->headerItem()->setText( 4, "Item flags" ); pldebugTree->setColumnCount( 5 ); pldebugTabLayout->addWidget( pldebugTree ); #endif tabChanged(0); BUTTONACT( updateButton, updateOrClear() ); BUTTONACT( ui.saveLogButton, save() ); CONNECT( ui.filterEdit, editingFinished(), this, updateConfig() ); CONNECT( ui.filterEdit, textChanged(QString), this, filterMessages() ); CONNECT( ui.bottomButtonsBox, rejected(), this, hide() ); CONNECT( ui.verbosityBox, valueChanged( int ), this, changeVerbosity( int ) ); CONNECT( ui.mainTab, currentChanged( int ), this, tabChanged( int ) ); /* General action */ restoreWidgetPosition( "Messages", QSize( 600, 450 ) ); /* Hook up to LibVLC messaging */ vlc_LogSet( p_intf->p_libvlc, MsgCallback, this ); buildTree( NULL, VLC_OBJECT( p_intf->p_libvlc ) ); }