[vlc-commits] commit: Removed all vlc_object_find in lua osd code. (Laurent Aimar )
git at videolan.org
git at videolan.org
Wed May 26 23:06:49 CEST 2010
vlc | branch: master | Laurent Aimar <fenrir at videolan.org> | Wed May 26 23:05:06 2010 +0200| [a72aa02a860ffcb133eb485548d8dd530c96a04a] | committer: Laurent Aimar
Removed all vlc_object_find in lua osd code.
I highly doubt that the osd register/clear functions are usable...
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a72aa02a860ffcb133eb485548d8dd530c96a04a
---
modules/misc/lua/libs/osd.c | 65 +++++++++++++++++++++++++++----------------
1 files changed, 41 insertions(+), 24 deletions(-)
diff --git a/modules/misc/lua/libs/osd.c b/modules/misc/lua/libs/osd.c
index acc4031..8638876 100644
--- a/modules/misc/lua/libs/osd.c
+++ b/modules/misc/lua/libs/osd.c
@@ -40,6 +40,7 @@
#include "../vlc.h"
#include "../libs.h"
+#include "input.h"
/*****************************************************************************
* OSD
@@ -72,31 +73,36 @@ static int vlclua_osd_icon( lua_State *L )
int i_chan = luaL_optint( L, 2, SPU_DEFAULT_CHANNEL );
if( !i_icon )
return luaL_error( L, "\"%s\" is not a valid osd icon.", psz_icon );
- else
+
+ input_thread_t *p_input = vlclua_get_input_internal( L );
+ if( p_input )
{
- vlc_object_t *p_this = vlclua_get_this( L );
- vout_thread_t *p_vout = vlc_object_find( p_this, VLC_OBJECT_VOUT,
- FIND_ANYWHERE );
+ vout_thread_t *p_vout = input_GetVout( p_input );
if( p_vout )
{
vout_OSDIcon( p_vout, i_chan, i_icon );
vlc_object_release( p_vout );
}
- return 0;
+ vlc_object_release( p_input );
}
+ return 0;
}
static int vlclua_osd_message( lua_State *L )
{
const char *psz_message = luaL_checkstring( L, 1 );
int i_chan = luaL_optint( L, 2, SPU_DEFAULT_CHANNEL );
- vlc_object_t *p_this = vlclua_get_this( L );
- vout_thread_t *p_vout = vlc_object_find( p_this, VLC_OBJECT_VOUT,
- FIND_ANYWHERE );
- if( p_vout )
+
+ input_thread_t *p_input = vlclua_get_input_internal( L );
+ if( p_input )
{
- vout_OSDMessage( p_vout, i_chan, "%s", psz_message );
- vlc_object_release( p_vout );
+ vout_thread_t *p_vout = input_GetVout( p_input );
+ if( p_vout )
+ {
+ vout_OSDMessage( p_vout, i_chan, "%s", psz_message );
+ vlc_object_release( p_vout );
+ }
+ vlc_object_release( p_input );
}
return 0;
}
@@ -129,31 +135,37 @@ static int vlclua_osd_slider( lua_State *L )
if( !i_type )
return luaL_error( L, "\"%s\" is not a valid slider type.",
psz_type );
- else
+
+ input_thread_t *p_input = vlclua_get_input_internal( L );
+ if( p_input )
{
- vlc_object_t *p_this = vlclua_get_this( L );
- vout_thread_t *p_vout = vlc_object_find( p_this, VLC_OBJECT_VOUT,
- FIND_ANYWHERE );
+ vout_thread_t *p_vout = input_GetVout( p_input );
if( p_vout )
{
vout_OSDSlider( p_vout, i_chan, i_position, i_type );
vlc_object_release( p_vout );
}
- return 0;
+ vlc_object_release( p_input );
}
+ return 0;
}
static int vlclua_spu_channel_register( lua_State *L )
{
- int i_chan;
- vlc_object_t *p_this = vlclua_get_this( L );
- vout_thread_t *p_vout = vlc_object_find( p_this, VLC_OBJECT_VOUT,
- FIND_ANYWHERE );
+ input_thread_t *p_input = vlclua_get_input_internal( L );
+ if( !p_input )
+ return luaL_error( L, "Unable to find input." );
+
+ vout_thread_t *p_vout = input_GetVout( p_input );
if( !p_vout )
+ {
+ vlc_object_release( p_input );
return luaL_error( L, "Unable to find vout." );
+ }
- i_chan = vout_RegisterSubpictureChannel( p_vout );
+ int i_chan = vout_RegisterSubpictureChannel( p_vout );
vlc_object_release( p_vout );
+ vlc_object_release( p_input );
lua_pushinteger( L, i_chan );
return 1;
}
@@ -161,14 +173,19 @@ static int vlclua_spu_channel_register( lua_State *L )
static int vlclua_spu_channel_clear( lua_State *L )
{
int i_chan = luaL_checkint( L, 1 );
- vlc_object_t *p_this = vlclua_get_this( L );
- vout_thread_t *p_vout = vlc_object_find( p_this, VLC_OBJECT_VOUT,
- FIND_ANYWHERE );
+ input_thread_t *p_input = vlclua_get_input_internal( L );
+ if( !p_input )
+ return luaL_error( L, "Unable to find input." );
+ vout_thread_t *p_vout = input_GetVout( p_input );
if( !p_vout )
+ {
+ vlc_object_release( p_input );
return luaL_error( L, "Unable to find vout." );
+ }
vout_FlushSubpictureChannel( p_vout, i_chan );
vlc_object_release( p_vout );
+ vlc_object_release( p_input );
return 0;
}
More information about the vlc-commits
mailing list