Changeset ad1fb8798056bb4d298aae0d9d053f8872fc4a79

Show
Ignore:
Timestamp:
14/11/07 16:18:02 (1 year ago)
Author:
Jean-Paul Saman <jpsaman@videolan.org>
git-committer:
Jean-Paul Saman <jpsaman@videolan.org> 1195053482 +0000
git-parent:

[e467dc8322347bfa6d74af8854e1004da073297d]

git-author:
Jean-Paul Saman <jpsaman@videolan.org> 1195053482 +0000
Message:

Further factoring out osdmenu parser functionality from osdmenu handling. Started a dummy modules/misc/osd/xml.c osdmenu parser.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • include/vlc_osd.h

    r4ff5e96 rad1fb87  
    398398 
    399399    /* misc parser */ 
    400     module_t        *p_module;  /*< pointer to parser module */ 
     400    module_t        *p_parser;  /*< pointer to parser module */ 
    401401    char            *psz_file;  /*< Config file name */ 
    402402    image_handler_t *p_image;   /*< handler to image loading and conversion libraries */ 
     
    598598VLC_EXPORT( int, osd_Slider, ( vlc_object_t *, spu_t *, int, int, int, int, int, int, short ) ); 
    599599VLC_EXPORT( int, osd_Icon, ( vlc_object_t *, spu_t *, int, int, int, int, int, short ) ); 
    600  
    601 /** 
    602  * Loading and parse the OSD Configuration file 
    603  * 
    604  * These functions load/unload the OSD menu configuration file and 
    605  * 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 ** ) ); 
    609600 
    610601/** @} */ 
  • modules/misc/osd/Modules.am

    re467dc8 rad1fb87  
    11SOURCES_osd_parser = \ 
    22            parser.c \ 
    3             simple.c \ 
    43            osd_menu.c \ 
    54            osd_menu.h \ 
     5            simple.c \ 
    66            xml.c \ 
    77            $(NULL) 
  • modules/misc/osd/parser.c

    r4ff5e96 rad1fb87  
    3939 * Prototypes 
    4040 ***************************************************************************/ 
    41 int osd_parser_simpleOpen ( vlc_object_t *p_this ); 
    42 void osd_parser_simpleClose( vlc_object_t *p_this ); 
     41int E_(osd_parser_simpleOpen) ( vlc_object_t *p_this ); 
     42int  E_(osd_parser_xmlOpen) ( vlc_object_t *p_this ); 
    4343 
    44 int osd_parser_xmlOpen    ( vlc_object_t *p_this ); 
    45 void osd_parser_xmlClose   ( vlc_object_t *p_this ); 
     44static void osd_parser_Close( vlc_object_t *p_this ); 
    4645 
    4746/***************************************************************************** 
     
    5756        add_shortcut( "import-osd" ); 
    5857        set_capability( "osd parser" , 0); 
    59         set_callbacks( osd_parser_simpleOpen, osd_parser_simpleClose ); 
     58        set_callbacks( E_(osd_parser_simpleOpen), osd_parser_Close ); 
    6059 
    6160    add_submodule(); 
     
    6362        add_shortcut( "import-osd-xml" ); 
    6463        set_capability( "osd parser" , 0); 
    65         set_callbacks( osd_parser_xmlOpen, osd_parser_xmlClose ); 
     64        set_callbacks( E_(osd_parser_xmlOpen), osd_parser_Close ); 
    6665 
    6766vlc_module_end(); 
     67 
     68/***************************************************************************** 
     69 * osd_parser_Close: Free all osd menu structure resources 
     70 *****************************************************************************/ 
     71 
     72void 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  
    272272    stream_output/sdp.c \ 
    273273    osd/osd.c \ 
    274     osd/osd_parser.c \ 
    275274    osd/osd_text.c \ 
    276275    osd/osd_widgets.c \ 
  • src/osd/osd.c

    r4ff5e96 rad1fb87  
    22 * osd.c - The OSD Menu core code. 
    33 ***************************************************************************** 
    4  * Copyright (C) 2005 M2X 
     4 * Copyright (C) 2005-2007 M2X 
    55 * $Id$ 
    66 * 
     
    4242static int osd_VolumeStep( vlc_object_t *, int, int ); 
    4343static vlc_bool_t osd_isVisible( osd_menu_t *p_osd ); 
     44static int  osd_ParserLoad( vlc_object_t *, const char *, osd_menu_t ** ); 
     45static void osd_ParserUnload( vlc_object_t *, osd_menu_t ** ); 
    4446 
    4547static vlc_bool_t osd_isVisible( osd_menu_t *p_osd ) 
     
    4951    var_Get( p_osd, "osd-menu-visible", &val ); 
    5052    return val.b_bool; 
     53} 
     54 
     55/***************************************************************************** 
     56 * Wrappers for loading and unloading osd parser modules. 
     57 *****************************************************************************/ 
     58static 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 
     101static 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; 
    51119} 
    52120 
     
    71139        vlc_value_t val; 
    72140 
    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  
    87141        /* Parse configuration file */ 
    88         if( osd_ConfigLoader( p_this, psz_file, &p_osd ) ) 
     142        if( osd_ParserLoad( p_this, psz_file, &p_osd ) ) 
    89143            goto error; 
    90144 
     
    155209    var_Destroy( p_osd, "osd-menu-update" ); 
    156210 
    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 ); 
    167212 
    168213    vlc_mutex_unlock( lockval.p_address );