Commit 5ed93126 authored by JP Dinger's avatar JP Dinger

Skins2: Cut #define down to size. Should result in identical functionality.

parent 6217711a
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
* $Id$ * $Id$
* *
* Author: Erwan Tulou <erwan10 aT videolan doT org > * Author: Erwan Tulou <erwan10 aT videolan doT org >
* JP Dinger <jpd (at) videolan (dot) org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
...@@ -16,9 +17,9 @@ ...@@ -16,9 +17,9 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License along
* along with this program; if not, write to the Free Software * with this program; if not, write to the Free Software Foundation, Inc.,
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/ *****************************************************************************/
#ifndef CMD_CALLBACKS_HPP #ifndef CMD_CALLBACKS_HPP
...@@ -27,43 +28,43 @@ ...@@ -27,43 +28,43 @@
#include "cmd_generic.hpp" #include "cmd_generic.hpp"
#include "../src/vlcproc.hpp" #include "../src/vlcproc.hpp"
class CmdLabeled : public CmdGeneric
{
private:
vlc_object_t *m_pObj;
vlc_value_t m_newVal;
protected:
void execute_on( void (VlcProc::*on_label)(vlc_object_t *,vlc_value_t) )
{
if( !m_pObj )
return;
#define ADD_COMMAND( label ) \ (VlcProc::instance( getIntf() )->*on_label)( m_pObj, m_newVal );
class Cmd_##label : public CmdGeneric \
{ \ vlc_object_release( m_pObj );
public: \ m_pObj = NULL;
Cmd_##label( intf_thread_t *pIntf, \ }
vlc_object_t *pObj, vlc_value_t newVal ) \ CmdLabeled( intf_thread_t *pIntf, vlc_object_t *pObj, vlc_value_t newVal )
: CmdGeneric( pIntf ), m_pObj( pObj ), m_newVal( newVal ) \ : CmdGeneric( pIntf ), m_pObj( pObj ), m_newVal( newVal )
{ \ {
if( m_pObj ) \ if( m_pObj )
vlc_object_hold( m_pObj ); \ vlc_object_hold( m_pObj );
} \ }
virtual ~Cmd_##label() \ public:
{ \ virtual ~CmdLabeled() {
if( m_pObj ) \ if( m_pObj )
vlc_object_release( m_pObj ); \ vlc_object_release( m_pObj );
} \ }
\
virtual void execute() \
{ \
if( !m_pObj ) \
return; \
\
VlcProc* p_VlcProc = VlcProc::instance( getIntf() ); \
p_VlcProc->on_##label( m_pObj, m_newVal ); \
\
vlc_object_release( m_pObj ); \
m_pObj = NULL; \
} \
\
virtual string getType() const { return #label ; } \
\
private: \
vlc_object_t* m_pObj; \
vlc_value_t m_newVal; \
}; };
#define ADD_COMMAND( label ) \
class Cmd_##label : public CmdLabeled \
{ public: \
Cmd_##label( intf_thread_t *I, vlc_object_t *O, vlc_value_t V ) \
: CmdLabeled (I, O, V) { } \
virtual string getType() const { return #label; } \
virtual void execute() { execute_on( &VlcProc::on_##label ); } \
};
ADD_COMMAND( item_current_changed ) ADD_COMMAND( item_current_changed )
ADD_COMMAND( intf_event_changed ) ADD_COMMAND( intf_event_changed )
......
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