From: Rémi Denis-Courmont Date: Sun, 31 Jan 2010 19:01:02 +0000 (+0200) Subject: LibVLC: remove unused and buggy media list views X-Git-Tag: 1.1.0-ff~590 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=6ccb0c4b9d60b5be0518b2f990e3256da1db4a82;p=vlc LibVLC: remove unused and buggy media list views --- diff --git a/include/vlc/libvlc_events.h b/include/vlc/libvlc_events.h index 1055262253..e6af9b25da 100644 --- a/include/vlc/libvlc_events.h +++ b/include/vlc/libvlc_events.h @@ -204,28 +204,6 @@ struct libvlc_event_t int index; } media_list_will_delete_item; - /* media list view */ - struct - { - libvlc_media_t * item; - int index; - } media_list_view_item_added; - struct - { - libvlc_media_t * item; - int index; - } media_list_view_will_add_item; - struct - { - libvlc_media_t * item; - int index; - } media_list_view_item_deleted; - struct - { - libvlc_media_t * item; - int index; - } media_list_view_will_delete_item; - /* media list player */ struct { diff --git a/include/vlc/libvlc_media_list_view.h b/include/vlc/libvlc_media_list_view.h deleted file mode 100644 index de48d35c91..0000000000 --- a/include/vlc/libvlc_media_list_view.h +++ /dev/null @@ -1,119 +0,0 @@ -/***************************************************************************** - * libvlc_media_list.h: libvlc_media_list API - ***************************************************************************** - * Copyright (C) 1998-2008 the VideoLAN team - * $Id$ - * - * Authors: Pierre d'Herbemont - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. - *****************************************************************************/ - -#ifndef LIBVLC_MEDIA_LIST_VIEW_H -#define LIBVLC_MEDIA_LIST_VIEW_H 1 - -/** - * \file - * This file defines libvlc_media_list API - */ - -# ifdef __cplusplus -extern "C" { -# endif - -/***************************************************************************** - * Media List View - *****************************************************************************/ -/** \defgroup libvlc_media_list_view libvlc_media_list_view - * \ingroup libvlc - * LibVLC Media List View: represents a media_list using a different layout. - * The layout can be a flat one without hierarchy, a hierarchical one. - * - * Other type of layout, such as orderer media_list layout could be implemented - * with this class. - * @{ */ - -/** - * Retain reference to a media list view - * - * \param p_mlv a media list view created with libvlc_media_list_view_new() - */ -VLC_PUBLIC_API void - libvlc_media_list_view_retain( libvlc_media_list_view_t * p_mlv ); - -/** - * Release reference to a media list view. If the refcount reaches 0, then - * the object will be released. - * - * \param p_mlv a media list view created with libvlc_media_list_view_new() - */ -VLC_PUBLIC_API void - libvlc_media_list_view_release( libvlc_media_list_view_t * p_mlv ); - -/** - * Get libvlc_event_manager from this media list view instance. - * The p_event_manager is immutable, so you don't have to hold the lock - * - * \param p_mlv a media list view instance - * \return libvlc_event_manager - */ -VLC_PUBLIC_API libvlc_event_manager_t * - libvlc_media_list_view_event_manager( libvlc_media_list_view_t * p_mlv ); - -/** - * Get count on media list view items - * - * \param p_mlv a media list view instance - * \param p_e initialized exception object - * \return number of items in media list view - */ -VLC_PUBLIC_API int - libvlc_media_list_view_count( libvlc_media_list_view_t * p_mlv, - libvlc_exception_t * p_e ); - -/** - * List media instance in media list view at an index position - * - * \param p_mlv a media list view instance - * \param i_index index position in array where to insert - * \param p_e initialized exception object - * \return media instance at position i_pos and libvlc_media_retain() has been called to increase the refcount on this object. - */ -VLC_PUBLIC_API libvlc_media_t * - libvlc_media_list_view_item_at_index( libvlc_media_list_view_t * p_mlv, - int i_index, - libvlc_exception_t * p_e ); - -VLC_PUBLIC_API libvlc_media_list_view_t * - libvlc_media_list_view_children_at_index( libvlc_media_list_view_t * p_mlv, - int index, - libvlc_exception_t * p_e ); - -VLC_PUBLIC_API libvlc_media_list_view_t * - libvlc_media_list_view_children_for_item( libvlc_media_list_view_t * p_mlv, - libvlc_media_t * p_md, - libvlc_exception_t * p_e ); - -VLC_PUBLIC_API libvlc_media_list_t * - libvlc_media_list_view_parent_media_list( libvlc_media_list_view_t * p_mlv, - libvlc_exception_t * p_e ); - -/** @} media_list_view */ - -# ifdef __cplusplus -} -# endif - -#endif /* LIBVLC_MEDIA_LIST_VIEW_H */ diff --git a/include/vlc/vlc.h b/include/vlc/vlc.h index 0f34b57f3f..73b4922a75 100644 --- a/include/vlc/vlc.h +++ b/include/vlc/vlc.h @@ -42,7 +42,6 @@ extern "C" { #include #include #include -#include #include #include #include diff --git a/po/POTFILES.in b/po/POTFILES.in index 51cd1a29fb..0b308e115c 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -84,9 +84,6 @@ src/config/intf.c src/control/audio.c src/control/core.c src/control/event.c -src/control/flat_media_list_view.c -src/control/hierarchical_media_list_view.c -src/control/hierarchical_node_media_list_view.c src/control/libvlc_internal.h src/control/log.c src/control/media.c @@ -99,7 +96,6 @@ src/control/media_library.c src/control/media_list.c src/control/media_list_path.h src/control/media_list_player.c -src/control/media_list_view.c src/control/media_player.c src/control/playlist.c src/control/video.c diff --git a/src/Makefile.am b/src/Makefile.am index c4c86fc3c0..0ec0b8421d 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -34,7 +34,6 @@ pkginclude_HEADERS = \ ../include/vlc/libvlc_media_library.h \ ../include/vlc/libvlc_media_list.h \ ../include/vlc/libvlc_media_list_player.h \ - ../include/vlc/libvlc_media_list_view.h \ ../include/vlc/libvlc_media_player.h \ ../include/vlc/libvlc_structures.h \ ../include/vlc/libvlc_vlm.h \ @@ -492,7 +491,6 @@ SOURCES_libvlc_control = \ control/event_internal.h \ control/media_internal.h \ control/media_list_internal.h \ - control/media_list_view_internal.h \ control/media_player_internal.h \ control/core.c \ control/error.c \ @@ -503,15 +501,11 @@ SOURCES_libvlc_control = \ control/audio.c \ control/event.c \ control/event_async.c \ - control/flat_media_list_view.c \ - control/hierarchical_media_list_view.c \ - control/hierarchical_node_media_list_view.c \ control/media.c \ control/media_player.c \ control/media_list.c \ control/media_list_path.h \ control/media_list_player.c \ - control/media_list_view.c \ control/media_library.c \ control/mediacontrol_internal.h \ control/mediacontrol_core.c \ diff --git a/src/control/flat_media_list_view.c b/src/control/flat_media_list_view.c deleted file mode 100644 index 2017e754a6..0000000000 --- a/src/control/flat_media_list_view.c +++ /dev/null @@ -1,198 +0,0 @@ -/***************************************************************************** - * flat_media_list_view.c: libvlc flat media list view functions. - ***************************************************************************** - * Copyright (C) 2007 the VideoLAN team - * $Id$ - * - * Authors: Pierre d'Herbemont - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. - *****************************************************************************/ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include - -#include -#include -#include -#include - -#include "media_list_view_internal.h" - - -//#define DEBUG_FLAT_VIEW - -#ifdef DEBUG_FLAT_VIEW -# define trace( fmt, ... ) printf( "%s(): " fmt, __FUNCTION__, ##__VA_ARGS__ ) -#else -# define trace( ... ) -#endif - -struct libvlc_media_list_view_private_t -{ - vlc_array_t array; -}; - -/* - * Private functions - */ - -/************************************************************************** - * ml_item_added (private) (Callback from media_list_view item_added) - **************************************************************************/ -static void -ml_item_added( const libvlc_event_t * p_event, libvlc_media_list_view_t * p_mlv ) -{ - int index = vlc_array_count( &p_mlv->p_this_view_data->array ); - libvlc_media_t * p_md = p_event->u.media_list_item_added.item; - libvlc_media_retain( p_md ); - trace("appending item at index %d\n", index); - - libvlc_media_list_view_will_add_item( p_mlv, p_md, index ); - vlc_array_append( &p_mlv->p_this_view_data->array, p_md ); - libvlc_media_list_view_item_added( p_mlv, p_md, index ); -} - -/************************************************************************** - * ml_item_removed (private) (Callback from media_list_view) - **************************************************************************/ -static void -ml_item_removed( const libvlc_event_t * p_event, libvlc_media_list_view_t * p_mlv ) -{ - libvlc_media_t * p_md = p_event->u.media_list_item_deleted.item; - int i = vlc_array_index_of_item( &p_mlv->p_this_view_data->array, p_md ); - if( i >= 0 ) - { - libvlc_media_list_view_will_delete_item( p_mlv, p_md, i ); - vlc_array_remove( &p_mlv->p_this_view_data->array, i ); - libvlc_media_list_view_item_deleted( p_mlv, p_md, i ); - libvlc_media_release( p_md ); - } -} - -/************************************************************************** - * flat_media_list_view_count (private) - * (called by media_list_view_count) - **************************************************************************/ -static int -flat_media_list_view_count( libvlc_media_list_view_t * p_mlv, - libvlc_exception_t * p_e ) -{ - (void)p_e; - return vlc_array_count( &p_mlv->p_this_view_data->array ); -} - -/************************************************************************** - * flat_media_list_view_item_at_index (private) - * (called by flat_media_list_view_item_at_index) - **************************************************************************/ -static libvlc_media_t * -flat_media_list_view_item_at_index( libvlc_media_list_view_t * p_mlv, - int index, - libvlc_exception_t * p_e ) -{ - libvlc_media_t * p_md; - (void)p_e; - p_md = vlc_array_item_at_index( &p_mlv->p_this_view_data->array, index ); - libvlc_media_retain( p_md ); - return p_md; -} - -/************************************************************************** - * flat_media_list_view_item_at_index (private) - * (called by flat_media_list_view_item_at_index) - **************************************************************************/ -static libvlc_media_list_view_t * -flat_media_list_view_children_at_index( libvlc_media_list_view_t * p_mlv, - int index, - libvlc_exception_t * p_e ) -{ - (void)p_mlv; (void)index; (void)p_e; - return NULL; -} - -/************************************************************************** - * flat_media_list_view_release (private) - * (called by media_list_view_release) - **************************************************************************/ -static void -flat_media_list_view_release( libvlc_media_list_view_t * p_mlv ) -{ - vlc_array_clear( &p_mlv->p_this_view_data->array ); - free( p_mlv->p_this_view_data ); -} - -/* - * Public libvlc functions - */ - -/* Little helper */ -static void -import_mlist_rec( libvlc_media_list_view_t * p_mlv, - libvlc_media_list_t * p_mlist, - libvlc_exception_t * p_e ) -{ - int i, count; - count = libvlc_media_list_count( p_mlist ); - for( i = 0; i < count; i++ ) - { - libvlc_media_t * p_md; - libvlc_media_list_t * p_submlist; - p_md = libvlc_media_list_item_at_index( p_mlist, i, p_e ); - vlc_array_append( &p_mlv->p_this_view_data->array, p_md ); - p_submlist = libvlc_media_subitems( p_md ); - if( p_submlist ) - { - libvlc_media_list_lock( p_submlist ); - import_mlist_rec( p_mlv, p_submlist, p_e ); - libvlc_media_list_unlock( p_submlist ); - libvlc_media_list_release( p_submlist ); - } - /* No need to release the md, as we want to retain it, as it is - * stored in our array */ - } -} - -/************************************************************************** - * libvlc_media_list_flat_view (Public) - **************************************************************************/ -libvlc_media_list_view_t * -libvlc_media_list_flat_view( libvlc_media_list_t * p_mlist, - libvlc_exception_t * p_e ) -{ - trace("\n"); - libvlc_media_list_view_t * p_mlv; - struct libvlc_media_list_view_private_t * p_this_view_data; - p_this_view_data = malloc(sizeof(struct libvlc_media_list_view_private_t)); - vlc_array_init( &p_this_view_data->array ); - p_mlv = libvlc_media_list_view_new( p_mlist, - flat_media_list_view_count, - flat_media_list_view_item_at_index, - flat_media_list_view_children_at_index, - libvlc_media_list_flat_view, - flat_media_list_view_release, - p_this_view_data ); - libvlc_media_list_lock( p_mlist ); - import_mlist_rec( p_mlv, p_mlist, p_e ); - libvlc_media_list_view_set_ml_notification_callback( p_mlv, - ml_item_added, - ml_item_removed ); - libvlc_media_list_unlock( p_mlist ); - - return p_mlv; -} diff --git a/src/control/hierarchical_media_list_view.c b/src/control/hierarchical_media_list_view.c deleted file mode 100644 index 1283fad064..0000000000 --- a/src/control/hierarchical_media_list_view.c +++ /dev/null @@ -1,191 +0,0 @@ -/***************************************************************************** - * hierarchical_media_list_view.c: libvlc hierarchical media list view functs. - ***************************************************************************** - * Copyright (C) 2007 the VideoLAN team - * $Id$ - * - * Authors: Pierre d'Herbemont - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. - *****************************************************************************/ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include -#include -#include - -#include "media_list_internal.h" -#include "media_list_view_internal.h" - -//#define DEBUG_HIERARCHICAL_VIEW - -#ifdef DEBUG_HIERARCHICAL_VIEW -# define trace( fmt, ... ) printf( "%s(): " fmt, __FUNCTION__, ##__VA_ARGS__ ) -#else -# define trace( ... ) -#endif - -/* - * Private functions - */ - -/************************************************************************** - * flat_media_list_view_count (private) - * (called by media_list_view_count) - **************************************************************************/ -static int -hierarch_media_list_view_count( libvlc_media_list_view_t * p_mlv, - libvlc_exception_t * p_e ) -{ - VLC_UNUSED(p_e); - return libvlc_media_list_count( p_mlv->p_mlist ); -} - -/************************************************************************** - * flat_media_list_view_item_at_index (private) - * (called by flat_media_list_view_item_at_index) - **************************************************************************/ -static libvlc_media_t * -hierarch_media_list_view_item_at_index( libvlc_media_list_view_t * p_mlv, - int index, - libvlc_exception_t * p_e ) -{ - return libvlc_media_list_item_at_index( p_mlv->p_mlist, index, p_e ); -} - -/************************************************************************** - * flat_media_list_view_item_at_index (private) - * (called by flat_media_list_view_item_at_index) - **************************************************************************/ -static libvlc_media_list_view_t * -hierarch_media_list_view_children_at_index( libvlc_media_list_view_t * p_mlv, - int index, - libvlc_exception_t * p_e ) -{ - libvlc_media_t * p_md; - libvlc_media_list_t * p_submlist; - libvlc_media_list_view_t * p_ret; - p_md = libvlc_media_list_item_at_index( p_mlv->p_mlist, index, p_e ); - if( !p_md ) return NULL; - p_submlist = libvlc_media_subitems( p_md ); - libvlc_media_release( p_md ); - if( !p_submlist ) return NULL; - p_ret = libvlc_media_list_hierarchical_view( p_submlist ); - libvlc_media_list_release( p_submlist ); - - return p_ret; -} - -/************************************************************************** - * media_list_(item|will)_* (private) (Event callback) - **************************************************************************/ -static void -media_list_item_added( const libvlc_event_t * p_event, void * user_data ) -{ - libvlc_media_t * p_md; - libvlc_media_list_view_t * p_mlv = user_data; - int index = p_event->u.media_list_item_added.index; - p_md = p_event->u.media_list_item_added.item; - libvlc_media_list_view_item_added( p_mlv, p_md, index ); -} -static void -media_list_will_add_item( const libvlc_event_t * p_event, void * user_data ) -{ - libvlc_media_t * p_md; - libvlc_media_list_view_t * p_mlv = user_data; - int index = p_event->u.media_list_will_add_item.index; - p_md = p_event->u.media_list_will_add_item.item; - libvlc_media_list_view_will_add_item( p_mlv, p_md, index ); -} -static void -media_list_item_deleted( const libvlc_event_t * p_event, void * user_data ) -{ - libvlc_media_t * p_md; - libvlc_media_list_view_t * p_mlv = user_data; - int index = p_event->u.media_list_item_deleted.index; - p_md = p_event->u.media_list_item_deleted.item; - libvlc_media_list_view_item_deleted( p_mlv, p_md, index ); -} -static void -media_list_will_delete_item( const libvlc_event_t * p_event, void * user_data ) -{ - libvlc_media_t * p_md; - libvlc_media_list_view_t * p_mlv = user_data; - int index = p_event->u.media_list_will_delete_item.index; - p_md = p_event->u.media_list_will_delete_item.item; - libvlc_media_list_view_will_delete_item( p_mlv, p_md, index ); -} - -/* - * Public libvlc functions - */ - - -/************************************************************************** - * flat_media_list_view_release (private) - * (called by media_list_view_release) - **************************************************************************/ -static void -hierarch_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 ); - libvlc_event_detach( p_mlv->p_mlist->p_event_manager, - libvlc_MediaListWillAddItem, - media_list_will_add_item, p_mlv ); - libvlc_event_detach( p_mlv->p_mlist->p_event_manager, - libvlc_MediaListItemDeleted, - media_list_item_deleted, p_mlv ); - libvlc_event_detach( p_mlv->p_mlist->p_event_manager, - libvlc_MediaListWillDeleteItem, - media_list_will_delete_item, p_mlv ); -} - -/************************************************************************** - * libvlc_media_list_flat_view (Public) - **************************************************************************/ -libvlc_media_list_view_t * -libvlc_media_list_hierarchical_view( libvlc_media_list_t * p_mlist ) -{ - trace("\n"); - libvlc_media_list_view_t * p_mlv; - p_mlv = libvlc_media_list_view_new( p_mlist, - hierarch_media_list_view_count, - hierarch_media_list_view_item_at_index, - hierarch_media_list_view_children_at_index, - libvlc_media_list_hierarchical_view, - hierarch_media_list_view_release, - NULL ); - libvlc_media_list_lock( p_mlist ); - libvlc_event_attach( p_mlv->p_mlist->p_event_manager, - libvlc_MediaListItemAdded, - media_list_item_added, p_mlv ); - libvlc_event_attach( p_mlv->p_mlist->p_event_manager, - libvlc_MediaListWillAddItem, - media_list_will_add_item, p_mlv ); - libvlc_event_attach( p_mlv->p_mlist->p_event_manager, - libvlc_MediaListItemDeleted, - media_list_item_deleted, p_mlv ); - libvlc_event_attach( p_mlv->p_mlist->p_event_manager, - libvlc_MediaListWillDeleteItem, - media_list_will_delete_item, p_mlv ); - libvlc_media_list_unlock( p_mlist ); - return p_mlv; -} diff --git a/src/control/hierarchical_node_media_list_view.c b/src/control/hierarchical_node_media_list_view.c deleted file mode 100644 index 955e75405f..0000000000 --- a/src/control/hierarchical_node_media_list_view.c +++ /dev/null @@ -1,311 +0,0 @@ -/***************************************************************************** - * hierarchical_node_media_list_view.c: libvlc hierarchical nodes media list - * view functs. - ***************************************************************************** - * Copyright (C) 2007 the VideoLAN team - * $Id$ - * - * Authors: Pierre d'Herbemont - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. - *****************************************************************************/ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include -#include -#include - -#include "media_internal.h" // Abuse, could ans should be removed -#include "media_list_internal.h" // Abuse, could ans should be removed -#include "media_list_view_internal.h" - -/* FIXME: This version is probably a bit overheaded, and we may want to store - * the items in a vlc_array_t to speed everything up */ - -//#define DEBUG_HIERARCHICAL_VIEW - -#ifdef DEBUG_HIERARCHICAL_VIEW -# define trace( fmt, ... ) printf( "[HIERARCHICAL_NODE] %s(): " fmt, __FUNCTION__, ##__VA_ARGS__ ) -#else -# define trace( ... ) {} -#endif - -/* - * Private functions - */ - -/************************************************************************** - * flat_media_list_view_count (private) - * (called by media_list_view_count) - **************************************************************************/ -static int -hierarch_node_media_list_view_count( libvlc_media_list_view_t * p_mlv, - libvlc_exception_t * p_e ) -{ - /* FIXME: we may want to cache that */ - int i, ret, count = libvlc_media_list_count( p_mlv->p_mlist ); - libvlc_media_t * p_md; - libvlc_media_list_t * p_submlist; - ret = 0; - trace("\n"); - for( i = 0; i < count; i++ ) - { - p_md = libvlc_media_list_item_at_index( p_mlv->p_mlist, i, p_e ); - if( !p_md ) continue; - p_submlist = libvlc_media_subitems( p_md ); - if( !p_submlist ) continue; - libvlc_media_release( p_md ); - libvlc_media_list_release( p_submlist ); - ret++; - } - return ret; -} - -/************************************************************************** - * flat_media_list_view_item_at_index (private) - * (called by flat_media_list_view_item_at_index) - **************************************************************************/ -static libvlc_media_t * -hierarch_node_media_list_view_item_at_index( libvlc_media_list_view_t * p_mlv, - int index, - libvlc_exception_t * p_e ) -{ - /* FIXME: we may want to cache that */ - libvlc_media_t * p_md; - libvlc_media_list_t * p_submlist; - trace("%d\n", index); - int i, current_index, count = libvlc_media_list_count( p_mlv->p_mlist ); - current_index = -1; - for( i = 0; i < count; i++ ) - { - p_md = libvlc_media_list_item_at_index( p_mlv->p_mlist, i, p_e ); - if( !p_md ) continue; - p_submlist = libvlc_media_subitems( p_md ); - if( !p_submlist ) continue; - libvlc_media_list_release( p_submlist ); - current_index++; - if( current_index == index ) - return p_md; - libvlc_media_release( p_md ); - } - - libvlc_exception_raise( p_e ); - libvlc_printerr( "Index out of bound in Media List View" ); - return NULL; -} - -/************************************************************************** - * flat_media_list_view_item_at_index (private) - * (called by flat_media_list_view_item_at_index) - **************************************************************************/ -static libvlc_media_list_view_t * -hierarch_node_media_list_view_children_at_index( libvlc_media_list_view_t * p_mlv, - int index, - libvlc_exception_t * p_e ) -{ - libvlc_media_t * p_md; - libvlc_media_list_t * p_submlist; - libvlc_media_list_view_t * p_ret; - p_md = hierarch_node_media_list_view_item_at_index( p_mlv, index, p_e ); - if( !p_md ) return NULL; - p_submlist = libvlc_media_subitems( p_md ); - libvlc_media_release( p_md ); - if( !p_submlist ) return NULL; - p_ret = libvlc_media_list_hierarchical_node_view( p_submlist ); - libvlc_media_list_release( p_submlist ); - - return p_ret; -} - -/* Helper */ -static int -index_of_item( libvlc_media_list_view_t * p_mlv, libvlc_media_t * p_md ) -{ - libvlc_media_t * p_iter_md; - libvlc_media_list_t * p_submlist; - - int i, current_index, count = libvlc_media_list_count( p_mlv->p_mlist ); - current_index = -1; - for( i = 0; i < count; i++ ) - { - p_iter_md = libvlc_media_list_item_at_index( p_mlv->p_mlist, i, NULL ); - if( !p_iter_md ) continue; - p_submlist = libvlc_media_subitems( p_iter_md ); - if( !p_submlist ) continue; - libvlc_media_list_release( p_submlist ); - libvlc_media_release( p_iter_md ); - current_index++; - if( p_md == p_iter_md ) - return current_index; - } - return -1; -} - -static bool -item_is_already_added( libvlc_media_t * p_md ) -{ - libvlc_media_list_t * p_submlist; - - p_submlist = libvlc_media_subitems( p_md ); - if( !p_submlist ) return false; - int count = libvlc_media_list_count( p_submlist ); - libvlc_media_list_release( p_submlist ); - return count > 1; -} - - -/************************************************************************** - * media_list_(item|will)_* (private) (Event callback) - **************************************************************************/ -static void -items_subitems_added( const libvlc_event_t * p_event, void * user_data ) -{ - libvlc_media_t * p_md; - libvlc_media_list_view_t * p_mlv = user_data; - int index; - p_md = p_event->p_obj; - if( !item_is_already_added( p_md ) ) - { - index = index_of_item( p_mlv, p_md ); - trace("%d\n", index); - if( index >= 0 ) - { - libvlc_media_list_view_will_add_item( p_mlv, p_md, index ); - libvlc_media_list_view_item_added( p_mlv, p_md, index ); - } - } - else - { - trace("item already added\n"); - } -} - -static void -media_list_item_added( const libvlc_event_t * p_event, void * user_data ) -{ - libvlc_media_t * p_md; - libvlc_media_list_view_t * p_mlv = user_data; - int index; - p_md = p_event->u.media_list_item_added.item; - index = index_of_item( p_mlv, p_md ); - trace("%d\n", index); - if( index >= 0) - libvlc_media_list_view_item_added( p_mlv, p_md, index ); - libvlc_event_attach( p_md->p_event_manager, libvlc_MediaSubItemAdded, - items_subitems_added, p_mlv ); - -} -static void -media_list_will_add_item( const libvlc_event_t * p_event, void * user_data ) -{ - libvlc_media_t * p_md; - libvlc_media_list_view_t * p_mlv = user_data; - int index; - p_md = p_event->u.media_list_will_add_item.item; - index = index_of_item( p_mlv, p_md ); - trace("%d\n", index); - if( index >= 0) - libvlc_media_list_view_will_add_item( p_mlv, p_md, index ); -} -static void -media_list_item_deleted( const libvlc_event_t * p_event, void * user_data ) -{ - libvlc_media_t * p_md; - libvlc_media_list_view_t * p_mlv = user_data; - int index; - p_md = p_event->u.media_list_item_deleted.item; - index = index_of_item( p_mlv, p_md ); - trace("%d\n", index); - if( index >= 0) - libvlc_media_list_view_item_deleted( p_mlv, p_md, index ); - libvlc_event_detach( p_md->p_event_manager, libvlc_MediaSubItemAdded, - items_subitems_added, p_mlv ); -} -static void -media_list_will_delete_item( const libvlc_event_t * p_event, void * user_data ) -{ - libvlc_media_t * p_md; - libvlc_media_list_view_t * p_mlv = user_data; - int index; - p_md = p_event->u.media_list_will_delete_item.item; - index = index_of_item( p_mlv, p_md ); - trace("%d\n", index); - if( index >= 0) - libvlc_media_list_view_will_delete_item( p_mlv, p_md, index ); -} - - -/* - * Public libvlc functions - */ - - -/************************************************************************** - * flat_media_list_view_release (private) - * (called by media_list_view_release) - **************************************************************************/ -static void -hierarch_node_media_list_view_release( libvlc_media_list_view_t * p_mlv ) -{ - trace("\n"); - libvlc_event_detach( p_mlv->p_mlist->p_event_manager, - libvlc_MediaListItemAdded, - media_list_item_added, p_mlv ); - libvlc_event_detach( p_mlv->p_mlist->p_event_manager, - libvlc_MediaListWillAddItem, - media_list_will_add_item, p_mlv ); - libvlc_event_detach( p_mlv->p_mlist->p_event_manager, - libvlc_MediaListItemDeleted, - media_list_item_deleted, p_mlv ); - libvlc_event_detach( p_mlv->p_mlist->p_event_manager, - libvlc_MediaListWillDeleteItem, - media_list_will_delete_item, p_mlv ); -} - -/************************************************************************** - * libvlc_media_list_flat_view (Public) - **************************************************************************/ -libvlc_media_list_view_t * -libvlc_media_list_hierarchical_node_view( libvlc_media_list_t * p_mlist ) -{ - trace("\n"); - libvlc_media_list_view_t * p_mlv; - p_mlv = libvlc_media_list_view_new( p_mlist, - hierarch_node_media_list_view_count, - hierarch_node_media_list_view_item_at_index, - hierarch_node_media_list_view_children_at_index, - libvlc_media_list_hierarchical_node_view, - hierarch_node_media_list_view_release, - NULL ); - libvlc_media_list_lock( p_mlist ); - libvlc_event_attach( p_mlv->p_mlist->p_event_manager, - libvlc_MediaListItemAdded, - media_list_item_added, p_mlv ); - libvlc_event_attach( p_mlv->p_mlist->p_event_manager, - libvlc_MediaListWillAddItem, - media_list_will_add_item, p_mlv ); - libvlc_event_attach( p_mlv->p_mlist->p_event_manager, - libvlc_MediaListItemDeleted, - media_list_item_deleted, p_mlv ); - libvlc_event_attach( p_mlv->p_mlist->p_event_manager, - libvlc_MediaListWillDeleteItem, - media_list_will_delete_item, p_mlv ); - libvlc_media_list_unlock( p_mlist ); - return p_mlv; -} diff --git a/src/control/media_list_view.c b/src/control/media_list_view.c deleted file mode 100644 index 4c830379fc..0000000000 --- a/src/control/media_list_view.c +++ /dev/null @@ -1,505 +0,0 @@ -/***************************************************************************** - * flat_media_list.c: libvlc flat media list functions. (extension to - * media_list.c). - ***************************************************************************** - * Copyright (C) 2007 the VideoLAN team - * $Id$ - * - * Authors: Pierre d'Herbemont - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. - *****************************************************************************/ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include -#include -#include -#include - -#include "libvlc_internal.h" // Abuse, could and should be removed - -#include "media_internal.h" // Abuse, could and should be removed -#include "media_list_internal.h" // Abuse, could and should be removed -#include "media_list_view_internal.h" - -//#define DEBUG_FLAT_LIST - -#ifdef DEBUG_FLAT_LIST -# define trace( fmt, ... ) printf( "%s(): " fmt, __FUNCTION__, ##__VA_ARGS__ ) -#else -# define trace( ... ) -#endif - -/* - * Private functions - */ -static void -media_list_item_added( const libvlc_event_t * p_event, void * p_user_data ); -static void -media_list_item_removed( const libvlc_event_t * p_event, void * p_user_data ); -static void -media_list_subitem_added( const libvlc_event_t * p_event, void * p_user_data ); - -static void -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 ))) - { - libvlc_media_list_lock( p_mlist ); - int i, count = libvlc_media_list_count( p_mlist ); - for( i = 0; i < count; i++) - { - libvlc_event_t added_event; - libvlc_media_t * p_submd; - p_submd = libvlc_media_list_item_at_index( p_mlist, i, NULL ); - - /* Install our listeners */ - install_md_listener( p_mlv, p_submd ); - - /* For each item, send a notification to the mlv subclasses */ - added_event.u.media_list_item_added.item = p_submd; - added_event.u.media_list_item_added.index = 0; - if( p_mlv->pf_ml_item_added ) p_mlv->pf_ml_item_added( &added_event, p_mlv ); - libvlc_media_release( p_submd ); - } - libvlc_event_attach( p_mlist->p_event_manager, - libvlc_MediaListItemAdded, - media_list_item_added, p_mlv ); - libvlc_event_attach( p_mlist->p_event_manager, - libvlc_MediaListItemDeleted, - media_list_item_removed, p_mlv ); - libvlc_media_list_unlock( p_mlist ); - libvlc_media_list_release( p_mlist ); - } - else - { - /* No mlist, wait for a subitem added event */ - libvlc_event_attach( p_md->p_event_manager, - libvlc_MediaSubItemAdded, - media_list_subitem_added, p_mlv ); - } -} - -static void -uninstall_md_listener( libvlc_media_list_view_t * p_mlv, - libvlc_media_t * p_md) -{ - libvlc_media_list_t * p_mlist; - libvlc_event_detach( p_md->p_event_manager, - libvlc_MediaSubItemAdded, - 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 ); - libvlc_event_detach( p_mlist->p_event_manager, - libvlc_MediaListItemDeleted, - media_list_item_removed, p_mlv ); - - int i, count = libvlc_media_list_count( p_mlist ); - for( i = 0; i < count; i++) - { - libvlc_media_t * p_submd; - p_submd = libvlc_media_list_item_at_index( p_mlist,i, NULL ); - uninstall_md_listener( p_mlv, p_submd ); - libvlc_media_release( p_submd ); - } - libvlc_media_list_unlock( p_mlist ); - libvlc_media_list_release( p_mlist ); - } -} - -static void -media_list_item_added( const libvlc_event_t * p_event, void * p_user_data ) -{ - libvlc_media_list_view_t * p_mlv = p_user_data; - libvlc_media_t * p_md = p_event->u.media_list_item_added.item; - install_md_listener( p_mlv, p_md ); - if( p_mlv->pf_ml_item_added ) p_mlv->pf_ml_item_added( p_event, p_mlv ); -} - -static void -media_list_item_removed( const libvlc_event_t * p_event, void * p_user_data ) -{ - libvlc_media_list_view_t * p_mlv = p_user_data; - libvlc_media_t * p_md = p_event->u.media_list_item_added.item; - uninstall_md_listener( p_mlv, p_md ); - if( p_mlv->pf_ml_item_removed ) p_mlv->pf_ml_item_removed( p_event, p_mlv ); -} - -static void -media_list_subitem_added( const libvlc_event_t * p_event, void * p_user_data ) -{ - libvlc_media_list_t * p_mlist; - libvlc_event_t added_event; - libvlc_media_list_view_t * p_mlv = 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 ))) - { - /* 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 ); - libvlc_media_list_lock( p_mlist ); - - libvlc_event_attach( p_mlist->p_event_manager, - libvlc_MediaListItemAdded, - media_list_item_added, p_mlv ); - libvlc_event_attach( p_mlist->p_event_manager, - libvlc_MediaListItemDeleted, - media_list_item_removed, p_mlv ); - libvlc_media_list_unlock( p_mlist ); - libvlc_media_list_release( p_mlist ); - } - - install_md_listener( p_mlv, p_submd ); - - added_event.u.media_list_item_added.item = p_submd; - added_event.u.media_list_item_added.index = 0; - if( p_mlv->pf_ml_item_added ) p_mlv->pf_ml_item_added( &added_event, p_mlv ); -} - -/* - * LibVLC Internal functions - */ -/************************************************************************** - * libvlc_media_list_view_set_ml_notification_callback (Internal) - * The mlist lock should be held when entered - **************************************************************************/ -void -libvlc_media_list_view_set_ml_notification_callback( - libvlc_media_list_view_t * p_mlv, - void (*item_added)(const libvlc_event_t *, libvlc_media_list_view_t *), - void (*item_removed)(const libvlc_event_t *, libvlc_media_list_view_t *) ) -{ - p_mlv->pf_ml_item_added = item_added; - 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 ); - libvlc_event_attach( p_mlv->p_mlist->p_event_manager, - libvlc_MediaListItemDeleted, - 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; - p_md = libvlc_media_list_item_at_index( p_mlv->p_mlist, i, NULL ); - install_md_listener( p_mlv, p_md ); - libvlc_media_release( p_md ); - } -} - -/************************************************************************** - * libvlc_media_list_view_notify_deletion (Internal) - **************************************************************************/ -void -libvlc_media_list_view_will_delete_item( - libvlc_media_list_view_t * p_mlv, - libvlc_media_t * p_item, - int index ) -{ - libvlc_event_t event; - - /* Construct the event */ - event.type = libvlc_MediaListViewWillDeleteItem; - event.u.media_list_view_will_delete_item.item = p_item; - event.u.media_list_view_will_delete_item.index = index; - - /* Send the event */ - libvlc_event_send( p_mlv->p_event_manager, &event ); -} - -/************************************************************************** - * libvlc_media_list_view_item_deleted (Internal) - **************************************************************************/ -void -libvlc_media_list_view_item_deleted( - libvlc_media_list_view_t * p_mlv, - libvlc_media_t * p_item, - int index ) -{ - libvlc_event_t event; - - /* Construct the event */ - event.type = libvlc_MediaListViewItemDeleted; - event.u.media_list_view_item_deleted.item = p_item; - event.u.media_list_view_item_deleted.index = index; - - /* Send the event */ - libvlc_event_send( p_mlv->p_event_manager, &event ); -} - -/************************************************************************** - * libvlc_media_list_view_will_add_item (Internal) - **************************************************************************/ -void -libvlc_media_list_view_will_add_item( - libvlc_media_list_view_t * p_mlv, - libvlc_media_t * p_item, - int index ) -{ - libvlc_event_t event; - - /* Construct the event */ - event.type = libvlc_MediaListViewWillAddItem; - event.u.media_list_view_will_add_item.item = p_item; - event.u.media_list_view_will_add_item.index = index; - - /* Send the event */ - libvlc_event_send( p_mlv->p_event_manager, &event ); -} - -/************************************************************************** - * libvlc_media_list_view_item_added (Internal) - **************************************************************************/ -void -libvlc_media_list_view_item_added( - libvlc_media_list_view_t * p_mlv, - libvlc_media_t * p_item, - int index ) -{ - libvlc_event_t event; - - /* Construct the event */ - event.type = libvlc_MediaListViewItemAdded; - event.u.media_list_view_item_added.item = p_item; - event.u.media_list_view_item_added.index = index; - - /* Send the event */ - libvlc_event_send( p_mlv->p_event_manager, &event ); -} - -/************************************************************************** - * libvlc_media_list_view_new (Internal) - **************************************************************************/ -libvlc_media_list_view_t * -libvlc_media_list_view_new( libvlc_media_list_t * p_mlist, - libvlc_media_list_view_count_func_t pf_count, - libvlc_media_list_view_item_at_index_func_t pf_item_at_index, - 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_media_list_view_t * p_mlv; - p_mlv = calloc( 1, sizeof(libvlc_media_list_view_t) ); - 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 ); - 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 ); - libvlc_event_manager_register_event_type( p_mlv->p_event_manager, - libvlc_MediaListViewWillAddItem ); - libvlc_event_manager_register_event_type( p_mlv->p_event_manager, - libvlc_MediaListViewItemDeleted ); - libvlc_event_manager_register_event_type( p_mlv->p_event_manager, - libvlc_MediaListViewWillDeleteItem ); - - libvlc_media_list_retain( p_mlist ); - p_mlv->p_mlist = p_mlist; - - p_mlv->pf_count = pf_count; - p_mlv->pf_item_at_index = pf_item_at_index; - p_mlv->pf_children_at_index = pf_children_at_index; - p_mlv->pf_constructor = pf_constructor; - p_mlv->pf_release = pf_release; - - p_mlv->p_this_view_data = this_view_data; - - vlc_mutex_init( &p_mlv->object_lock ); - p_mlv->i_refcount = 1; - - return p_mlv; -} - - -/* - * Public libvlc functions - */ - -/************************************************************************** - * libvlc_media_list_view_retain (Public) - **************************************************************************/ -void -libvlc_media_list_view_retain( libvlc_media_list_view_t * p_mlv ) -{ - vlc_mutex_lock( &p_mlv->object_lock ); - p_mlv->i_refcount++; - vlc_mutex_unlock( &p_mlv->object_lock ); -} - -/************************************************************************** - * libvlc_media_list_view_release (Public) - **************************************************************************/ -void -libvlc_media_list_view_release( libvlc_media_list_view_t * p_mlv ) -{ - vlc_mutex_lock( &p_mlv->object_lock ); - p_mlv->i_refcount--; - if( p_mlv->i_refcount > 0 ) - { - vlc_mutex_unlock( &p_mlv->object_lock ); - return; - } - vlc_mutex_unlock( &p_mlv->object_lock ); - - /* Refcount null, time to free */ - libvlc_media_list_lock( p_mlv->p_mlist ); - - if( p_mlv->pf_ml_item_added ) - { - libvlc_event_detach( p_mlv->p_mlist->p_event_manager, - libvlc_MediaListItemAdded, - 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 ); - } - int i, count = libvlc_media_list_count( p_mlv->p_mlist ); - for( i = 0; i < count; i++) - { - libvlc_media_t * p_md; - p_md = libvlc_media_list_item_at_index( p_mlv->p_mlist, i, NULL ); - uninstall_md_listener( p_mlv, p_md ); - libvlc_media_release( p_md ); - } - libvlc_media_list_unlock( p_mlv->p_mlist ); - - libvlc_event_manager_release( p_mlv->p_event_manager ); - - if( p_mlv->pf_release ) p_mlv->pf_release( p_mlv ); - libvlc_media_list_release( p_mlv->p_mlist ); - vlc_mutex_destroy( &p_mlv->object_lock ); -} - -/************************************************************************** - * libvlc_media_list_view_event_manager (Public) - **************************************************************************/ -libvlc_event_manager_t * -libvlc_media_list_view_event_manager( libvlc_media_list_view_t * p_mlv ) -{ - libvlc_event_manager_t * p_em; - vlc_mutex_lock( &p_mlv->object_lock ); - p_em = p_mlv->p_event_manager; - vlc_mutex_unlock( &p_mlv->object_lock ); - return p_em; -} - -/************************************************************************** - * libvlc_media_list_view_parent_media_list (Public) - **************************************************************************/ -libvlc_media_list_t * -libvlc_media_list_view_parent_media_list( libvlc_media_list_view_t * p_mlv, - libvlc_exception_t * p_e) -{ - (void)p_e; - libvlc_media_list_t * p_mlist; - vlc_mutex_lock( &p_mlv->object_lock ); - p_mlist = p_mlv->p_mlist; - libvlc_media_list_retain( p_mlv->p_mlist ); - vlc_mutex_unlock( &p_mlv->object_lock ); - return p_mlist; -} - -/************************************************************************** - * libvlc_media_list_view_children_for_item (Public) - **************************************************************************/ -libvlc_media_list_view_t * -libvlc_media_list_view_children_for_item( libvlc_media_list_view_t * p_mlv, - libvlc_media_t * p_md, - libvlc_exception_t * p_e) -{ - (void)p_e; - libvlc_media_list_t * p_mlist; - libvlc_media_list_view_t * ret; - - p_mlist = libvlc_media_subitems(p_md); - if(!p_mlist) return NULL; - - ret = p_mlv->pf_constructor( p_mlist, p_e ); - libvlc_media_list_release( p_mlist ); - - return ret; -} - -/* Limited to four args, because it should be enough */ - -#define AN_SELECT( collapser, dec1, dec2, dec3, dec4, p, ...) p -#define ARGS(...) AN_SELECT( collapser, ##__VA_ARGS__, \ - (p_mlv, arg1, arg2, arg3, arg4, p_e), \ - (p_mlv, arg1, arg2, arg3, p_e), \ - (p_mlv, arg1, arg2, p_e), \ - (p_mlv, arg1, p_e), (p_mlv, p_e) ) - -#define MEDIA_LIST_VIEW_FUNCTION( name, ret_type, default_ret_value, /* Params */ ... ) \ - ret_type \ - libvlc_media_list_view_##name( libvlc_media_list_view_t * p_mlv, \ - ##__VA_ARGS__, \ - libvlc_exception_t * p_e ) \ - { \ - if( p_mlv->pf_##name ) \ - return p_mlv->pf_##name ARGS(__VA_ARGS__) ; \ - libvlc_exception_raise( p_e ); \ - libvlc_printerr( "No '" #name "' method in this media_list_view" ); \ - return default_ret_value;\ - } - -#define MEDIA_LIST_VIEW_FUNCTION_VOID_RET( name, /* Params */ ... ) \ - void \ - libvlc_media_list_view_##name( libvlc_media_list_view_t * p_mlv, \ - ##__VA_ARGS__, \ - libvlc_exception_t * p_e ) \ - { \ - if( p_mlv->pf_##name ) \ - { \ - p_mlv->pf_##name ARGS(__VA_ARGS__) ; \ - return; \ - } \ - libvlc_exception_raise( p_e ); \ - libvlc_printerr( "No '" #name "' method in this media_list_view" ); \ - } - - -MEDIA_LIST_VIEW_FUNCTION( count, int, 0 ) -MEDIA_LIST_VIEW_FUNCTION( item_at_index, libvlc_media_t *, NULL, int arg1 ) -MEDIA_LIST_VIEW_FUNCTION( children_at_index, libvlc_media_list_view_t *, NULL, int arg1 ) - diff --git a/src/control/media_list_view_internal.h b/src/control/media_list_view_internal.h deleted file mode 100644 index 1d60bb7f75..0000000000 --- a/src/control/media_list_view_internal.h +++ /dev/null @@ -1,112 +0,0 @@ -/***************************************************************************** - * libvlc_internal.h : Definition of opaque structures for libvlc exported API - * Also contains some internal utility functions - ***************************************************************************** - * Copyright (C) 2005-2009 the VideoLAN team - * $Id$ - * - * Authors: Clément Stenac - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. - *****************************************************************************/ - -#ifndef LIBVLC_MEDIA_LIST_VIEW_INTERNAL_H -#define LIBVLC_MEDIA_LIST_VIEW_INTERNAL_H 1 - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include -#include - -#include - -typedef libvlc_media_list_view_t * (*libvlc_media_list_view_constructor_func_t)( libvlc_media_list_t * p_mlist, libvlc_exception_t * p_e ) ; -typedef void (*libvlc_media_list_view_release_func_t)( libvlc_media_list_view_t * p_mlv ) ; - -typedef int (*libvlc_media_list_view_count_func_t)( libvlc_media_list_view_t * p_mlv, - libvlc_exception_t * ) ; - -typedef libvlc_media_t * - (*libvlc_media_list_view_item_at_index_func_t)( - libvlc_media_list_view_t * p_mlv, - int index, - libvlc_exception_t * ) ; - -typedef libvlc_media_list_view_t * - (*libvlc_media_list_view_children_at_index_func_t)( - libvlc_media_list_view_t * p_mlv, - int index, - libvlc_exception_t * ) ; - -/* A way to see a media list */ -struct libvlc_media_list_view_t -{ - libvlc_event_manager_t * p_event_manager; - libvlc_instance_t * p_libvlc_instance; - int i_refcount; - vlc_mutex_t object_lock; - - libvlc_media_list_t * p_mlist; - - struct libvlc_media_list_view_private_t * p_this_view_data; - - /* Accessors */ - libvlc_media_list_view_count_func_t pf_count; - libvlc_media_list_view_item_at_index_func_t pf_item_at_index; - 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; - - /* Notification callback */ - void (*pf_ml_item_added)(const libvlc_event_t *, libvlc_media_list_view_t *); - void (*pf_ml_item_removed)(const libvlc_event_t *, libvlc_media_list_view_t *); -}; - -/* Media List View */ -libvlc_media_list_view_t * libvlc_media_list_view_new( - libvlc_media_list_t * p_mlist, - libvlc_media_list_view_count_func_t pf_count, - libvlc_media_list_view_item_at_index_func_t pf_item_at_index, - 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 ); - -void libvlc_media_list_view_set_ml_notification_callback( - libvlc_media_list_view_t * p_mlv, - void (*item_added)(const libvlc_event_t *, libvlc_media_list_view_t *), - void (*item_removed)(const libvlc_event_t *, libvlc_media_list_view_t *) ); - -void libvlc_media_list_view_will_delete_item( - libvlc_media_list_view_t * p_mlv, - libvlc_media_t * p_item, int index ); - -void libvlc_media_list_view_item_deleted( - libvlc_media_list_view_t * p_mlv, - libvlc_media_t * p_item, int index ); - -void libvlc_media_list_view_will_add_item ( - libvlc_media_list_view_t * p_mlv, - libvlc_media_t * p_item, int index ); - -void libvlc_media_list_view_item_added( - libvlc_media_list_view_t * p_mlv, - libvlc_media_t * p_item, int index ); - -#endif diff --git a/src/libvlc.sym b/src/libvlc.sym index 23d7667128..9c6c0453f4 100644 --- a/src/libvlc.sym +++ b/src/libvlc.sym @@ -76,9 +76,6 @@ libvlc_media_list_add_file_content libvlc_media_list_add_media libvlc_media_list_count libvlc_media_list_event_manager -libvlc_media_list_flat_view -libvlc_media_list_hierarchical_node_view -libvlc_media_list_hierarchical_view libvlc_media_list_index_of_item libvlc_media_list_insert_media libvlc_media_list_is_readonly @@ -106,20 +103,6 @@ libvlc_media_list_remove_index libvlc_media_list_retain libvlc_media_list_set_media libvlc_media_list_unlock -libvlc_media_list_view_children_at_index -libvlc_media_list_view_children_for_item -libvlc_media_list_view_count -libvlc_media_list_view_event_manager -libvlc_media_list_view_item_added -libvlc_media_list_view_item_at_index -libvlc_media_list_view_item_deleted -libvlc_media_list_view_new -libvlc_media_list_view_parent_media_list -libvlc_media_list_view_release -libvlc_media_list_view_retain -libvlc_media_list_view_set_ml_notification_callback -libvlc_media_list_view_will_add_item -libvlc_media_list_view_will_delete_item libvlc_media_new libvlc_media_new_as_node libvlc_media_new_from_input_item diff --git a/src/test/headers.c b/src/test/headers.c index cf2413695f..52084dfc6b 100644 --- a/src/test/headers.c +++ b/src/test/headers.c @@ -42,7 +42,6 @@ #include #include #include -#include #include #include #include