Fix a crasher in exception handling
authorClément Stenac <zorglub@videolan.org>
Sun, 29 Jan 2006 19:04:07 +0000 (19:04 +0000)
committerClément Stenac <zorglub@videolan.org>
Sun, 29 Jan 2006 19:04:07 +0000 (19:04 +0000)
Add some playlist functions

include/vlc/libvlc.h
src/control/core.c
src/control/playlist.c

index 3551419..c256074 100644 (file)
@@ -4,7 +4,7 @@
  * Copyright (C) 1998-2005 the VideoLAN team
  * $Id: vlc.h 13701 2005-12-12 17:58:56Z zorglub $
  *
- * Authors: Clent Stenac <zorglub@videolan.org>
+ * Authors: Clément Stenac <zorglub@videolan.org>
  *
  * 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
@@ -130,6 +130,38 @@ void libvlc_destroy( libvlc_instance_t *);
 void libvlc_playlist_play( libvlc_instance_t*, int, char **,
                            libvlc_exception_t * );
 
+/**
+ * Stop playing
+ * \param p_instance the instance to stop
+ * \param p_exception an initialized exception
+ */
+void libvlc_playlist_stop( libvlc_instance_t *, libvlc_exception_t * );
+
+/**
+ * Remove all playlist ites
+ * \param p_instance the instance
+ * \param p_exception an initialized exception
+ */
+void libvlc_playlist_clear( libvlc_instance_t *, libvlc_exception_t * );
+
+/**
+ * Go to next playlist item
+ * \param p_instance the instance
+ * \param p_exception an initialized exception
+ */
+void libvlc_playlist_next( libvlc_instance_t *, libvlc_exception_t * );
+
+/**
+ * Go to Previous playlist item
+ * \param p_instance the instance
+ * \param p_exception an initialized exception
+ */
+void libvlc_playlist_prev( libvlc_instance_t *, libvlc_exception_t * );
+
+
+
+
+
 typedef struct libvlc_input_t libvlc_input_t;
 
 ///\todo document me
index 54147ea..b89911f 100644 (file)
@@ -54,7 +54,8 @@ inline void libvlc_exception_raise( libvlc_exception_t *p_exception,
 {
     if( p_exception == NULL ) return;
     p_exception->b_raised = 1;
-    p_exception->psz_message = strdup( psz_message );
+    if( psz_message )
+        p_exception->psz_message = strdup( psz_message );
 }
 
 
index 87d76ef..7440d6d 100644 (file)
@@ -4,7 +4,7 @@
  * Copyright (C) 2005 the VideoLAN team
  * $Id$
  *
- * Authors: Clent Stenac <zorglub@videolan.org>
+ * Authors: Clément Stenac <zorglub@videolan.org>
  *
  * 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
@@ -40,6 +40,22 @@ void libvlc_playlist_play( libvlc_instance_t *p_instance,
     playlist_Play( p_instance->p_playlist );
 }
 
+void libvlc_playlist_stop( libvlc_instance_t *p_instance,
+                           libvlc_exception_t *p_exception )
+{
+    if( playlist_Stop( p_instance->p_playlist ) != VLC_SUCCESS )
+    {
+        libvlc_exception_raise( p_exception, "Empty playlist" );
+    }
+}
+
+void libvlc_playlist_clear( libvlc_instance_t *p_instance,
+                           libvlc_exception_t *p_exception )
+{
+    playlist_Clear( p_instance->p_playlist );
+}
+
+
 libvlc_input_t * libvlc_playlist_get_input( libvlc_instance_t *p_instance,
                                             libvlc_exception_t *p_exception )
 {