* Add hooks for getting/setting variables (not working yet)

* Really change VLC_Get to VLC_VariableGet
This commit is contained in:
Clément Stenac 2004-09-28 13:55:00 +00:00
parent 31b1820ebd
commit 8750bd1e46
6 changed files with 90 additions and 5 deletions

View File

@ -16,6 +16,15 @@ interface VlcIntf : nsISupports
PRInt64 get_volume();
void mute();
/* Get/Set variable */
void set_int_variable( in string psz_var, in PRInt64 i_value );
void set_bool_variable( in string psz_var, in PRBool b_value );
void set_str_variable( in string psz_var, in string psz_value );
PRInt64 get_int_variable( in string psz_var );
PRBool get_bool_variable( in string psz_var );
string get_str_variable( in string psz_var );
/* Playlist management */
void clear_playlist();
void add_item( in string psz_name);

View File

@ -128,6 +128,82 @@ NS_IMETHODIMP VlcPeer::Fullscreen()
return NS_OK;
}
/* Set/Get vlc variables */
NS_IMETHODIMP VlcPeer::Set_int_variable(const char *psz_var, PRInt64 value )
{
vlc_value_t val;
val.i_int = value;
if( p_plugin )
{
VLC_VariableSet( p_plugin->i_vlc, psz_var, val );
}
return NS_OK;
}
NS_IMETHODIMP VlcPeer::Set_str_variable(const char *psz_var, const char *value )
{
vlc_value_t val;
val.psz_string = strdup( value );
if( p_plugin )
{
VLC_VariableSet( p_plugin->i_vlc, psz_var, val );
}
return NS_OK;
}
NS_IMETHODIMP VlcPeer::Set_bool_variable(const char *psz_var, PRBool value )
{
vlc_value_t val;
val.b_bool = value >= 1 ? VLC_TRUE : VLC_FALSE;
if( p_plugin )
{
VLC_VariableSet( p_plugin->i_vlc, psz_var, val );
}
return NS_OK;
}
NS_IMETHODIMP VlcPeer::Get_int_variable( const char *psz_var, PRInt64 *result )
{
vlc_value_t val;
if( p_plugin )
{
fprintf(stderr, "Choppage de %s\n", psz_var );
VLC_VariableGet( p_plugin->i_vlc, psz_var, &val );
fprintf(stderr, "Valeur %i\n", val.i_int );
*result = (PRInt64)val.i_int;
}
return NS_OK;
}
NS_IMETHODIMP VlcPeer::Get_bool_variable( const char *psz_var,PRBool *result )
{
vlc_value_t val;
if( p_plugin )
{
VLC_VariableGet( p_plugin->i_vlc, psz_var, &val );
*result = (PRBool)val.b_bool;
}
return NS_OK;
}
NS_IMETHODIMP VlcPeer::Get_str_variable( const char *psz_var, char **result )
{
vlc_value_t val;
if( p_plugin )
{
fprintf(stderr, "Choppage de %s\n", psz_var );
VLC_VariableGet( p_plugin->i_vlc, psz_var, &val );
if( val.psz_string )
{
*result = strdup( val.psz_string );
}
else
{
*result = strdup( "" );
}
}
return NS_OK;
}
/* Playlist control */
NS_IMETHODIMP VlcPeer::Clear_playlist()

View File

@ -2,7 +2,7 @@
* vlcpeer.h: scriptable peer descriptor
*****************************************************************************
* Copyright (C) 2002 VideoLAN
* $Id: vlcpeer.h,v 1.3 2003/04/09 16:18:36 sam Exp $
* $Id$
*
* Authors: Samuel Hocevar <sam@zoy.org>
*

View File

@ -2,7 +2,7 @@
* vlcplugin.cpp: a VLC plugin for Mozilla
*****************************************************************************
* Copyright (C) 2002 VideoLAN
* $Id: vlcplugin.cpp,v 1.6 2003/10/23 17:04:39 sam Exp $
* $Id$
*
* Authors: Samuel Hocevar <sam@zoy.org>
*

View File

@ -2,7 +2,7 @@
* vlcplugin.h: a VLC plugin for Mozilla
*****************************************************************************
* Copyright (C) 2002 VideoLAN
* $Id: vlcplugin.h,v 1.13 2003/10/23 17:04:40 sam Exp $
* $Id$
*
* Authors: Samuel Hocevar <sam@zoy.org>
*

View File

@ -991,7 +991,7 @@ int VLC_VariableSet( int i_object, char const *psz_var, vlc_value_t value )
/*****************************************************************************
* VLC_VariableGet: get a vlc variable
*****************************************************************************/
int VLC_Get( int i_object, char const *psz_var, vlc_value_t *p_value )
int VLC_VariableGet( int i_object, char const *psz_var, vlc_value_t *p_value )
{
vlc_t *p_vlc = vlc_current_object( i_object );
int i_ret;
@ -1001,7 +1001,7 @@ int VLC_Get( int i_object, char const *psz_var, vlc_value_t *p_value )
return VLC_ENOOBJ;
}
i_ret = var_Get( p_vlc, psz_var, p_value );
i_ret = var_Get( p_vlc , psz_var, p_value );
if( i_object ) vlc_object_release( p_vlc );
return i_ret;