X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fcontrol%2Fmedia_list_view.c;h=4c830379fc5a8f6343c576482e8dec2a15bc3230;hb=e49d07aa5168d20550034383ab95d9fed15e0263;hp=62818f8274c89b37848e43f52cdff28d70a282bf;hpb=74e5a0727b83ea8bd5ee87dbce7596b990ef14c1;p=vlc diff --git a/src/control/media_list_view.c b/src/control/media_list_view.c index 62818f8274..4c830379fc 100644 --- a/src/control/media_list_view.c +++ b/src/control/media_list_view.c @@ -22,6 +22,10 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + #include #include #include @@ -57,10 +61,10 @@ install_md_listener( libvlc_media_list_view_t * p_mlv, libvlc_media_t * p_md) { libvlc_media_list_t * p_mlist; - if((p_mlist = libvlc_media_subitems( p_md, NULL ))) + if((p_mlist = libvlc_media_subitems( p_md ))) { libvlc_media_list_lock( p_mlist ); - int i, count = libvlc_media_list_count( p_mlist, NULL ); + int i, count = libvlc_media_list_count( p_mlist ); for( i = 0; i < count; i++) { libvlc_event_t added_event; @@ -78,10 +82,10 @@ install_md_listener( libvlc_media_list_view_t * p_mlv, } libvlc_event_attach( p_mlist->p_event_manager, libvlc_MediaListItemAdded, - media_list_item_added, p_mlv, NULL ); + media_list_item_added, p_mlv ); libvlc_event_attach( p_mlist->p_event_manager, libvlc_MediaListItemDeleted, - media_list_item_removed, p_mlv, NULL ); + media_list_item_removed, p_mlv ); libvlc_media_list_unlock( p_mlist ); libvlc_media_list_release( p_mlist ); } @@ -90,7 +94,7 @@ install_md_listener( libvlc_media_list_view_t * p_mlv, /* No mlist, wait for a subitem added event */ libvlc_event_attach( p_md->p_event_manager, libvlc_MediaSubItemAdded, - media_list_subitem_added, p_mlv, NULL ); + media_list_subitem_added, p_mlv ); } } @@ -99,24 +103,20 @@ uninstall_md_listener( libvlc_media_list_view_t * p_mlv, libvlc_media_t * p_md) { libvlc_media_list_t * p_mlist; - libvlc_exception_t ignored_exception; - libvlc_exception_init( &ignored_exception ); libvlc_event_detach( p_md->p_event_manager, libvlc_MediaSubItemAdded, - media_list_subitem_added, p_mlv, &ignored_exception ); - if( libvlc_exception_raised( &ignored_exception ) ) - libvlc_exception_clear( &ignored_exception ); /* We don't care if we encounter an exception */ - if((p_mlist = libvlc_media_subitems( p_md, NULL ))) + media_list_subitem_added, p_mlv ); + if((p_mlist = libvlc_media_subitems( p_md ))) { libvlc_media_list_lock( p_mlist ); libvlc_event_detach( p_mlist->p_event_manager, libvlc_MediaListItemAdded, - media_list_item_added, p_mlv, NULL ); + media_list_item_added, p_mlv ); libvlc_event_detach( p_mlist->p_event_manager, libvlc_MediaListItemDeleted, - media_list_item_removed, p_mlv, NULL ); + media_list_item_removed, p_mlv ); - int i, count = libvlc_media_list_count( p_mlist, NULL ); + int i, count = libvlc_media_list_count( p_mlist ); for( i = 0; i < count; i++) { libvlc_media_t * p_submd; @@ -156,21 +156,21 @@ media_list_subitem_added( const libvlc_event_t * p_event, void * p_user_data ) libvlc_media_t * p_submd = p_event->u.media_subitem_added.new_child; libvlc_media_t * p_md = p_event->p_obj; - if((p_mlist = libvlc_media_subitems( p_md, NULL ))) + if((p_mlist = libvlc_media_subitems( p_md ))) { /* We have a mlist to which we're going to listen to events * thus, no need to wait for SubItemAdded events */ libvlc_event_detach( p_md->p_event_manager, libvlc_MediaSubItemAdded, - media_list_subitem_added, p_mlv, NULL ); + media_list_subitem_added, p_mlv ); libvlc_media_list_lock( p_mlist ); libvlc_event_attach( p_mlist->p_event_manager, libvlc_MediaListItemAdded, - media_list_item_added, p_mlv, NULL ); + media_list_item_added, p_mlv ); libvlc_event_attach( p_mlist->p_event_manager, libvlc_MediaListItemDeleted, - media_list_item_removed, p_mlv, NULL ); + media_list_item_removed, p_mlv ); libvlc_media_list_unlock( p_mlist ); libvlc_media_list_release( p_mlist ); } @@ -199,11 +199,11 @@ libvlc_media_list_view_set_ml_notification_callback( p_mlv->pf_ml_item_removed = item_removed; libvlc_event_attach( p_mlv->p_mlist->p_event_manager, libvlc_MediaListItemAdded, - media_list_item_added, p_mlv, NULL ); + media_list_item_added, p_mlv ); libvlc_event_attach( p_mlv->p_mlist->p_event_manager, libvlc_MediaListItemDeleted, - media_list_item_removed, p_mlv, NULL ); - int i, count = libvlc_media_list_count( p_mlv->p_mlist, NULL ); + media_list_item_removed, p_mlv ); + int i, count = libvlc_media_list_count( p_mlv->p_mlist ); for( i = 0; i < count; i++) { libvlc_media_t * p_md; @@ -303,26 +303,33 @@ libvlc_media_list_view_new( libvlc_media_list_t * p_mlist, libvlc_media_list_view_children_at_index_func_t pf_children_at_index, libvlc_media_list_view_constructor_func_t pf_constructor, libvlc_media_list_view_release_func_t pf_release, - void * this_view_data, - libvlc_exception_t * p_e ) + void * this_view_data ) { libvlc_media_list_view_t * p_mlv; p_mlv = calloc( 1, sizeof(libvlc_media_list_view_t) ); - if( !p_mlv ) + if( unlikely(p_mlv == NULL) ) + { + libvlc_printerr( "Not enough memory" ); return NULL; + } p_mlv->p_libvlc_instance = p_mlist->p_libvlc_instance; p_mlv->p_event_manager = libvlc_event_manager_new( p_mlist, - p_mlv->p_libvlc_instance, p_e ); + p_mlv->p_libvlc_instance ); + if( unlikely(p_mlv->p_event_manager == NULL) ) + { + free(p_mlv); + return NULL; + } libvlc_event_manager_register_event_type( p_mlv->p_event_manager, - libvlc_MediaListViewItemAdded, p_e ); + libvlc_MediaListViewItemAdded ); libvlc_event_manager_register_event_type( p_mlv->p_event_manager, - libvlc_MediaListViewWillAddItem, p_e ); + libvlc_MediaListViewWillAddItem ); libvlc_event_manager_register_event_type( p_mlv->p_event_manager, - libvlc_MediaListViewItemDeleted, p_e ); + libvlc_MediaListViewItemDeleted ); libvlc_event_manager_register_event_type( p_mlv->p_event_manager, - libvlc_MediaListViewWillDeleteItem, p_e ); + libvlc_MediaListViewWillDeleteItem ); libvlc_media_list_retain( p_mlist ); p_mlv->p_mlist = p_mlist; @@ -379,15 +386,15 @@ libvlc_media_list_view_release( libvlc_media_list_view_t * p_mlv ) { libvlc_event_detach( p_mlv->p_mlist->p_event_manager, libvlc_MediaListItemAdded, - media_list_item_added, p_mlv, NULL ); + media_list_item_added, p_mlv ); } if( p_mlv->pf_ml_item_removed ) { libvlc_event_detach( p_mlv->p_mlist->p_event_manager, libvlc_MediaListItemDeleted, - media_list_item_removed, p_mlv, NULL ); + media_list_item_removed, p_mlv ); } - int i, count = libvlc_media_list_count( p_mlv->p_mlist, NULL ); + int i, count = libvlc_media_list_count( p_mlv->p_mlist ); for( i = 0; i < count; i++) { libvlc_media_t * p_md; @@ -445,7 +452,7 @@ libvlc_media_list_view_children_for_item( libvlc_media_list_view_t * p_mlv, libvlc_media_list_t * p_mlist; libvlc_media_list_view_t * ret; - p_mlist = libvlc_media_subitems(p_md, p_e); + p_mlist = libvlc_media_subitems(p_md); if(!p_mlist) return NULL; ret = p_mlv->pf_constructor( p_mlist, p_e ); @@ -471,7 +478,8 @@ libvlc_media_list_view_children_for_item( libvlc_media_list_view_t * p_mlv, { \ if( p_mlv->pf_##name ) \ return p_mlv->pf_##name ARGS(__VA_ARGS__) ; \ - libvlc_exception_raise( p_e, "No '" #name "' method in this media_list_view" ); \ + libvlc_exception_raise( p_e ); \ + libvlc_printerr( "No '" #name "' method in this media_list_view" ); \ return default_ret_value;\ } @@ -486,7 +494,8 @@ libvlc_media_list_view_children_for_item( libvlc_media_list_view_t * p_mlv, p_mlv->pf_##name ARGS(__VA_ARGS__) ; \ return; \ } \ - libvlc_exception_raise( p_e, "No '" #name "' method in this media_list_view" ); \ + libvlc_exception_raise( p_e ); \ + libvlc_printerr( "No '" #name "' method in this media_list_view" ); \ }