[vlc-devel] commit: skins2: implement recording and next-frame (Erwan Tulou )
git version control
git at videolan.org
Sat Sep 5 21:09:46 CEST 2009
vlc | branch: master | Erwan Tulou <erwan10 at videolan.org> | Sat Sep 5 17:12:07 2009 +0200| [f755d52057980f3227fc0ebdd91751539cc1c342] | committer: Erwan Tulou
skins2: implement recording and next-frame
This patch adds the following keywords for skins developpers :
- vlc.canRecord (boolean / refers to can-record)
- vlc.isRecording (boolean / refers to record)
- vlc.toggleRecord() (function / toggle recording)
- vlc.nextFrame() (function / next frame)
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f755d52057980f3227fc0ebdd91751539cc1c342
---
modules/gui/skins2/commands/cmd_callbacks.hpp | 1 +
modules/gui/skins2/commands/cmd_snapshot.cpp | 21 +++++++++++++++++++++
modules/gui/skins2/commands/cmd_snapshot.hpp | 2 ++
modules/gui/skins2/parser/interpreter.cpp | 2 ++
modules/gui/skins2/src/vlcproc.cpp | 25 +++++++++++++++++++++++++
modules/gui/skins2/src/vlcproc.hpp | 3 +++
6 files changed, 54 insertions(+), 0 deletions(-)
diff --git a/modules/gui/skins2/commands/cmd_callbacks.hpp b/modules/gui/skins2/commands/cmd_callbacks.hpp
index 78e2514..521002f 100644
--- a/modules/gui/skins2/commands/cmd_callbacks.hpp
+++ b/modules/gui/skins2/commands/cmd_callbacks.hpp
@@ -69,6 +69,7 @@ ADD_COMMAND( item_current_changed )
ADD_COMMAND( intf_event_changed )
ADD_COMMAND( bit_rate_changed )
ADD_COMMAND( sample_rate_changed )
+ADD_COMMAND( can_record_changed )
ADD_COMMAND( random_changed )
ADD_COMMAND( loop_changed )
diff --git a/modules/gui/skins2/commands/cmd_snapshot.cpp b/modules/gui/skins2/commands/cmd_snapshot.cpp
index bc2b020..43724eb 100644
--- a/modules/gui/skins2/commands/cmd_snapshot.cpp
+++ b/modules/gui/skins2/commands/cmd_snapshot.cpp
@@ -39,3 +39,24 @@ void CmdSnapshot::execute()
}
}
+
+void CmdToggleRecord::execute()
+{
+ input_thread_t* pInput = getIntf()->p_sys->p_input;
+ if( !pInput )
+ return;
+
+ var_ToggleBool( pInput, "record" );
+}
+
+
+void CmdNextFrame::execute()
+{
+ input_thread_t* pInput = getIntf()->p_sys->p_input;
+ if( !pInput )
+ return;
+
+ var_TriggerCallback( pInput, "frame-next" );
+}
+
+
diff --git a/modules/gui/skins2/commands/cmd_snapshot.hpp b/modules/gui/skins2/commands/cmd_snapshot.hpp
index e96e7c8..c8c5cb4 100644
--- a/modules/gui/skins2/commands/cmd_snapshot.hpp
+++ b/modules/gui/skins2/commands/cmd_snapshot.hpp
@@ -29,5 +29,7 @@
/// Command to snapshot VLC
DEFINE_COMMAND(Snapshot, "snapshot" )
+DEFINE_COMMAND(ToggleRecord, "togglerecord" )
+DEFINE_COMMAND(NextFrame, "nextframe" )
#endif
diff --git a/modules/gui/skins2/parser/interpreter.cpp b/modules/gui/skins2/parser/interpreter.cpp
index 56c9f11..9d5dc53 100644
--- a/modules/gui/skins2/parser/interpreter.cpp
+++ b/modules/gui/skins2/parser/interpreter.cpp
@@ -109,6 +109,8 @@ Interpreter::Interpreter( intf_thread_t *pIntf ): SkinObject( pIntf )
REGISTER_CMD( "vlc.minimize()", CmdMinimize )
REGISTER_CMD( "vlc.onTop()", CmdOnTop )
REGISTER_CMD( "vlc.snapshot()", CmdSnapshot )
+ REGISTER_CMD( "vlc.toggleRecord()", CmdToggleRecord )
+ REGISTER_CMD( "vlc.nextFrame()", CmdNextFrame )
REGISTER_CMD( "vlc.quit()", CmdQuit )
m_commandMap["equalizer.enable()"] =
CmdGenericPtr( new CmdSetEqualizer( getIntf(), true ) );
diff --git a/modules/gui/skins2/src/vlcproc.cpp b/modules/gui/skins2/src/vlcproc.cpp
index c65510f..b0ebc14 100644
--- a/modules/gui/skins2/src/vlcproc.cpp
+++ b/modules/gui/skins2/src/vlcproc.cpp
@@ -105,6 +105,9 @@ VlcProc::VlcProc( intf_thread_t *pIntf ): SkinObject( pIntf ),
REGISTER_VAR( m_cVarSeekable, VarBoolImpl, "vlc.isSeekable" )
REGISTER_VAR( m_cVarDvdActive, VarBoolImpl, "dvd.isActive" )
+ REGISTER_VAR( m_cVarRecordable, VarBoolImpl, "vlc.canRecord" )
+ REGISTER_VAR( m_cVarRecording, VarBoolImpl, "vlc.isRecording" )
+
/* Vout variables */
REGISTER_VAR( m_cVarFullscreen, VarBoolImpl, "vlc.isFullscreen" )
REGISTER_VAR( m_cVarHasVout, VarBoolImpl, "vlc.hasVout" )
@@ -205,6 +208,7 @@ VlcProc::~VlcProc()
var_DelCallback( pInput, "intf-event", onGenericCallback, this );
var_DelCallback( pInput, "bit-rate", onGenericCallback, this );
var_DelCallback( pInput, "sample-rate", onGenericCallback, this );
+ var_DelCallback( pInput, "can-Record", onGenericCallback, this );
vlc_object_release( pInput );
getIntf()->p_sys->p_input = NULL;
@@ -480,6 +484,7 @@ int VlcProc::onGenericCallback( vlc_object_t *pObj, const char *pVariable,
ADD_CALLBACK_ENTRY( "intf-event", intf_event_changed )
ADD_CALLBACK_ENTRY( "bit-rate", bit_rate_changed )
ADD_CALLBACK_ENTRY( "sample-rate", sample_rate_changed )
+ ADD_CALLBACK_ENTRY( "can-record", can_record_changed )
ADD_CALLBACK_ENTRY( "random", random_changed )
ADD_CALLBACK_ENTRY( "loop", loop_changed )
@@ -505,6 +510,7 @@ void VlcProc::on_item_current_changed( vlc_object_t* p_obj, vlc_value_t newVal )
var_DelCallback( pInput, "intf-event", onGenericCallback, this );
var_DelCallback( pInput, "bit-rate", onGenericCallback, this );
var_DelCallback( pInput, "sample-rate", onGenericCallback, this );
+ var_DelCallback( pInput, "can-record", onGenericCallback, this );
vlc_object_release( pInput );
pInput = getIntf()->p_sys->p_input = NULL;
}
@@ -517,6 +523,7 @@ void VlcProc::on_item_current_changed( vlc_object_t* p_obj, vlc_value_t newVal )
var_AddCallback( pInput, "intf-event", onGenericCallback, this );
var_AddCallback( pInput, "bit-rate", onGenericCallback, this );
var_AddCallback( pInput, "sample-rate", onGenericCallback, this );
+ var_AddCallback( pInput, "can-record", onGenericCallback, this );
getIntf()->p_sys->p_input = pInput;
}
@@ -638,6 +645,14 @@ void VlcProc::on_intf_event_changed( vlc_object_t* p_obj, vlc_value_t newVal )
break;
}
+ case INPUT_EVENT_RECORD:
+ {
+ VarBoolImpl *pVarRecording =
+ (VarBoolImpl*)m_cVarRecording.get();
+ pVarRecording->set( var_GetBool( pInput, "record" ) );
+ break;
+ }
+
INPUT_EVENT_DEAD:
INPUT_EVENT_ABORT:
{
@@ -647,6 +662,8 @@ void VlcProc::on_intf_event_changed( vlc_object_t* p_obj, vlc_value_t newVal )
onGenericCallback, this );
var_DelCallback( pInput, "sample-rate",
onGenericCallback, this );
+ var_DelCallback( pInput, "can-record" ,
+ onGenericCallback, this );
vlc_object_release( pInput );
getIntf()->p_sys->p_input = NULL;
break;
@@ -690,6 +707,14 @@ void VlcProc::on_sample_rate_changed( vlc_object_t* p_obj, vlc_value_t newVal )
pSampleRate->set( UString::fromInt( getIntf(), sampleRate ) );
}
+void VlcProc::on_can_record_changed( vlc_object_t* p_obj, vlc_value_t newVal )
+{
+ input_thread_t* pInput = (input_thread_t*) p_obj;
+
+ VarBoolImpl *pVarRecordable = (VarBoolImpl*)m_cVarRecordable.get();
+ pVarRecordable->set( var_GetBool( pInput, "can-record" ) );
+}
+
void VlcProc::on_random_changed( vlc_object_t* p_obj, vlc_value_t newVal )
{
playlist_t* pPlaylist = (playlist_t*) p_obj;
diff --git a/modules/gui/skins2/src/vlcproc.hpp b/modules/gui/skins2/src/vlcproc.hpp
index 6aa7f31..b4b97fb 100644
--- a/modules/gui/skins2/src/vlcproc.hpp
+++ b/modules/gui/skins2/src/vlcproc.hpp
@@ -91,6 +91,7 @@ class VlcProc: public SkinObject
void on_intf_event_changed( vlc_object_t* p_obj, vlc_value_t newVal );
void on_bit_rate_changed( vlc_object_t* p_obj, vlc_value_t newVal );
void on_sample_rate_changed( vlc_object_t* p_obj, vlc_value_t newVal );
+ void on_can_record_changed( vlc_object_t* p_obj, vlc_value_t newVal );
void on_random_changed( vlc_object_t* p_obj, vlc_value_t newVal );
void on_loop_changed( vlc_object_t* p_obj, vlc_value_t newVal );
@@ -128,6 +129,8 @@ class VlcProc: public SkinObject
VariablePtr m_cVarStopped;
VariablePtr m_cVarPaused;
VariablePtr m_cVarSeekable;
+ VariablePtr m_cVarRecordable;
+ VariablePtr m_cVarRecording;
/// Variables related to the vout
VariablePtr m_cVarFullscreen;
VarBox m_varVoutSize;
More information about the vlc-devel
mailing list