Changeset ad1fb8798056bb4d298aae0d9d053f8872fc4a79
- Timestamp:
- 14/11/07 16:18:02 (1 year ago)
- git-parent:
- Files:
-
- include/vlc_osd.h (modified) (2 diffs)
- modules/misc/osd/Modules.am (modified) (1 diff)
- modules/misc/osd/parser.c (modified) (3 diffs)
- src/Makefile.am (modified) (1 diff)
- src/osd/osd.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
include/vlc_osd.h
r4ff5e96 rad1fb87 398 398 399 399 /* misc parser */ 400 module_t *p_ module; /*< pointer to parser module */400 module_t *p_parser; /*< pointer to parser module */ 401 401 char *psz_file; /*< Config file name */ 402 402 image_handler_t *p_image; /*< handler to image loading and conversion libraries */ … … 598 598 VLC_EXPORT( int, osd_Slider, ( vlc_object_t *, spu_t *, int, int, int, int, int, int, short ) ); 599 599 VLC_EXPORT( int, osd_Icon, ( vlc_object_t *, spu_t *, int, int, int, int, int, short ) ); 600 601 /**602 * Loading and parse the OSD Configuration file603 *604 * These functions load/unload the OSD menu configuration file and605 * create/destroy the themable OSD menu structure on the OSD object.606 */607 VLC_EXPORT( int, osd_ConfigLoader, ( vlc_object_t *, const char *, osd_menu_t ** ) );608 VLC_EXPORT( void, osd_ConfigUnload, ( vlc_object_t *, osd_menu_t ** ) );609 600 610 601 /** @} */ modules/misc/osd/Modules.am
re467dc8 rad1fb87 1 1 SOURCES_osd_parser = \ 2 2 parser.c \ 3 simple.c \4 3 osd_menu.c \ 5 4 osd_menu.h \ 5 simple.c \ 6 6 xml.c \ 7 7 $(NULL) modules/misc/osd/parser.c
r4ff5e96 rad1fb87 39 39 * Prototypes 40 40 ***************************************************************************/ 41 int osd_parser_simpleOpen( vlc_object_t *p_this );42 void osd_parser_simpleClose( vlc_object_t *p_this );41 int E_(osd_parser_simpleOpen) ( vlc_object_t *p_this ); 42 int E_(osd_parser_xmlOpen) ( vlc_object_t *p_this ); 43 43 44 int osd_parser_xmlOpen ( vlc_object_t *p_this ); 45 void osd_parser_xmlClose ( vlc_object_t *p_this ); 44 static void osd_parser_Close( vlc_object_t *p_this ); 46 45 47 46 /***************************************************************************** … … 57 56 add_shortcut( "import-osd" ); 58 57 set_capability( "osd parser" , 0); 59 set_callbacks( osd_parser_simpleOpen, osd_parser_simpleClose );58 set_callbacks( E_(osd_parser_simpleOpen), osd_parser_Close ); 60 59 61 60 add_submodule(); … … 63 62 add_shortcut( "import-osd-xml" ); 64 63 set_capability( "osd parser" , 0); 65 set_callbacks( osd_parser_xmlOpen, osd_parser_xmlClose );64 set_callbacks( E_(osd_parser_xmlOpen), osd_parser_Close ); 66 65 67 66 vlc_module_end(); 67 68 /***************************************************************************** 69 * osd_parser_Close: Free all osd menu structure resources 70 *****************************************************************************/ 71 72 void osd_parser_Close ( vlc_object_t *p_this ) 73 { 74 osd_menu_t *p_menu = (osd_menu_t *) p_this; 75 if( p_menu ) 76 osd_MenuFree( p_this, &p_menu ); 77 } src/Makefile.am
r632c854 rad1fb87 272 272 stream_output/sdp.c \ 273 273 osd/osd.c \ 274 osd/osd_parser.c \275 274 osd/osd_text.c \ 276 275 osd/osd_widgets.c \ src/osd/osd.c
r4ff5e96 rad1fb87 2 2 * osd.c - The OSD Menu core code. 3 3 ***************************************************************************** 4 * Copyright (C) 2005 M2X4 * Copyright (C) 2005-2007 M2X 5 5 * $Id$ 6 6 * … … 42 42 static int osd_VolumeStep( vlc_object_t *, int, int ); 43 43 static vlc_bool_t osd_isVisible( osd_menu_t *p_osd ); 44 static int osd_ParserLoad( vlc_object_t *, const char *, osd_menu_t ** ); 45 static void osd_ParserUnload( vlc_object_t *, osd_menu_t ** ); 44 46 45 47 static vlc_bool_t osd_isVisible( osd_menu_t *p_osd ) … … 49 51 var_Get( p_osd, "osd-menu-visible", &val ); 50 52 return val.b_bool; 53 } 54 55 /***************************************************************************** 56 * Wrappers for loading and unloading osd parser modules. 57 *****************************************************************************/ 58 static int osd_ParserLoad( vlc_object_t *p_this, const char *psz_file, osd_menu_t **pp_menu ) 59 { 60 osd_menu_t *p_menu = *pp_menu; 61 62 if( pp_menu && p_menu ) return VLC_EGENERIC; 63 64 p_menu = vlc_object_create( p_this, VLC_OBJECT_OSDMENU ); 65 if( !p_menu ) 66 { 67 msg_Err( p_this, "out of memory" ); 68 return VLC_ENOMEM; 69 } 70 vlc_object_attach( p_this, p_menu ); 71 72 /* Stuff needed for Parser */ 73 p_menu->psz_file = strdup( psz_file ); 74 p_menu->p_image = image_HandlerCreate( p_this ); 75 if( !p_menu->p_image || !p_menu->psz_file ) 76 { 77 msg_Err( p_this, "unable to load images, aborting .." ); 78 osd_ParserUnload( p_this, pp_menu ); 79 return VLC_ENOMEM; 80 } 81 else 82 { 83 char *psz_type; 84 char *psz_ext = strrchr( p_menu->psz_file, '.' ); 85 86 if( psz_ext && !strcmp( psz_ext, ".cfg") ) 87 psz_type = "import-osd"; 88 else 89 psz_type = "import-osd-xml"; 90 91 p_menu->p_parser = module_Need( p_menu, "osd parser", psz_type, VLC_TRUE ); 92 if( !p_menu->p_parser ) 93 { 94 osd_ParserUnload( p_this, pp_menu ); 95 return VLC_ENOOBJ; 96 } 97 } 98 return VLC_SUCCESS; 99 } 100 101 static void osd_ParserUnload( vlc_object_t *p_this, osd_menu_t **pp_menu ) 102 { 103 osd_menu_t *p_menu = (osd_menu_t *) *pp_menu; 104 105 if( p_menu->p_parser ) 106 { 107 module_Unneed( p_menu, p_menu->p_parser ); 108 } 109 p_menu->p_parser = NULL; 110 111 if( p_menu->p_image ) 112 image_HandlerDelete( p_menu->p_image ); 113 if( p_menu->psz_file ) 114 free( p_menu->psz_file ); 115 116 vlc_object_detach( p_menu ); 117 vlc_object_destroy( p_menu ); 118 p_menu = NULL; 51 119 } 52 120 … … 71 139 vlc_value_t val; 72 140 73 msg_Dbg( p_this, "creating OSD menu object" );74 if( ( p_osd = vlc_object_create( p_this, VLC_OBJECT_OSDMENU ) ) == NULL )75 {76 msg_Err( p_this, "out of memory" );77 vlc_mutex_unlock( lockval.p_address );78 return NULL;79 }80 81 /* Stuff needed for Parser */82 p_osd->p_image = image_HandlerCreate( p_this );83 if( !p_osd->p_image )84 msg_Err( p_this, "unable to load images" );85 p_osd->psz_file = strdup( psz_file );86 87 141 /* Parse configuration file */ 88 if( osd_ ConfigLoader( p_this, psz_file, &p_osd ) )142 if( osd_ParserLoad( p_this, psz_file, &p_osd ) ) 89 143 goto error; 90 144 … … 155 209 var_Destroy( p_osd, "osd-menu-update" ); 156 210 157 osd_ConfigUnload( p_this, &p_osd ); 158 159 if( p_osd->p_image ) 160 image_HandlerDelete( p_osd->p_image ); 161 if( p_osd->psz_file ) 162 free( p_osd->psz_file ); 163 164 vlc_object_detach( p_osd ); 165 vlc_object_destroy( p_osd ); 166 p_osd = NULL; 211 osd_ParserUnload( p_this, &p_osd ); 167 212 168 213 vlc_mutex_unlock( lockval.p_address );
