From: RĂ©mi Denis-Courmont Date: Wed, 3 Feb 2010 20:07:54 +0000 (+0200) Subject: LibVLC VLM: save a few kilobytes of code X-Git-Tag: 1.1.0-ff~475 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=0e4fb813320dcf7e6dc80a4b53fdf030ff72e06e;p=vlc LibVLC VLM: save a few kilobytes of code --- diff --git a/src/control/vlm.c b/src/control/vlm.c index 80b510a107..dd8a4598aa 100644 --- a/src/control/vlm.c +++ b/src/control/vlm.c @@ -469,27 +469,32 @@ int libvlc_vlm_del_media( libvlc_instance_t *p_instance, const char *psz_name ) return 0; } +static vlm_media_t *get_media( libvlc_instance_t *p_instance, + vlm_t **restrict pp_vlm, const char *name ) +{ + vlm_media_t *p_media; + vlm_t *p_vlm; + int64_t id; + + VLM_RET(p_vlm, NULL); + if( vlm_Control( p_vlm, VLM_GET_MEDIA_ID, name, &id ) || + vlm_Control( p_vlm, VLM_GET_MEDIA, id, &p_media ) ) + return NULL; + *pp_vlm = p_vlm; + return p_media; +} + #define VLM_CHANGE(psz_error, code ) do { \ - vlm_media_t *p_media; \ vlm_t *p_vlm; \ - int64_t id; \ - VLM_RET(p_vlm, -1); \ - if( vlm_Control( p_vlm, VLM_GET_MEDIA_ID, psz_name, &id ) || \ - vlm_Control( p_vlm, VLM_GET_MEDIA, id, &p_media ) ) { \ - libvlc_printerr( psz_error, psz_name ); \ - return -1; \ - } \ - if( !p_media ) goto error; \ - \ - code; \ - \ - if( vlm_Control( p_vlm, VLM_CHANGE_MEDIA, p_media ) ) { \ + vlm_media_t *p_media = get_media( p_instance, &p_vlm, psz_name ); \ + if( p_media != NULL ) { \ + code; \ + if( vlm_Control( p_vlm, VLM_CHANGE_MEDIA, p_media ) ) \ + p_vlm = NULL; \ vlm_media_Delete( p_media ); \ - goto error; \ + if( p_vlm != NULL ) \ + return 0; \ } \ - vlm_media_Delete( p_media ); \ - return 0; \ - error: \ libvlc_printerr( psz_error, psz_name ); \ return -1; \ } while(0)