All signals, event direct ones, are going to event loop.
Retrieves input_thread at event loop processing time
/* Change the SpeedRate in the Label */
CONNECT( THEMIM->getIM(), rateChanged( float ), this, setRate( float ) );
- DCONNECT( THEMIM, inputChanged( input_thread_t * ),
+ DCONNECT( THEMIM, inputChanged( ),
speedControl, activateOnState() );
setFrameStyle( QFrame::StyledPanel | QFrame::Raised );
rebuild( p_root );
DCONNECT( THEMIM->getIM(), metaChanged( input_item_t *),
this, processInputItemUpdate( input_item_t *) );
- DCONNECT( THEMIM, inputChanged( input_thread_t * ),
- this, processInputItemUpdate( input_thread_t* ) );
+ DCONNECT( THEMIM, inputChanged( ),
+ this, processInputItemUpdate( ) );
CONNECT( THEMIM, playlistItemAppended( int, int ),
this, processItemAppend( int, int ) );
CONNECT( THEMIM, playlistItemRemoved( int ),
/************************* Updates handling *****************************/
/**** Events processing ****/
-void PLModel::processInputItemUpdate( input_thread_t *p_input )
+void PLModel::processInputItemUpdate( )
{
+ input_thread_t *p_input = THEMIM->getInput();
if( !p_input ) return;
if( p_input && !( p_input->b_dead || !vlc_object_alive( p_input ) ) )
private slots:
void processInputItemUpdate( input_item_t *);
- void processInputItemUpdate( input_thread_t* p_input );
+ void processInputItemUpdate();
void processItemRemoval( int i_pl_itemid );
void processItemAppend( int i_pl_itemid, int i_pl_itemidparent );
void activateItem( playlist_item_t *p_item );
menuMapper = new QSignalMapper( this );
CONNECT( menuMapper, mapped( int ), this, triggerMenu( int ) );
CONNECT( THEMIM->getIM(), playingStatusChanged( int ), this, playingChanged( int ) );
- DCONNECT( THEMIM, inputChanged( input_thread_t* ),
- this, inputChanged( input_thread_t* ) );
+ DCONNECT( THEMIM, inputChanged( ),
+ this, inputChanged( ) );
CONNECT( THEMIM->getIM(), metaChanged( input_item_t* ),
this, metaChanged( input_item_t* ) );
b_unloading = false;
}
}
-void ExtensionsManager::inputChanged( input_thread_t* p_input )
+void ExtensionsManager::inputChanged( )
{
+ input_thread_t* p_input = THEMIM->getInput();
//This is unlikely, but can happen if no extension modules can be loaded.
if ( p_extensions_manager == NULL )
return ;
private slots:
void triggerMenu( int id );
- void inputChanged( input_thread_t *p_input );
+ void inputChanged( );
void playingChanged( int );
void metaChanged( input_item_t *p_input );
delInput();
}
+void InputManager::inputChangedHandler()
+{
+ setInput( THEMIM->getInput() );
+}
+
/* Define the Input used.
Add the callbacks on input
p_input is held once here */
mute.addCallback( this, SLOT(notifyMute(bool)) );
/* Warn our embedded IM about input changes */
- DCONNECT( this, inputChanged( input_thread_t * ),
- im, setInput( input_thread_t * ) );
+ DCONNECT( this, inputChanged(),
+ im, inputChangedHandler() );
/* initialize p_input (an input can already be running) */
p_input = playlist_CurrentInput( THEPL );
if( p_input )
- emit inputChanged( p_input );
+ emit inputChanged( );
/* Audio Menu */
menusAudioMapper = new QSignalMapper();
{
if( p_input )
{
- emit inputChanged( NULL );
vlc_object_release( p_input );
+ p_input = NULL;
+ emit inputChanged( );
}
var_DelCallback( THEPL, "activity", PLItemChanged, this );
if( p_input != NULL )
vlc_object_release( p_input );
p_input = playlist_CurrentInput( THEPL );
- emit inputChanged( p_input );
+ emit inputChanged( );
}
/* Playlist Control functions */
void UpdateProgramEvent();
void UpdateEPG();
+ void setInput( input_thread_t * );
+
public slots:
- void setInput( input_thread_t * ); ///< Our controlled input changed
+ void inputChangedHandler(); ///< Our controlled input changed
void sliderUpdate( float ); ///< User dragged the slider. We get new pos
/* SpeedRate Rate Management */
void reverse();
void menusUpdateAudio( const QString& );
signals:
- void inputChanged( input_thread_t * );
+ void inputChanged( );
void volumeChanged( float );
void soundMuteChanged( bool );
void playlistItemAppended( int itemId, int parentId );