1 /*****************************************************************************
3 *****************************************************************************
4 * Copyright (C) 2003-2009 the VideoLAN team
7 * Authors: Cyril Deguet <asmax@via.ecp.fr>
8 * Olivier Teulière <ipkiss@via.ecp.fr>
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
23 *****************************************************************************/
29 #include <vlc_common.h>
30 #include <vlc_playlist.h>
31 #include "../src/os_factory.hpp"
32 #include "async_queue.hpp"
33 #include "cmd_vars.hpp"
34 #include "cmd_update_item.hpp"
36 void CmdUpdateItem::execute()
38 playlist_t *pPlaylist = getIntf()->p_sys->p_playlist;
39 if( pPlaylist == NULL )
42 input_thread_t *p_input = playlist_CurrentInput( pPlaylist );
46 // Get playlist item information
47 input_item_t *pItem = input_GetItem( p_input );
49 char *pszName = input_item_GetName( pItem );
50 char *pszUri = input_item_GetURI( pItem );
52 string name = pszName;
53 // XXX: This should be done in VLC core, not here...
54 // Remove path information if any
55 OSFactory *pFactory = OSFactory::instance( getIntf() );
56 string::size_type pos = name.rfind( pFactory->getDirSeparator() );
57 if( pos != string::npos )
59 name = name.substr( pos + 1, name.size() - pos + 1 );
61 UString srcName( getIntf(), name.c_str() );
62 UString srcURI( getIntf(), pszUri );
67 // Create commands to update the stream variables
68 CmdSetText *pCmd1 = new CmdSetText( getIntf(), m_rStreamName, srcName );
69 CmdSetText *pCmd2 = new CmdSetText( getIntf(), m_rStreamURI, srcURI );
70 // Push the commands in the asynchronous command queue
71 AsyncQueue *pQueue = AsyncQueue::instance( getIntf() );
72 pQueue->push( CmdGenericPtr( pCmd1 ), false );
73 pQueue->push( CmdGenericPtr( pCmd2 ), false );
74 vlc_object_release( p_input );