* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
-#include "libvlc_internal.h"
-#include <vlc/libvlc.h>
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include <assert.h>
-#include "vlc_arrays.h"
+
+#include <vlc/libvlc.h>
+#include <vlc/libvlc_media.h>
+#include <vlc/libvlc_media_list.h>
+#include <vlc/libvlc_events.h>
+
+#include <vlc_common.h>
+#include <vlc_input.h>
+
+#include "libvlc_internal.h"
+#include "media_internal.h" // libvlc_media_new_from_input_item()
+#include "media_list_internal.h"
typedef enum EventPlaceInTime {
EventWillHappen,
if( !p_mlist||p_mlist->b_read_only )
{
/* We are read-only from user side */
- libvlc_exception_raise( p_e, "Cannot write to read-only media list." );
+ libvlc_exception_raise( p_e );
+ libvlc_printerr( "Attempt to write a read-only media list" );
return 0;
}
return 1;
}
vlc_mutex_init( &p_mlist->object_lock );
+ vlc_mutex_init( &p_mlist->refcount_lock ); // FIXME: spinlock?
vlc_array_init( &p_mlist->items );
p_mlist->i_refcount = 1;
libvlc_media_t * p_md;
int i;
- vlc_mutex_lock( &p_mlist->object_lock );
+ vlc_mutex_lock( &p_mlist->refcount_lock );
p_mlist->i_refcount--;
if( p_mlist->i_refcount > 0 )
{
- vlc_mutex_unlock( &p_mlist->object_lock );
+ vlc_mutex_unlock( &p_mlist->refcount_lock );
return;
}
- vlc_mutex_unlock( &p_mlist->object_lock );
+ vlc_mutex_unlock( &p_mlist->refcount_lock );
/* Refcount null, time to free */
**************************************************************************/
void libvlc_media_list_retain( libvlc_media_list_t * p_mlist )
{
- vlc_mutex_lock( &p_mlist->object_lock );
+ vlc_mutex_lock( &p_mlist->refcount_lock );
p_mlist->i_refcount++;
- vlc_mutex_unlock( &p_mlist->object_lock );
+ vlc_mutex_unlock( &p_mlist->refcount_lock );
}
if( !p_input_item )
{
- libvlc_exception_raise( p_e, "Can't create an input item" );
+ libvlc_exception_raise( p_e );
+ libvlc_printerr( "Not enough memory" );
return;
}
if( libvlc_exception_raised( p_e ) )
return;
- input_Read( p_mlist->p_libvlc_instance->p_libvlc_int, p_input_item, true );
+ input_Read( p_mlist->p_libvlc_instance->p_libvlc_int, p_input_item );
return;
}
if( index < 0 || index >= vlc_array_count( &p_mlist->items ))
{
- libvlc_exception_raise( p_e, "Index out of bounds");
+ libvlc_exception_raise( p_e );
+ libvlc_printerr( "Index out of bounds" );
return;
}
if( index < 0 || index >= vlc_array_count( &p_mlist->items ))
{
- libvlc_exception_raise( p_e, "Index out of bounds");
+ libvlc_exception_raise( p_e );
+ libvlc_printerr( "Index out of bounds" );
return NULL;
}