* ./src/playlist/playlist.c: lots of playlist behaviour enhancements.
authorSam Hocevar <sam@videolan.org>
Fri, 7 Jun 2002 14:30:41 +0000 (14:30 +0000)
committerSam Hocevar <sam@videolan.org>
Fri, 7 Jun 2002 14:30:41 +0000 (14:30 +0000)
  * ./src/misc/objects.c: we do not hang on attempt to destroy an object with
    a non-zero reference count, but we still complain.
  * ./plugins/gtk/gtk_control.c, plugins/gtk/gtk_playlist.c: most controls such
    as play, pause, stop, next, fast etc. work again.
  * ./plugins/gtk/gnome_*: got rid of lots of useless wrappers which were a
    workaround for a bug in Glade. Instead, bootstrap.sh does the Glade fixes.
  * ./plugins/ffmpeg/ffmpeg.c: if there is already a video output with the
    appropriate properties, we use it.

48 files changed:
ChangeLog
bootstrap.sh
include/playlist.h
include/vlc/vlc.h
include/vlc_objects.h
include/vlc_symbols.h
plugins/avi/avi.c
plugins/ffmpeg/ffmpeg.c
plugins/gtk/gnome.c
plugins/gtk/gnome.glade
plugins/gtk/gnome_callbacks.c
plugins/gtk/gnome_callbacks.h
plugins/gtk/gnome_interface.c
plugins/gtk/gtk.c
plugins/gtk/gtk.glade
plugins/gtk/gtk_callbacks.c
plugins/gtk/gtk_callbacks.h
plugins/gtk/gtk_common.h
plugins/gtk/gtk_control.c
plugins/gtk/gtk_control.h
plugins/gtk/gtk_interface.c
plugins/gtk/gtk_modules.c
plugins/gtk/gtk_modules.h
plugins/gtk/gtk_open.c
plugins/gtk/gtk_open.h
plugins/gtk/gtk_playlist.c
plugins/gtk/gtk_playlist.h
plugins/gtk/gtk_preferences.c
plugins/gtk/gtk_preferences.h
plugins/mpeg_system/mpeg_audio.c
plugins/mpeg_vdec/vpar_headers.c
plugins/text/rc.c
po/de.po
po/en_GB.po
po/fr.po
po/ja.po
po/nl.po
po/no.po
po/pl.po
po/ru.po
po/vlc.pot
src/input/input.c
src/libvlc.c
src/libvlc.h
src/misc/cpu.c
src/misc/modules.c
src/misc/objects.c
src/playlist/playlist.c

index d8d519b..b50f6ba 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,22 @@
 0.5.0
 Not released yet
 
+  * ./src/playlist/playlist.c: lots of playlist behaviour enhancements.
+  * ./src/misc/objects.c: we do not hang on attempt to destroy an object with
+    a non-zero reference count, but we still complain.
+  * ./plugins/gtk/gtk_control.c, plugins/gtk/gtk_playlist.c: most controls such
+    as play, pause, stop, next, fast etc. work again.
+  * ./plugins/gtk/gnome_*: got rid of lots of useless wrappers which were a
+    workaround for a bug in Glade. Instead, bootstrap.sh does the Glade fixes.
+  * ./plugins/ffmpeg/ffmpeg.c: if there is already a video output with the
+    appropriate properties, we use it.
+  * ./Makefile: minor fix for the BeOS' make-package (icon loss).
+  * ./plugins/spudec/spu_decoder.c: release vout when we close spudec.
+  * ./plugins/ac3_spdif/ac3_spdif.c: only report initiliazation error when it
+    is really an error.
+  * ./include/video_output.h: added mouse coordinates to vout struct.
+  * ./plugins/mpeg_vdec/video_parser.c: check that p_vpar->p_vout is available
+    before detaching it.
   * ./plugins/gtk/gtk_callbacks.c: fixed a segfault when switching to
     fullscreen from the popup menu.
   * ./src/interface/interface.c: interfaces are no longer attached only to
index 05cf8d3..7cf2c50 100755 (executable)
@@ -1,7 +1,7 @@
 #! /bin/sh
 
 ##  bootstrap.sh file for vlc, the VideoLAN Client
-##  $Id: bootstrap.sh,v 1.3 2002/06/01 17:11:41 sam Exp $
+##  $Id: bootstrap.sh,v 1.4 2002/06/07 14:30:40 sam Exp $
 ##
 ##  Authors: Samuel Hocevar <sam@zoy.org>
 
@@ -69,6 +69,7 @@ EOF
         | sed 's#_("--")#"--"#' \
         | sed 's#_("/dev/dvd")#"/dev/dvd"#' \
         | sed 's#_(\("./."\))#\1#' \
+        | sed 's/_GLADE_SUX_\([^,]*\), NULL/, "\1"/' \
         >> /tmp/$$.$file.bak
     mv -f /tmp/$$.$file.bak plugins/gtk/$file
 fi
index b6404d3..9b26a11 100644 (file)
@@ -2,7 +2,7 @@
  * vlc_playlist.h : Playlist functions
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001, 2002 VideoLAN
- * $Id: playlist.h,v 1.5 2002/06/04 00:11:12 sam Exp $
+ * $Id: playlist.h,v 1.6 2002/06/07 14:30:40 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -42,20 +42,21 @@ struct playlist_s
 {
     VLC_COMMON_MEMBERS
 
-    /* Thread properties and lock */
-    vlc_mutex_t           change_lock;
-
     int                   i_index;                          /* current index */
+    int                   i_status;
     int                   i_size;                              /* total size */
-    playlist_item_t **    pp_items;
 
-    int                   i_status;
+    playlist_item_t **    pp_items;
 
     input_thread_t *      p_input;
 };
 
 /* Used by playlist_Add */
-#define PLAYLIST_START            0
+#define PLAYLIST_INSERT      0x0001
+#define PLAYLIST_REPLACE     0x0002
+#define PLAYLIST_APPEND      0x0004
+#define PLAYLIST_GO          0x0008
+
 #define PLAYLIST_END             -1
 
 /* Playlist parsing mode */
@@ -91,6 +92,6 @@ void           playlist_Destroy  ( playlist_t * );
 #define playlist_Goto(p,i) playlist_Command(p,PLAYLIST_GOTO,i)
 VLC_EXPORT( void, playlist_Command, ( playlist_t *, int, int ) );
 
-VLC_EXPORT( int,  playlist_Add,    ( playlist_t *, int, const char * ) );
+VLC_EXPORT( int,  playlist_Add,    ( playlist_t *, const char *, int, int ) );
 VLC_EXPORT( int,  playlist_Delete, ( playlist_t *, int ) );
 
index f0bd992..96434e1 100644 (file)
@@ -2,7 +2,7 @@
  * vlc.h: global header for vlc
  *****************************************************************************
  * Copyright (C) 1998, 1999, 2000 VideoLAN
- * $Id: vlc.h,v 1.2 2002/06/02 13:38:03 gbazin Exp $
+ * $Id: vlc.h,v 1.3 2002/06/07 14:30:40 sam Exp $
  *
  * 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
@@ -91,7 +91,7 @@ vlc_error_t     vlc_end        ( vlc_t * );
 vlc_error_t     vlc_destroy    ( vlc_t * );
 
 vlc_error_t     vlc_add_intf   ( vlc_t *, char *, vlc_bool_t );
-vlc_error_t     vlc_add_target ( vlc_t *, char * );
+vlc_error_t     vlc_add_target ( vlc_t *, char *, int, int );
 
 vlc_status_t    vlc_status     ( vlc_t * );
 
index 0fe3ac9..26848b9 100644 (file)
@@ -2,7 +2,7 @@
  * vlc_objects.h: vlc_object_t definition.
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: vlc_objects.h,v 1.2 2002/06/02 09:03:53 sam Exp $
+ * $Id: vlc_objects.h,v 1.3 2002/06/07 14:30:40 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
 #define VLC_OBJECT_MODULE     (-2)
 #define VLC_OBJECT_INTF       (-3)
 #define VLC_OBJECT_PLAYLIST   (-4)
-#define VLC_OBJECT_INPUT      (-5)
-#define VLC_OBJECT_DECODER    (-6)
-#define VLC_OBJECT_VOUT       (-7)
-#define VLC_OBJECT_AOUT       (-8)
+#define VLC_OBJECT_ITEM       (-5)
+#define VLC_OBJECT_INPUT      (-6)
+#define VLC_OBJECT_DECODER    (-7)
+#define VLC_OBJECT_VOUT       (-8)
+#define VLC_OBJECT_AOUT       (-9)
 #define VLC_OBJECT_PRIVATE  (-666)
 
 /* Object search mode */
index 2146499..5c7ae6f 100644 (file)
@@ -92,7 +92,7 @@ struct module_symbols_s
     int (* __network_ChannelJoin_inner) ( vlc_object_t *, int ) ;
     int (* __network_ChannelCreate_inner) ( vlc_object_t * ) ;
     void (* playlist_Command_inner) ( playlist_t *, int, int ) ;
-    int (* playlist_Add_inner) ( playlist_t *, int, const char * ) ;
+    int (* playlist_Add_inner) ( playlist_t *, const char *, int, int ) ;
     int (* playlist_Delete_inner) ( playlist_t *, int ) ;
     vout_thread_t * (* __vout_CreateThread_inner) ( vlc_object_t *, int, int, u32, int ) ;
     void (* vout_DestroyThread_inner) ( vout_thread_t * ) ;
index db1063f..9988d22 100644 (file)
@@ -2,7 +2,7 @@
  * avi.c : AVI file Stream input module for vlc
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: avi.c,v 1.21 2002/06/01 12:31:58 sam Exp $
+ * $Id: avi.c,v 1.22 2002/06/07 14:30:40 sam Exp $
  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  * 
  * This program is free software; you can redistribute it and/or modify
@@ -532,7 +532,6 @@ static int AVIInit( input_thread_t *p_input )
         return( -1 );
     }
     p_input->stream.p_selected_program = p_input->stream.pp_programs[0];
-    p_input->stream.p_new_program = p_input->stream.pp_programs[0] ;
     p_input->stream.i_mux_rate = p_avi_demux->avih.i_maxbytespersec / 50;
     vlc_mutex_unlock( &p_input->stream.stream_lock ); 
 
index e5cbfd0..456110f 100644 (file)
@@ -2,7 +2,7 @@
  * ffmpeg.c: video decoder using ffmpeg library
  *****************************************************************************
  * Copyright (C) 1999-2001 VideoLAN
- * $Id: ffmpeg.c,v 1.12 2002/06/01 18:04:48 sam Exp $
+ * $Id: ffmpeg.c,v 1.13 2002/06/07 14:30:40 sam Exp $
  *
  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  *
@@ -375,24 +375,59 @@ static int InitThread( videodec_thread_t *p_vdec )
                                  p_vdec->psz_namecodec );
     }
 
-    /* create vout */
-    p_vdec->p_vout = vout_CreateThread( p_vdec->p_fifo,
-                                p_vdec->format.i_width,
-                                p_vdec->format.i_height,
-                                FOURCC_I420,
-                                VOUT_ASPECT_FACTOR * p_vdec->format.i_width /
-                                    p_vdec->format.i_height );
-
+    /* Spawn a video output if there is none. First we look for our children,
+     * then we look for any other vout that might be available. */
+    p_vdec->p_vout = vlc_object_find( p_vdec->p_fifo, VLC_OBJECT_VOUT,
+                                                      FIND_CHILD );
     if( p_vdec->p_vout == NULL )
     {
-        msg_Err( p_vdec->p_fifo, "cannot open vout, aborting" );
-        avcodec_close( p_vdec->p_context );
-        msg_Dbg( p_vdec->p_fifo, "ffmpeg codec (%s) stopped",
-                                 p_vdec->psz_namecodec );
-        return -1;
+        p_vdec->p_vout = vlc_object_find( p_vdec->p_fifo, VLC_OBJECT_VOUT,
+                                                          FIND_ANYWHERE );
+    }
+
+    if( p_vdec->p_vout )
+    {
+        if( p_vdec->p_vout->render.i_width != p_vdec->format.i_width
+             || p_vdec->p_vout->render.i_height != p_vdec->format.i_height
+             || p_vdec->p_vout->render.i_chroma != FOURCC_I420
+             || p_vdec->p_vout->render.i_aspect != VOUT_ASPECT_FACTOR
+                           * p_vdec->format.i_width / p_vdec->format.i_height )
+        {
+            /* We are not interested in this format, close this vout */
+            vlc_object_detach_all( p_vdec->p_vout );
+            vlc_object_release( p_vdec->p_vout );
+            vout_DestroyThread( p_vdec->p_vout );
+            p_vdec->p_vout = NULL;
+        }
+        else
+        {
+            /* This video output is cool! Hijack it. */
+            vlc_object_detach_all( p_vdec->p_vout );
+            vlc_object_attach( p_vdec->p_vout, p_vdec->p_fifo );
+            vlc_object_release( p_vdec->p_vout );
+        }
     }
 
-    vlc_object_yield( p_vdec->p_vout );
+    if( p_vdec->p_vout == NULL )
+    {
+        msg_Dbg( p_vdec->p_fifo, "no vout present, spawning one" );
+    
+        p_vdec->p_vout = vout_CreateThread( p_vdec->p_fifo,
+                           p_vdec->format.i_width,
+                           p_vdec->format.i_height,
+                           FOURCC_I420,
+                           VOUT_ASPECT_FACTOR * p_vdec->format.i_width /
+                               p_vdec->format.i_height );
+    
+        /* Everything failed */
+        if( p_vdec->p_vout == NULL )
+        {
+            msg_Err( p_vdec->p_fifo, "cannot open vout, aborting" );
+            avcodec_close( p_vdec->p_context );
+            p_vdec->p_fifo->b_error = 1; 
+            return -1;
+        }
+    }
 
     return( 0 );
 }
@@ -418,8 +453,12 @@ static void EndThread( videodec_thread_t *p_vdec )
                                  p_vdec->psz_namecodec );
     }
 
-    vlc_object_release( p_vdec->p_vout );
-    vout_DestroyThread( p_vdec->p_vout );
+    if( p_vdec->p_vout != NULL )
+    {
+        /* We are about to die. Reattach video output to p_vlc. */
+        vlc_object_detach( p_vdec->p_vout, p_vdec->p_fifo );
+        vlc_object_attach( p_vdec->p_vout, p_vdec->p_fifo->p_vlc );
+    }
     
     free( p_vdec );
 }
index 35129c8..9a33e9d 100644 (file)
@@ -2,7 +2,7 @@
  * gnome.c : Gnome plugin for vlc
  *****************************************************************************
  * Copyright (C) 2000 VideoLAN
- * $Id: gnome.c,v 1.26 2002/06/02 09:03:54 sam Exp $
+ * $Id: gnome.c,v 1.27 2002/06/07 14:30:40 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -180,6 +180,11 @@ static int intf_Open( intf_thread_t *p_intf )
  *****************************************************************************/
 static void intf_Close( intf_thread_t *p_intf )
 {
+    if( p_intf->p_sys->p_input )
+    {
+        vlc_object_release( p_intf->p_sys->p_input );
+    }
+
     msg_Unsubscribe( p_intf, p_intf->p_sys->p_sub );
 
     /* Destroy structure */
@@ -222,7 +227,7 @@ static void intf_Run( intf_thread_t *p_intf )
     /* Create some useful widgets that will certainly be used */
     p_intf->p_sys->p_window = create_intf_window( );
     p_intf->p_sys->p_popup = create_intf_popup( );
-    p_intf->p_sys->p_playlist = create_intf_playlist();
+    p_intf->p_sys->p_playwin = create_intf_playlist();
     p_intf->p_sys->p_messages = create_intf_messages();
 
     /* Set the title of the main window */
@@ -235,7 +240,7 @@ static void intf_Run( intf_thread_t *p_intf )
                        1, GDK_ACTION_COPY );
     /* Accept file drops on the playlist window */
     gtk_drag_dest_set( GTK_WIDGET( gtk_object_get_data( GTK_OBJECT(
-                            p_intf->p_sys->p_playlist ), "playlist_clist") ),
+                            p_intf->p_sys->p_playwin ), "playlist_clist") ),
                        GTK_DEST_DEFAULT_ALL, target_table,
                        1, GDK_ACTION_COPY );
 
@@ -298,7 +303,7 @@ static void intf_Run( intf_thread_t *p_intf )
     gtk_object_set_data( GTK_OBJECT(p_intf->p_sys->p_popup),
                          "p_intf", p_intf );
 
-    gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_playlist ),
+    gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_playwin ),
                          "p_intf", p_intf );
 
     gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_messages ),
index a3d4a04..fd54438 100644 (file)
@@ -92,7 +92,7 @@
              <tooltip>Open a File</tooltip>
              <signal>
                <name>activate</name>
-               <handler>GnomeMenubarFileOpenActivate</handler>
+               <handler>GtkFileOpenShow_GLADE_SUX_intf_window</handler>
                <last_modification_time>Sat, 19 May 2001 16:27:02 GMT</last_modification_time>
              </signal>
              <label>_Open File...</label>
              <tooltip>Open a DVD or VCD</tooltip>
              <signal>
                <name>activate</name>
-               <handler>GnomeMenubarDiscOpenActivate</handler>
+               <handler>GtkDiscOpenShow_GLADE_SUX_intf_window</handler>
                <last_modification_time>Sat, 19 May 2001 16:27:10 GMT</last_modification_time>
              </signal>
              <label>Open _Disc...</label>
              <tooltip>Select a Network Stream</tooltip>
              <signal>
                <name>activate</name>
-               <handler>GnomeMenubarNetworkOpenActivate</handler>
+               <handler>GtkNetworkOpenShow_GLADE_SUX_intf_window</handler>
                <last_modification_time>Fri, 21 Dec 2001 13:11:28 GMT</last_modification_time>
              </signal>
              <label>_Network Stream...</label>
              <tooltip>Eject disc</tooltip>
              <signal>
                <name>activate</name>
-               <handler>GnomeMenubarDiscEjectActivate</handler>
+               <handler>GtkDiscEject_GLADE_SUX_intf_window</handler>
                <last_modification_time>Fri, 21 Dec 2001 13:11:28 GMT</last_modification_time>
              </signal>
              <label>_Eject Disc</label>
              <name>menubar_exit</name>
              <signal>
                <name>activate</name>
-               <handler>GnomeMenubarExitActivate</handler>
+               <handler>GtkExit_GLADE_SUX_intf_window</handler>
                <last_modification_time>Sat, 19 May 2001 16:27:52 GMT</last_modification_time>
              </signal>
              <stock_item>GNOMEUIINFO_MENU_EXIT_ITEM</stock_item>
              <name>menubar_hide_interface</name>
              <signal>
                <name>activate</name>
-               <handler>GnomeMenubarWindowToggleActivate</handler>
+               <handler>GtkWindowToggle_GLADE_SUX_intf_window</handler>
                <last_modification_time>Sat, 19 May 2001 16:28:06 GMT</last_modification_time>
              </signal>
              <label>_Hide interface</label>
              <name>menubar_fullscreen</name>
              <signal>
                <name>activate</name>
-               <handler>GnomeMenubarFullscreenActivate</handler>
+               <handler>GtkFullscreen_GLADE_SUX_intf_window</handler>
                <last_modification_time>Sat, 19 May 2001 16:28:15 GMT</last_modification_time>
              </signal>
              <label>_Fullscreen</label>
              <tooltip>Open the playlist window</tooltip>
              <signal>
                <name>activate</name>
-               <handler>GnomeMenubarPlaylistActivate</handler>
+               <handler>GtkPlaylistShow_GLADE_SUX_intf_window</handler>
                <last_modification_time>Sat, 19 May 2001 16:28:41 GMT</last_modification_time>
              </signal>
              <label>_Playlist...</label>
              <tooltip>Open the module manager</tooltip>
              <signal>
                <name>activate</name>
-               <handler>GnomeMenubarModulesActivate</handler>
+               <handler>GtkModulesShow_GLADE_SUX_intf_window</handler>
                <last_modification_time>Sat, 19 May 2001 16:28:53 GMT</last_modification_time>
              </signal>
              <label>_Modules...</label>
              <tooltip>Open the messages window</tooltip>
              <signal>
                <name>activate</name>
-               <handler>GnomeMenubarMessagesActivate</handler>
+               <handler>GtkMessagesShow_GLADE_SUX_intf_window</handler>
                <last_modification_time>Wed, 20 Feb 2002 05:43:55 GMT</last_modification_time>
              </signal>
              <label>Messages...</label>
              <name>menubar_preferences</name>
              <signal>
                <name>activate</name>
-               <handler>GnomeMenubarPreferencesActivate</handler>
+               <handler>GtkPreferencesShow_GLADE_SUX_intf_window</handler>
                <last_modification_time>Sat, 19 May 2001 16:29:03 GMT</last_modification_time>
              </signal>
              <stock_item>GNOMEUIINFO_MENU_PREFERENCES_ITEM</stock_item>
              <name>menubar_about</name>
              <signal>
                <name>activate</name>
-               <handler>GnomeMenubarAboutActivate</handler>
+               <handler>GtkAboutShow_GLADE_SUX_intf_window</handler>
                <last_modification_time>Sat, 19 May 2001 16:29:19 GMT</last_modification_time>
              </signal>
              <stock_item>GNOMEUIINFO_MENU_ABOUT_ITEM</stock_item>
          <name>toolbar_file</name>
          <tooltip>Open a File</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkFileOpenShow</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sat, 19 May 2001 03:14:43 GMT</last_modification_time>
          <name>toolbar_disc</name>
          <tooltip>Open a DVD or VCD</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkDiscOpenShow</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sat, 19 May 2001 03:14:38 GMT</last_modification_time>
          <name>toolbar_network</name>
          <tooltip>Select a Network Stream</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkNetworkOpenShow</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sat, 19 May 2001 03:14:33 GMT</last_modification_time>
          <name>toolbar_sat</name>
          <tooltip>Open a Satellite Card</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkSatOpenShow</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Mon, 25 Mar 2002 01:02:49 GMT</last_modification_time>
          <sensitive>False</sensitive>
          <tooltip>Go Backward</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkControlBack</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sat, 19 May 2001 03:14:27 GMT</last_modification_time>
          <name>toolbar_stop</name>
          <tooltip>Stop Stream</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkControlStop</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sat, 19 May 2001 03:14:22 GMT</last_modification_time>
          <name>toolbar_eject</name>
          <tooltip>Eject disc</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkDiscEject</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Fri, 21 Dec 2001 15:24:18 GMT</last_modification_time>
          <name>toolbar_play</name>
          <tooltip>Play Stream</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkControlPlay</handler>
            <data>&quot;intf_window&quot;</data>
-           <last_modification_time>Sat, 19 May 2001 03:14:17 GMT</last_modification_time>
+           <last_modification_time>Wed, 05 Jun 2002 15:10:19 GMT</last_modification_time>
          </signal>
          <label>Play</label>
          <stock_pixmap>GNOME_STOCK_PIXMAP_FORWARD</stock_pixmap>
          <sensitive>False</sensitive>
          <tooltip>Pause Stream</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkControlPause</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sat, 19 May 2001 03:14:05 GMT</last_modification_time>
          <sensitive>False</sensitive>
          <tooltip>Play Slower</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkControlSlow</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sat, 19 May 2001 03:13:58 GMT</last_modification_time>
          <sensitive>False</sensitive>
          <tooltip>Play Faster</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkControlFast</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sat, 19 May 2001 03:13:53 GMT</last_modification_time>
          <name>toolbar_playlist</name>
          <tooltip>Open Playlist</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkPlaylistShow</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sat, 19 May 2001 03:13:48 GMT</last_modification_time>
          <name>toolbar_prev</name>
          <tooltip>Previous File</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkPlaylistPrev</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sat, 19 May 2001 03:13:44 GMT</last_modification_time>
          <name>toolbar_next</name>
          <tooltip>Next File</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkPlaylistNext</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sat, 19 May 2001 03:13:40 GMT</last_modification_time>
     <name>popup_play</name>
     <signal>
       <name>activate</name>
-      <handler>GnomePopupPlayActivate</handler>
+      <handler>GtkControlPlay_GLADE_SUX_intf_popup</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Sat, 19 May 2001 16:16:58 GMT</last_modification_time>
     </signal>
     <name>popup_pause</name>
     <signal>
       <name>activate</name>
-      <handler>GnomePopupPauseActivate</handler>
+      <handler>GtkControlPause_GLADE_SUX_intf_popup</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Sat, 19 May 2001 16:17:31 GMT</last_modification_time>
     </signal>
     <name>popup_stop</name>
     <signal>
       <name>activate</name>
-      <handler>GnomePopupStopActivate</handler>
+      <handler>GtkControlStop_GLADE_SUX_intf_popup</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Sat, 19 May 2001 16:18:10 GMT</last_modification_time>
     </signal>
     <sensitive>False</sensitive>
     <signal>
       <name>activate</name>
-      <handler>GnomePopupBackActivate</handler>
+      <handler>GtkControlBack_GLADE_SUX_intf_popup</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Sat, 19 May 2001 16:18:21 GMT</last_modification_time>
     </signal>
     <name>popup_slow</name>
     <signal>
       <name>activate</name>
-      <handler>GnomePopupSlowActivate</handler>
+      <handler>GtkControlSlow_GLADE_SUX_intf_popup</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Sat, 19 May 2001 16:18:29 GMT</last_modification_time>
     </signal>
     <name>popup_fast</name>
     <signal>
       <name>activate</name>
-      <handler>GnomePopupFastActivate</handler>
+      <handler>GtkControlFast_GLADE_SUX_intf_popup</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Sat, 19 May 2001 16:18:37 GMT</last_modification_time>
     </signal>
     <name>popup_interface_toggle</name>
     <signal>
       <name>activate</name>
-      <handler>GnomePopupWindowToggleActivate</handler>
+      <handler>GtkWindowToggle_GLADE_SUX_intf_popup</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Sat, 19 May 2001 16:18:51 GMT</last_modification_time>
     </signal>
     <tooltip>Toggle fullscreen mode</tooltip>
     <signal>
       <name>activate</name>
-      <handler>GnomePopupFullscreenActivate</handler>
+      <handler>GtkFullscreen_GLADE_SUX_intf_popup</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Sat, 19 May 2001 16:19:07 GMT</last_modification_time>
     </signal>
     <name>popup_next</name>
     <signal>
       <name>activate</name>
-      <handler>GnomePopupNextActivate</handler>
+      <handler>GtkPlaylistNext_GLADE_SUX_intf_popup</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Sat, 19 May 2001 16:19:18 GMT</last_modification_time>
     </signal>
     <name>popup_prev</name>
     <signal>
       <name>activate</name>
-      <handler>GnomePopupPrevActivate</handler>
+      <handler>GtkPlaylistPrev_GLADE_SUX_intf_popup</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Sat, 19 May 2001 16:19:26 GMT</last_modification_time>
     </signal>
     <tooltip>Got directly so specified point</tooltip>
     <signal>
       <name>activate</name>
-      <handler>GnomePopupJumpActivate</handler>
+      <handler>GtkJumpShow_GLADE_SUX_intf_popup</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Sat, 19 May 2001 16:34:46 GMT</last_modification_time>
     </signal>
        <tooltip>Open a File</tooltip>
        <signal>
          <name>activate</name>
-         <handler>GnomePopupFileOpenActivate</handler>
+         <handler>GtkFileOpenShow_GLADE_SUX_intf_popup</handler>
          <data>&quot;intf_popup&quot;</data>
          <last_modification_time>Sat, 19 May 2001 16:20:08 GMT</last_modification_time>
        </signal>
        <tooltip>Open a DVD or VCD</tooltip>
        <signal>
          <name>activate</name>
-         <handler>GnomePopupDiscOpenActivate</handler>
+         <handler>GtkDiscOpenShow_GLADE_SUX_intf_popup</handler>
          <data>&quot;intf_popup&quot;</data>
          <last_modification_time>Sat, 19 May 2001 16:20:44 GMT</last_modification_time>
        </signal>
        <tooltip>Select a Network Stream</tooltip>
        <signal>
          <name>activate</name>
-         <handler>GnomePopupNetworkOpenActivate</handler>
+         <handler>GtkNetworkOpenShow_GLADE_SUX_intf_popup</handler>
          <data>&quot;intf_popup&quot;</data>
          <last_modification_time>Sat, 19 May 2001 16:20:54 GMT</last_modification_time>
        </signal>
        <name>popup_about</name>
        <signal>
          <name>activate</name>
-         <handler>GnomePopupAboutActivate</handler>
+         <handler>GtkAboutShow_GLADE_SUX_intf_popup</handler>
          <data>&quot;intf_popup&quot;</data>
          <last_modification_time>Sat, 19 May 2001 16:21:02 GMT</last_modification_time>
        </signal>
     <name>popup_playlist</name>
     <signal>
       <name>activate</name>
-      <handler>GnomePopupPlaylistActivate</handler>
+      <handler>GtkPlaylistShow_GLADE_SUX_intf_popup</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Sat, 19 May 2001 16:21:14 GMT</last_modification_time>
     </signal>
     <name>popup_preferences</name>
     <signal>
       <name>activate</name>
-      <handler>GnomePopupPreferencesActivate</handler>
+      <handler>GtkPreferencesShow_GLADE_SUX_intf_popup</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Sat, 19 May 2001 16:21:25 GMT</last_modification_time>
     </signal>
     <name>popup_exit</name>
     <signal>
       <name>activate</name>
-      <handler>GnomePopupExitActivate</handler>
+      <handler>GtkExit_GLADE_SUX_intf_popup</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Sat, 19 May 2001 16:21:45 GMT</last_modification_time>
     </signal>
@@ -2613,7 +2613,7 @@ http://www.videolan.org/
            <name>playlist_add_disc</name>
            <signal>
              <name>activate</name>
-             <handler>GnomePlaylistDiscOpenActivate</handler>
+             <handler>GtkDiscOpenShow_GLADE_SUX_intf_playlist</handler>
              <data>&quot;intf_playlist&quot;</data>
              <last_modification_time>Sat, 19 May 2001 16:22:26 GMT</last_modification_time>
            </signal>
@@ -2626,7 +2626,7 @@ http://www.videolan.org/
            <name>playlist_add_file</name>
            <signal>
              <name>activate</name>
-             <handler>GnomePlaylistFileOpenActivate</handler>
+             <handler>GtkFileOpenShow_GLADE_SUX_intf_playlist</handler>
              <data>&quot;intf_playlist&quot;</data>
              <last_modification_time>Sat, 19 May 2001 16:22:37 GMT</last_modification_time>
            </signal>
@@ -2639,7 +2639,7 @@ http://www.videolan.org/
            <name>playlist_add_network</name>
            <signal>
              <name>activate</name>
-             <handler>GnomePlaylistNetworkOpenActivate</handler>
+             <handler>GtkNetworkOpenShow_GLADE_SUX_intf_playlist</handler>
              <data>&quot;intf_playlist&quot;</data>
              <last_modification_time>Sat, 19 May 2001 16:22:52 GMT</last_modification_time>
            </signal>
index 28d3407..91426e8 100644 (file)
@@ -2,7 +2,7 @@
  * gnome_callbacks.c : GNOME-specific callbacks.
  *****************************************************************************
  * Copyright (C) 2000, 2001, 2002 VideoLAN
- * $Id: gnome_callbacks.c,v 1.11 2002/06/04 20:33:25 sam Exp $
+ * $Id: gnome_callbacks.c,v 1.12 2002/06/07 14:30:40 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Stéphane Borel <stef@via.ecp.fr>
  *****************************************************************************/
 
 /*****************************************************************************
- * Preamble
+ * This file is not needed: everything is in gtk_callbacks.c
  *****************************************************************************/
-#include <vlc/vlc.h>
-#include <vlc/intf.h>
-
-#include "gnome_callbacks.h"
-#include "gnome_interface.h"
-#include "gnome_support.h"
-
-#include <gnome.h>
-
-/*
- * These wrappers are made necessary by a bug in glade that seems not
- * to put user_data in c source of menuitems.
- */
-
-void
-GnomeMenubarFileOpenActivate           (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkFileOpenShow( GTK_WIDGET( menuitem ), NULL, "intf_window" );
-}
-
-
-void
-GnomeMenubarDiscOpenActivate           (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkDiscOpenShow( GTK_WIDGET( menuitem ), NULL, "intf_window" );
-}
-
-
-void
-GnomeMenubarNetworkOpenActivate         (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkNetworkOpenShow( GTK_WIDGET( menuitem ), NULL, "intf_window" );
-}
-
-void
-GnomeMenubarDiscEjectActivate           (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-     GtkDiscEject( GTK_WIDGET( menuitem ), NULL, "intf_window" );
-}
-
-void
-GnomeMenubarExitActivate               (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkExit( GTK_WIDGET( menuitem ), NULL, "intf_window" );
-}
-
-
-void
-GnomeMenubarWindowToggleActivate       (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkWindowToggle( GTK_WIDGET( menuitem ), NULL, "intf_window" );
-}
-
-
-void
-GnomeMenubarFullscreenActivate         (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkFullscreen( GTK_WIDGET( menuitem ), NULL, "intf_window" );
-}
-
-
-void
-GnomeMenubarPlaylistActivate           (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkPlaylistShow( GTK_WIDGET( menuitem ), NULL, "intf_window" );
-}
-
-
-void
-GnomeMenubarModulesActivate            (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkModulesShow( GTK_WIDGET( menuitem ), NULL, "intf_window" );
-}
-
-
-void
-GnomeMenubarPreferencesActivate        (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkPreferencesActivate( menuitem, "intf_window" );
-}
-
-
-void
-GnomeMenubarAboutActivate              (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkAboutShow( GTK_WIDGET( menuitem ), NULL, "intf_window" );
-}
-
-
-void
-GnomePopupPlayActivate                 (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkControlPlay( GTK_WIDGET( menuitem ), NULL, "intf_popup" );
-}
-
-
-void
-GnomePopupPauseActivate                (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkControlPause( GTK_WIDGET( menuitem ), NULL, "intf_popup" );
-}
-
-
-void
-GnomePopupStopActivate                 (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkControlStop( GTK_WIDGET( menuitem ), NULL, "intf_popup" );
-}
-
-
-void
-GnomePopupBackActivate                 (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkControlBack( GTK_WIDGET( menuitem ), NULL, "intf_popup" );
-}
-
-
-void
-GnomePopupSlowActivate                 (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkControlSlow( GTK_WIDGET( menuitem ), NULL, "intf_popup" );
-}
-
-
-void
-GnomePopupFastActivate                 (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkControlFast( GTK_WIDGET( menuitem ), NULL, "intf_popup" );
-}
-
-
-void
-GnomePopupWindowToggleActivate         (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkWindowToggle( GTK_WIDGET( menuitem ), NULL, "intf_popup" );
-}
-
-
-void
-GnomePopupFullscreenActivate           (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkFullscreen( GTK_WIDGET( menuitem ), NULL, "intf_popup" );
-}
-
-
-void
-GnomePopupNextActivate                 (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkPlaylistNext( GTK_WIDGET( menuitem ), NULL, "intf_popup" );
-}
-
-
-void
-GnomePopupPrevActivate                 (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkPlaylistPrev( GTK_WIDGET( menuitem ), NULL, "intf_popup" );
-}
-
-
-void
-GnomePopupFileOpenActivate             (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkFileOpenShow( GTK_WIDGET( menuitem ), NULL, "intf_popup" );
-}
-
-
-void
-GnomePopupDiscOpenActivate             (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkDiscOpenShow( GTK_WIDGET( menuitem ), NULL, "intf_popup" );
-}
-
-
-void
-GnomePopupNetworkOpenActivate          (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkNetworkOpenShow( GTK_WIDGET( menuitem ), NULL, "intf_popup" );
-}
-
-
-void
-GnomePopupAboutActivate                (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkAboutShow( GTK_WIDGET( menuitem ), NULL, "intf_popup" );
-}
-
-
-void
-GnomePopupPlaylistActivate             (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkPlaylistShow( GTK_WIDGET( menuitem ), NULL, "intf_popup" );
-}
-
-
-void
-GnomePopupPreferencesActivate          (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkPreferencesActivate( menuitem, "intf_popup" );
-}
-
-
-void
-GnomePopupExitActivate                 (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkExit( GTK_WIDGET( menuitem ), NULL, "intf_popup" );
-}
-
-
-void
-GnomePlaylistDiscOpenActivate          (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkDiscOpenShow( GTK_WIDGET( menuitem ), NULL, "intf_playlist" );
-}
-
-
-void
-GnomePlaylistFileOpenActivate          (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkFileOpenShow( GTK_WIDGET( menuitem ), NULL, "intf_playlist" );
-}
-
-
-void
-GnomePlaylistNetworkOpenActivate       (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkNetworkOpenShow( GTK_WIDGET( menuitem ), NULL, "intf_playlist" );
-}
-
-
-void
-GnomePopupJumpActivate                 (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkJumpShow( GTK_WIDGET( menuitem ), NULL, "intf_popup" );
-}
-
-
-void
-GnomeMenubarMessagesActivate           (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkMessagesShow( GTK_WIDGET( menuitem ), NULL, "intf_window" );
-}
-
index 86569ea..f6767e6 100644 (file)
@@ -1,197 +1 @@
-#include <gnome.h>
-
 #include "gtk_callbacks.h"
-
-void
-GnomeMenubarFileOpenActivate           (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomeMenubarDiscOpenActivate           (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomeMenubarNetworkOpenActivate         (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomeMenubarDiscEjectActivate         (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomeMenubarExitActivate               (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomeMenubarWindowToggleActivate       (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomeMenubarFullscreenActivate         (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomeMenubarPlaylistActivate           (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomeMenubarModulesActivate            (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomeMenubarPreferencesActivate        (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomeMenubarAboutActivate              (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomePopupPlayActivate                 (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomePopupPauseActivate                (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomePopupStopActivate                 (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomePopupBackActivate                 (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomePopupSlowActivate                 (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomePopupFastActivate                 (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomePopupWindowToggleActivate         (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomePopupFullscreenActivate           (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomePopupNextActivate                 (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomePopupPrevActivate                 (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomePopupFileOpenActivate             (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomePopupDiscOpenActivate             (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomePopupNetworkOpenActivate          (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomePopupAboutActivate                (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomePopupPlaylistActivate             (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomePopupPreferencesActivate          (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomePopupExitActivate                 (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomePlaylistDiscOpenActivate          (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomePlaylistFileOpenActivate          (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomePlaylistNetworkOpenActivate       (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GnomePopupJumpActivate                 (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-void
-GtkNetworkJoin                         (GtkEditable     *editable,
-                                        gpointer         user_data);
-
-void
-GtkChannelGo                           (GtkButton       *button,
-                                        gpointer         user_data);
-
-void
-GtkNetworkOpenBroadcast                (GtkToggleButton *togglebutton,
-                                        gpointer         user_data);
-
-void
-GtkNetworkOpenChannel                  (GtkToggleButton *togglebutton,
-                                        gpointer         user_data);
-
-
-void
-GnomeMenubarMessagesActivate           (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
-gboolean
-GtkSatOpenShow                         (GtkWidget       *widget,
-                                        GdkEventButton  *event,
-                                        gpointer         user_data);
-
-void
-GtkSatOpenOk                           (GtkButton       *button,
-                                        gpointer         user_data);
-
-void
-GtkSatOpenCancel                       (GtkButton       *button,
-                                        gpointer         user_data);
-
-void
-GnomeNetworkOpenUDP                    (GtkToggleButton *togglebutton,
-                                        gpointer         user_data);
-
-void
-GnomeNetworkOpenMulticast              (GtkToggleButton *togglebutton,
-                                        gpointer         user_data);
-
-void
-GnomeNetworkOpenChannel                (GtkToggleButton *togglebutton,
-                                        gpointer         user_data);
-
-void
-GnomeNetworkOpenHTTP                   (GtkToggleButton *togglebutton,
-                                        gpointer         user_data);
-
-void
-GtkNetworkOpenUDP                      (GtkToggleButton *togglebutton,
-                                        gpointer         user_data);
-
-void
-GtkNetworkOpenMulticast                (GtkToggleButton *togglebutton,
-                                        gpointer         user_data);
-
-void
-GtkNetworkOpenChannel                  (GtkToggleButton *togglebutton,
-                                        gpointer         user_data);
-
-void
-GtkNetworkOpenHTTP                     (GtkToggleButton *togglebutton,
-                                        gpointer         user_data);
index 8c2d665..3e60c42 100644 (file)
@@ -18,21 +18,21 @@ static GnomeUIInfo menubar_file_menu_uiinfo[] =
   {
     GNOME_APP_UI_ITEM, N_("_Open File..."),
     N_("Open a File"),
-    (gpointer) GnomeMenubarFileOpenActivate, NULL, NULL,
+    (gpointer) GtkFileOpenShow, "intf_window", NULL,
     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_OPEN,
     0, (GdkModifierType) 0, NULL
   },
   {
     GNOME_APP_UI_ITEM, N_("Open _Disc..."),
     N_("Open a DVD or VCD"),
-    (gpointer) GnomeMenubarDiscOpenActivate, NULL, NULL,
+    (gpointer) GtkDiscOpenShow, "intf_window", NULL,
     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_CDROM,
     0, (GdkModifierType) 0, NULL
   },
   {
     GNOME_APP_UI_ITEM, N_("_Network Stream..."),
     N_("Select a Network Stream"),
-    (gpointer) GnomeMenubarNetworkOpenActivate, NULL, NULL,
+    (gpointer) GtkNetworkOpenShow, "intf_window", NULL,
     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_REFRESH,
     0, (GdkModifierType) 0, NULL
   },
@@ -40,12 +40,12 @@ static GnomeUIInfo menubar_file_menu_uiinfo[] =
   {
     GNOME_APP_UI_ITEM, N_("_Eject Disc"),
     N_("Eject disc"),
-    (gpointer) GnomeMenubarDiscEjectActivate, NULL, NULL,
+    (gpointer) GtkDiscEject, "intf_window", NULL,
     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_TOP,
     0, (GdkModifierType) 0, NULL
   },
   GNOMEUIINFO_SEPARATOR,
-  GNOMEUIINFO_MENU_EXIT_ITEM (GnomeMenubarExitActivate, NULL),
+  GNOMEUIINFO_MENU_EXIT_ITEM (GtkExit, "intf_window"),
   GNOMEUIINFO_END
 };
 
@@ -54,14 +54,14 @@ static GnomeUIInfo menubar_view_menu_uiinfo[] =
   {
     GNOME_APP_UI_ITEM, N_("_Hide interface"),
     NULL,
-    (gpointer) GnomeMenubarWindowToggleActivate, NULL, NULL,
+    (gpointer) GtkWindowToggle, "intf_window", NULL,
     GNOME_APP_PIXMAP_NONE, NULL,
     0, (GdkModifierType) 0, NULL
   },
   {
     GNOME_APP_UI_ITEM, N_("_Fullscreen"),
     NULL,
-    (gpointer) GnomeMenubarFullscreenActivate, NULL, NULL,
+    (gpointer) GtkFullscreen, "intf_window", NULL,
     GNOME_APP_PIXMAP_NONE, NULL,
     0, (GdkModifierType) 0, NULL
   },
@@ -91,21 +91,21 @@ static GnomeUIInfo menubar_view_menu_uiinfo[] =
   {
     GNOME_APP_UI_ITEM, N_("_Playlist..."),
     N_("Open the playlist window"),
-    (gpointer) GnomeMenubarPlaylistActivate, NULL, NULL,
+    (gpointer) GtkPlaylistShow, "intf_window", NULL,
     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_INDEX,
     0, (GdkModifierType) 0, NULL
   },
   {
     GNOME_APP_UI_ITEM, N_("_Modules..."),
     N_("Open the module manager"),
-    (gpointer) GnomeMenubarModulesActivate, NULL, NULL,
+    (gpointer) GtkModulesShow, "intf_window", NULL,
     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_ATTACH,
     0, (GdkModifierType) 0, NULL
   },
   {
     GNOME_APP_UI_ITEM, N_("Messages..."),
     N_("Open the messages window"),
-    (gpointer) GnomeMenubarMessagesActivate, NULL, NULL,
+    (gpointer) GtkMessagesShow, "intf_window", NULL,
     GNOME_APP_PIXMAP_NONE, NULL,
     0, (GdkModifierType) 0, NULL
   },
@@ -129,13 +129,13 @@ static GnomeUIInfo menubar_settings_menu_uiinfo[] =
     0, (GdkModifierType) 0, NULL
   },
   GNOMEUIINFO_SEPARATOR,
-  GNOMEUIINFO_MENU_PREFERENCES_ITEM (GnomeMenubarPreferencesActivate, NULL),
+  GNOMEUIINFO_MENU_PREFERENCES_ITEM (GtkPreferencesShow, "intf_window"),
   GNOMEUIINFO_END
 };
 
 static GnomeUIInfo menubar_help_menu_uiinfo[] =
 {
-  GNOMEUIINFO_MENU_ABOUT_ITEM (GnomeMenubarAboutActivate, NULL),
+  GNOMEUIINFO_MENU_ABOUT_ITEM (GtkAboutShow, "intf_window"),
   GNOMEUIINFO_END
 };
 
@@ -722,46 +722,46 @@ create_intf_window (void)
                       GTK_SIGNAL_FUNC (GtkWindowDrag),
                       "intf_window");
   gnome_app_install_menu_hints (GNOME_APP (intf_window), menubar_uiinfo);
-  gtk_signal_connect (GTK_OBJECT (toolbar_file), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_file), "clicked",
                       GTK_SIGNAL_FUNC (GtkFileOpenShow),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_disc), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_disc), "clicked",
                       GTK_SIGNAL_FUNC (GtkDiscOpenShow),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_network), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_network), "clicked",
                       GTK_SIGNAL_FUNC (GtkNetworkOpenShow),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_sat), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_sat), "clicked",
                       GTK_SIGNAL_FUNC (GtkSatOpenShow),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_back), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_back), "clicked",
                       GTK_SIGNAL_FUNC (GtkControlBack),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_stop), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_stop), "clicked",
                       GTK_SIGNAL_FUNC (GtkControlStop),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_eject), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_eject), "clicked",
                       GTK_SIGNAL_FUNC (GtkDiscEject),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_play), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_play), "clicked",
                       GTK_SIGNAL_FUNC (GtkControlPlay),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_pause), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_pause), "clicked",
                       GTK_SIGNAL_FUNC (GtkControlPause),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_slow), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_slow), "clicked",
                       GTK_SIGNAL_FUNC (GtkControlSlow),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_fast), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_fast), "clicked",
                       GTK_SIGNAL_FUNC (GtkControlFast),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_playlist), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_playlist), "clicked",
                       GTK_SIGNAL_FUNC (GtkPlaylistShow),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_prev), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_prev), "clicked",
                       GTK_SIGNAL_FUNC (GtkPlaylistPrev),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_next), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_next), "clicked",
                       GTK_SIGNAL_FUNC (GtkPlaylistNext),
                       "intf_window");
   gtk_signal_connect (GTK_OBJECT (slider), "button_press_event",
@@ -799,26 +799,26 @@ static GnomeUIInfo popup_file_menu_uiinfo[] =
   {
     GNOME_APP_UI_ITEM, N_("_Open File..."),
     N_("Open a File"),
-    (gpointer) GnomePopupFileOpenActivate, NULL, NULL,
+    (gpointer) GtkFileOpenShow, "intf_popup", NULL,
     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_OPEN,
     0, (GdkModifierType) 0, NULL
   },
   {
     GNOME_APP_UI_ITEM, N_("Open _Disc..."),
     N_("Open a DVD or VCD"),
-    (gpointer) GnomePopupDiscOpenActivate, NULL, NULL,
+    (gpointer) GtkDiscOpenShow, "intf_popup", NULL,
     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_CDROM,
     0, (GdkModifierType) 0, NULL
   },
   {
     GNOME_APP_UI_ITEM, N_("_Network Stream..."),
     N_("Select a Network Stream"),
-    (gpointer) GnomePopupNetworkOpenActivate, NULL, NULL,
+    (gpointer) GtkNetworkOpenShow, "intf_popup", NULL,
     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_REFRESH,
     0, (GdkModifierType) 0, NULL
   },
   GNOMEUIINFO_SEPARATOR,
-  GNOMEUIINFO_MENU_ABOUT_ITEM (GnomePopupAboutActivate, NULL),
+  GNOMEUIINFO_MENU_ABOUT_ITEM (GtkAboutShow, "intf_popup"),
   GNOMEUIINFO_END
 };
 
@@ -827,42 +827,42 @@ static GnomeUIInfo intf_popup_uiinfo[] =
   {
     GNOME_APP_UI_ITEM, N_("Play"),
     NULL,
-    (gpointer) GnomePopupPlayActivate, NULL, NULL,
+    (gpointer) GtkControlPlay, "intf_popup", NULL,
     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_FORWARD,
     0, (GdkModifierType) 0, NULL
   },
   {
     GNOME_APP_UI_ITEM, N_("Pause"),
     NULL,
-    (gpointer) GnomePopupPauseActivate, NULL, NULL,
+    (gpointer) GtkControlPause, "intf_popup", NULL,
     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_BOTTOM,
     0, (GdkModifierType) 0, NULL
   },
   {
     GNOME_APP_UI_ITEM, N_("Stop"),
     NULL,
-    (gpointer) GnomePopupStopActivate, NULL, NULL,
+    (gpointer) GtkControlStop, "intf_popup", NULL,
     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_STOP,
     0, (GdkModifierType) 0, NULL
   },
   {
     GNOME_APP_UI_ITEM, N_("Back"),
     NULL,
-    (gpointer) GnomePopupBackActivate, NULL, NULL,
+    (gpointer) GtkControlBack, "intf_popup", NULL,
     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_BACK,
     0, (GdkModifierType) 0, NULL
   },
   {
     GNOME_APP_UI_ITEM, N_("Slow"),
     NULL,
-    (gpointer) GnomePopupSlowActivate, NULL, NULL,
+    (gpointer) GtkControlSlow, "intf_popup", NULL,
     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_TIMER_STOP,
     0, (GdkModifierType) 0, NULL
   },
   {
     GNOME_APP_UI_ITEM, N_("Fast"),
     NULL,
-    (gpointer) GnomePopupFastActivate, NULL, NULL,
+    (gpointer) GtkControlFast, "intf_popup", NULL,
     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_TIMER,
     0, (GdkModifierType) 0, NULL
   },
@@ -870,14 +870,14 @@ static GnomeUIInfo intf_popup_uiinfo[] =
   {
     GNOME_APP_UI_ITEM, N_("Toggle _Interface"),
     NULL,
-    (gpointer) GnomePopupWindowToggleActivate, NULL, NULL,
+    (gpointer) GtkWindowToggle, "intf_popup", NULL,
     GNOME_APP_PIXMAP_NONE, NULL,
     0, (GdkModifierType) 0, NULL
   },
   {
     GNOME_APP_UI_ITEM, N_("_Fullscreen"),
     N_("Toggle fullscreen mode"),
-    (gpointer) GnomePopupFullscreenActivate, NULL, NULL,
+    (gpointer) GtkFullscreen, "intf_popup", NULL,
     GNOME_APP_PIXMAP_NONE, NULL,
     0, (GdkModifierType) 0, NULL
   },
@@ -885,21 +885,21 @@ static GnomeUIInfo intf_popup_uiinfo[] =
   {
     GNOME_APP_UI_ITEM, N_("Next"),
     NULL,
-    (gpointer) GnomePopupNextActivate, NULL, NULL,
+    (gpointer) GtkPlaylistNext, "intf_popup", NULL,
     GNOME_APP_PIXMAP_NONE, NULL,
     0, (GdkModifierType) 0, NULL
   },
   {
     GNOME_APP_UI_ITEM, N_("Prev"),
     NULL,
-    (gpointer) GnomePopupPrevActivate, NULL, NULL,
+    (gpointer) GtkPlaylistPrev, "intf_popup", NULL,
     GNOME_APP_PIXMAP_NONE, NULL,
     0, (GdkModifierType) 0, NULL
   },
   {
     GNOME_APP_UI_ITEM, N_("_Jump..."),
     N_("Got directly so specified point"),
-    (gpointer) GnomePopupJumpActivate, NULL, NULL,
+    (gpointer) GtkJumpShow, "intf_popup", NULL,
     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_JUMP_TO,
     0, (GdkModifierType) 0, NULL
   },
@@ -936,13 +936,13 @@ static GnomeUIInfo intf_popup_uiinfo[] =
   {
     GNOME_APP_UI_ITEM, N_("Playlist..."),
     NULL,
-    (gpointer) GnomePopupPlaylistActivate, NULL, NULL,
+    (gpointer) GtkPlaylistShow, "intf_popup", NULL,
     GNOME_APP_PIXMAP_NONE, NULL,
     0, (GdkModifierType) 0, NULL
   },
-  GNOMEUIINFO_MENU_PREFERENCES_ITEM (GnomePopupPreferencesActivate, NULL),
+  GNOMEUIINFO_MENU_PREFERENCES_ITEM (GtkPreferencesShow, "intf_popup"),
   GNOMEUIINFO_SEPARATOR,
-  GNOMEUIINFO_MENU_EXIT_ITEM (GnomePopupExitActivate, NULL),
+  GNOMEUIINFO_MENU_EXIT_ITEM (GtkExit, "intf_popup"),
   GNOMEUIINFO_END
 };
 
@@ -1706,21 +1706,21 @@ static GnomeUIInfo playlist_add_menu_uiinfo[] =
   {
     GNOME_APP_UI_ITEM, N_("Disc"),
     NULL,
-    (gpointer) GnomePlaylistDiscOpenActivate, NULL, NULL,
+    (gpointer) GtkDiscOpenShow, "intf_playlist", NULL,
     GNOME_APP_PIXMAP_NONE, NULL,
     0, (GdkModifierType) 0, NULL
   },
   {
     GNOME_APP_UI_ITEM, N_("File"),
     NULL,
-    (gpointer) GnomePlaylistFileOpenActivate, NULL, NULL,
+    (gpointer) GtkFileOpenShow, "intf_playlist", NULL,
     GNOME_APP_PIXMAP_NONE, NULL,
     0, (GdkModifierType) 0, NULL
   },
   {
     GNOME_APP_UI_ITEM, N_("Network"),
     NULL,
-    (gpointer) GnomePlaylistNetworkOpenActivate, NULL, NULL,
+    (gpointer) GtkNetworkOpenShow, "intf_playlist", NULL,
     GNOME_APP_PIXMAP_NONE, NULL,
     0, (GdkModifierType) 0, NULL
   },
index 6311469..fc13f5c 100644 (file)
@@ -2,7 +2,7 @@
  * gtk.c : Gtk+ plugin for vlc
  *****************************************************************************
  * Copyright (C) 2000-2001 VideoLAN
- * $Id: gtk.c,v 1.26 2002/06/02 09:03:54 sam Exp $
+ * $Id: gtk.c,v 1.27 2002/06/07 14:30:40 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -174,6 +174,11 @@ static int intf_Open( intf_thread_t *p_intf )
  *****************************************************************************/
 static void intf_Close( intf_thread_t *p_intf )
 {
+    if( p_intf->p_sys->p_input )
+    {
+        vlc_object_release( p_intf->p_sys->p_input );
+    }
+
     msg_Unsubscribe( p_intf, p_intf->p_sys->p_sub );
 
     /* Destroy structure */
@@ -217,7 +222,7 @@ static void intf_Run( intf_thread_t *p_intf )
     /* Create some useful widgets that will certainly be used */
     p_intf->p_sys->p_window = create_intf_window();
     p_intf->p_sys->p_popup = create_intf_popup();
-    p_intf->p_sys->p_playlist = create_intf_playlist();
+    p_intf->p_sys->p_playwin = create_intf_playlist();
     p_intf->p_sys->p_messages = create_intf_messages();
     p_intf->p_sys->p_tooltips = gtk_tooltips_new();
 
@@ -231,7 +236,7 @@ static void intf_Run( intf_thread_t *p_intf )
                        1, GDK_ACTION_COPY );
 
     /* Accept file drops on the playlist window */
-    gtk_drag_dest_set( GTK_WIDGET( lookup_widget( p_intf->p_sys->p_playlist,
+    gtk_drag_dest_set( GTK_WIDGET( lookup_widget( p_intf->p_sys->p_playwin,
                                    "playlist_clist") ),
                        GTK_DEST_DEFAULT_ALL, target_table,
                        1, GDK_ACTION_COPY );
@@ -285,7 +290,7 @@ static void intf_Run( intf_thread_t *p_intf )
     gtk_object_set_data( GTK_OBJECT(p_intf->p_sys->p_popup),
                          "p_intf", p_intf );
 
-    gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_playlist ),
+    gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_playwin ),
                          "p_intf", p_intf );
 
     gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_messages ),
@@ -396,20 +401,16 @@ static gint GtkManage( gpointer p_data )
     GtkPlayListManage( p_data );
 
     /* Update the input */
-    if( p_intf->p_sys->p_input != NULL )
-    {
-        if( p_intf->p_sys->p_input->b_dead )
-        {
-            vlc_object_release( p_intf->p_sys->p_input );
-            p_intf->p_sys->p_input = NULL;
-        }
-    }
-
     if( p_intf->p_sys->p_input == NULL )
     {
         p_intf->p_sys->p_input = vlc_object_find( p_intf, VLC_OBJECT_INPUT,
                                                           FIND_ANYWHERE );
     }
+    else if( p_intf->p_sys->p_input->b_dead )
+    {
+        vlc_object_release( p_intf->p_sys->p_input );
+        p_intf->p_sys->p_input = NULL;
+    }
 
     if( p_intf->p_sys->p_input )
     {
index e2df739..e112c17 100644 (file)
@@ -88,7 +88,7 @@
              </accelerator>
              <signal>
                <name>activate</name>
-               <handler>GtkFileOpenActivate</handler>
+               <handler>GtkFileOpenShow</handler>
                <data>&quot;intf_window&quot;</data>
                <last_modification_time>Mon, 14 May 2001 21:27:36 GMT</last_modification_time>
              </signal>
              </accelerator>
              <signal>
                <name>activate</name>
-               <handler>GtkDiscOpenActivate</handler>
+               <handler>GtkDiscOpenShow</handler>
                <data>&quot;intf_window&quot;</data>
                <last_modification_time>Mon, 14 May 2001 21:27:47 GMT</last_modification_time>
              </signal>
              </accelerator>
              <signal>
                <name>activate</name>
-               <handler>GtkNetworkOpenActivate</handler>
+               <handler>GtkNetworkOpenShow</handler>
                <data>&quot;intf_window&quot;</data>
                <last_modification_time>Mon, 14 May 2001 21:28:06 GMT</last_modification_time>
              </signal>
              <tooltip>Eject disc</tooltip>
              <signal>
                <name>activate</name>
-               <handler>GtkEjectDiscActivate</handler>
+               <handler>GtkDiscEject</handler>
                <data>&quot;intf_window&quot;</data>
                <last_modification_time>Fri, 21 Dec 2001 12:51:34 GMT</last_modification_time>
              </signal>
              </accelerator>
              <signal>
                <name>activate</name>
-               <handler>GtkExitActivate</handler>
+               <handler>GtkExit</handler>
                <data>&quot;intf_window&quot;</data>
                <last_modification_time>Mon, 14 May 2001 21:28:20 GMT</last_modification_time>
              </signal>
              <tooltip>Hide the main interface window</tooltip>
              <signal>
                <name>activate</name>
-               <handler>GtkWindowToggleActivate</handler>
+               <handler>GtkWindowToggle</handler>
                <data>&quot;intf_window&quot;</data>
                <last_modification_time>Mon, 14 May 2001 21:32:49 GMT</last_modification_time>
              </signal>
              <name>menubar_fullscreen</name>
              <signal>
                <name>activate</name>
-               <handler>GtkFullscreenActivate</handler>
+               <handler>GtkFullscreen</handler>
                <data>&quot;intf_window&quot;</data>
                <last_modification_time>Mon, 14 May 2001 21:29:21 GMT</last_modification_time>
              </signal>
              <tooltip>Open the playlist window</tooltip>
              <signal>
                <name>activate</name>
-               <handler>GtkPlaylistActivate</handler>
+               <handler>GtkPlaylistShow</handler>
                <data>&quot;intf_window&quot;</data>
                <last_modification_time>Mon, 14 May 2001 21:29:34 GMT</last_modification_time>
              </signal>
              <tooltip>Open the module manager</tooltip>
              <signal>
                <name>activate</name>
-               <handler>GtkModulesActivate</handler>
+               <handler>GtkModulesShow</handler>
                <data>&quot;intf_window&quot;</data>
                <last_modification_time>Mon, 14 May 2001 21:29:44 GMT</last_modification_time>
              </signal>
              <tooltip>Open the messages window</tooltip>
              <signal>
                <name>activate</name>
-               <handler>GtkMessagesActivate</handler>
+               <handler>GtkMessagesShow</handler>
                <data>&quot;intf_window&quot;</data>
                <last_modification_time>Tue, 19 Feb 2002 02:03:47 GMT</last_modification_time>
              </signal>
              <tooltip>Configure the application</tooltip>
              <signal>
                <name>activate</name>
-               <handler>GtkPreferencesActivate</handler>
+               <handler>GtkPreferencesShow</handler>
                <data>&quot;intf_window&quot;</data>
                <last_modification_time>Mon, 14 May 2001 21:30:02 GMT</last_modification_time>
              </signal>
              <tooltip>About this application</tooltip>
              <signal>
                <name>activate</name>
-               <handler>GtkAboutActivate</handler>
+               <handler>GtkAboutShow</handler>
                <data>&quot;intf_window&quot;</data>
                <last_modification_time>Mon, 14 May 2001 21:30:15 GMT</last_modification_time>
              </signal>
          <name>toolbar_open</name>
          <tooltip>Open a File</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkFileOpenShow</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sun, 13 May 2001 15:10:21 GMT</last_modification_time>
          <name>toolbar_disc</name>
          <tooltip>Open a DVD or VCD</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkDiscOpenShow</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sun, 13 May 2001 15:10:30 GMT</last_modification_time>
          <name>toolbar_network</name>
          <tooltip>Select a Network Stream</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkNetworkOpenShow</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sun, 13 May 2001 15:10:37 GMT</last_modification_time>
          <name>toolbar_sat</name>
          <tooltip>Open a Satellite Card</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkSatOpenShow</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sun, 24 Mar 2002 15:08:57 GMT</last_modification_time>
          <sensitive>False</sensitive>
          <tooltip>Go Backward</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkControlBack</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sun, 13 May 2001 15:10:47 GMT</last_modification_time>
          <name>toolbar_stop</name>
          <tooltip>Stop Stream</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkControlStop</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sun, 13 May 2001 15:10:57 GMT</last_modification_time>
          <child_name>Toolbar:button</child_name>
          <name>toolbar_eject</name>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkDiscEject</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Fri, 21 Dec 2001 15:33:26 GMT</last_modification_time>
          <name>toolbar_play</name>
          <tooltip>Play Stream</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkControlPlay</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sun, 13 May 2001 15:11:06 GMT</last_modification_time>
          <sensitive>False</sensitive>
          <tooltip>Pause Stream</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkControlPause</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sun, 13 May 2001 15:11:13 GMT</last_modification_time>
          <sensitive>False</sensitive>
          <tooltip>Play Slower</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkControlSlow</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sun, 13 May 2001 15:11:20 GMT</last_modification_time>
          <sensitive>False</sensitive>
          <tooltip>Play Faster</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkControlFast</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sun, 13 May 2001 15:11:31 GMT</last_modification_time>
          <name>toolbar_playlist</name>
          <tooltip>Open Playlist</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkPlaylistShow</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sun, 13 May 2001 15:11:38 GMT</last_modification_time>
          <name>toolbar_prev</name>
          <tooltip>Previous File</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkPlaylistPrev</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sun, 13 May 2001 15:11:45 GMT</last_modification_time>
          <name>toolbar_next</name>
          <tooltip>Next File</tooltip>
          <signal>
-           <name>button_press_event</name>
+           <name>clicked</name>
            <handler>GtkPlaylistNext</handler>
            <data>&quot;intf_window&quot;</data>
            <last_modification_time>Sun, 13 May 2001 15:11:58 GMT</last_modification_time>
     <name>popup_play</name>
     <signal>
       <name>activate</name>
-      <handler>GtkPlayActivate</handler>
+      <handler>GtkControlPlay</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Tue, 15 May 2001 13:53:43 GMT</last_modification_time>
     </signal>
     <sensitive>False</sensitive>
     <signal>
       <name>activate</name>
-      <handler>GtkPauseActivate</handler>
+      <handler>GtkControlPause</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Tue, 15 May 2001 13:53:37 GMT</last_modification_time>
     </signal>
     <name>popup_stop</name>
     <signal>
       <name>activate</name>
-      <handler>GtKStopActivate</handler>
+      <handler>GtkControlStop</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Tue, 15 May 2001 13:53:29 GMT</last_modification_time>
     </signal>
     <sensitive>False</sensitive>
     <signal>
       <name>activate</name>
-      <handler>GtkBackActivate</handler>
+      <handler>GtkControlBack</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Tue, 15 May 2001 13:53:21 GMT</last_modification_time>
     </signal>
     <sensitive>False</sensitive>
     <signal>
       <name>activate</name>
-      <handler>GtkSlowActivate</handler>
+      <handler>GtkControlSlow</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Tue, 15 May 2001 13:53:15 GMT</last_modification_time>
     </signal>
     <sensitive>False</sensitive>
     <signal>
       <name>activate</name>
-      <handler>GtkFastActivate</handler>
+      <handler>GtkControlFast</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Tue, 15 May 2001 13:53:07 GMT</last_modification_time>
     </signal>
     <name>popup_interface_toggle</name>
     <signal>
       <name>activate</name>
-      <handler>GtkWindowToggleActivate</handler>
+      <handler>GtkWindowToggle</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Tue, 15 May 2001 13:53:00 GMT</last_modification_time>
     </signal>
     <name>popup_fullscreen</name>
     <signal>
       <name>activate</name>
-      <handler>GtkFullscreenActivate</handler>
+      <handler>GtkFullscreen</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Tue, 15 May 2001 13:52:38 GMT</last_modification_time>
     </signal>
     <name>popup_next</name>
     <signal>
       <name>activate</name>
-      <handler>GtkNextActivate</handler>
+      <handler>GtkPlaylistNext</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Tue, 15 May 2001 13:52:31 GMT</last_modification_time>
     </signal>
     <name>popup_prev</name>
     <signal>
       <name>activate</name>
-      <handler>GtkPrevActivate</handler>
+      <handler>GtkPlaylistPrev</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Tue, 15 May 2001 13:52:23 GMT</last_modification_time>
     </signal>
     <name>popup_jump</name>
     <signal>
       <name>activate</name>
-      <handler>GtkJumpActivate</handler>
+      <handler>GtkJumpShow</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Tue, 15 May 2001 13:52:13 GMT</last_modification_time>
     </signal>
        <tooltip>Open a File</tooltip>
        <signal>
          <name>activate</name>
-         <handler>GtkFileOpenActivate</handler>
+         <handler>GtkFileOpenShow</handler>
          <data>&quot;intf_popup&quot;</data>
          <last_modification_time>Mon, 14 May 2001 21:33:55 GMT</last_modification_time>
        </signal>
        <tooltip>Open a DVD or VCD</tooltip>
        <signal>
          <name>activate</name>
-         <handler>GtkDiscOpenActivate</handler>
+         <handler>GtkDiscOpenShow</handler>
          <data>&quot;intf_popup&quot;</data>
          <last_modification_time>Mon, 14 May 2001 21:34:09 GMT</last_modification_time>
        </signal>
        <tooltip>Select a Network Stream</tooltip>
        <signal>
          <name>activate</name>
-         <handler>GtkNetworkOpenActivate</handler>
+         <handler>GtkNetworkOpenShow</handler>
          <data>&quot;intf_popup&quot;</data>
          <last_modification_time>Mon, 14 May 2001 21:34:23 GMT</last_modification_time>
        </signal>
        <name>popup_about</name>
        <signal>
          <name>activate</name>
-         <handler>GtkAboutActivate</handler>
+         <handler>GtkAboutShow</handler>
          <data>&quot;intf_popup&quot;</data>
          <last_modification_time>Mon, 14 May 2001 21:34:54 GMT</last_modification_time>
        </signal>
     <name>popup_playlist</name>
     <signal>
       <name>activate</name>
-      <handler>GtkPlaylistActivate</handler>
+      <handler>GtkPlaylistShow</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Tue, 15 May 2001 13:51:55 GMT</last_modification_time>
     </signal>
     <name>popup_preferences</name>
     <signal>
       <name>activate</name>
-      <handler>GtkPreferencesActivate</handler>
+      <handler>GtkPreferencesShow</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Tue, 15 May 2001 13:51:46 GMT</last_modification_time>
     </signal>
     <name>popup_exit</name>
     <signal>
       <name>activate</name>
-      <handler>GtkExitActivate</handler>
+      <handler>GtkExit</handler>
       <data>&quot;intf_popup&quot;</data>
       <last_modification_time>Tue, 15 May 2001 13:52:03 GMT</last_modification_time>
     </signal>
@@ -2835,7 +2835,7 @@ http://www.videolan.org/</label>
            <name>playlist_add_disc</name>
            <signal>
              <name>activate</name>
-             <handler>GtkDiscOpenActivate</handler>
+             <handler>GtkDiscOpenShow</handler>
              <data>&quot;intf_playlist&quot;</data>
              <last_modification_time>Mon, 14 May 2001 21:59:32 GMT</last_modification_time>
            </signal>
@@ -2848,7 +2848,7 @@ http://www.videolan.org/</label>
            <name>playlist_add_file</name>
            <signal>
              <name>activate</name>
-             <handler>GtkFileOpenActivate</handler>
+             <handler>GtkFileOpenShow</handler>
              <data>&quot;intf_playlist&quot;</data>
              <last_modification_time>Mon, 14 May 2001 21:59:48 GMT</last_modification_time>
            </signal>
@@ -2861,7 +2861,7 @@ http://www.videolan.org/</label>
            <name>playlist_add_network</name>
            <signal>
              <name>activate</name>
-             <handler>GtkNetworkOpenActivate</handler>
+             <handler>GtkNetworkOpenShow</handler>
              <data>&quot;intf_playlist&quot;</data>
              <last_modification_time>Mon, 14 May 2001 22:00:03 GMT</last_modification_time>
            </signal>
index 58332ce..60495b7 100644 (file)
@@ -2,7 +2,7 @@
  * gtk_callbacks.c : Callbacks for the Gtk+ plugin.
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: gtk_callbacks.c,v 1.43 2002/06/04 20:33:25 sam Exp $
+ * $Id: gtk_callbacks.c,v 1.44 2002/06/07 14:30:40 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Stéphane Borel <stef@via.ecp.fr>
@@ -55,7 +55,6 @@
  */
 
 gboolean GtkExit( GtkWidget       *widget,
-                  GdkEventButton  *event,
                   gpointer         user_data )
 {
     intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
@@ -71,14 +70,13 @@ gboolean GtkWindowDelete( GtkWidget       *widget,
                           GdkEvent        *event,
                           gpointer         user_data )
 {
-    GtkExit( GTK_WIDGET( widget ), NULL, user_data );
+    GtkExit( GTK_WIDGET( widget ), user_data );
 
     return TRUE;
 }
 
 
 gboolean GtkWindowToggle( GtkWidget       *widget,
-                          GdkEventButton  *event,
                           gpointer         user_data )
 {
     intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
@@ -97,7 +95,6 @@ gboolean GtkWindowToggle( GtkWidget       *widget,
 }
 
 gboolean GtkFullscreen( GtkWidget       *widget,
-                        GdkEventButton  *event,
                         gpointer         user_data)
 {
     intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
@@ -125,19 +122,8 @@ void GtkWindowDrag( GtkWidget       *widget,
                     guint            time,
                     gpointer         user_data)
 {
-#if 0 /* PLAYLIST TARASS */
     intf_thread_t * p_intf =  GetIntf( GTK_WIDGET(widget), "intf_window" );
-    int end = p_intf->p_vlc->p_playlist->i_size;
     GtkDropDataReceived( p_intf, data, info, PLAYLIST_END );
-
-    if( p_intf->p_sys->p_input != NULL )
-    {
-        /* FIXME: temporary hack */
-        p_intf->p_sys->p_input->b_eof = 1;
-    }
-     
-    intf_PlaylistJumpto( p_intf->p_vlc->p_playlist, end-1 );
-#endif
 }
 
 
@@ -200,8 +186,6 @@ void GtkTitlePrev( GtkButton * button, gpointer user_data )
         GtkSetupMenus( p_intf );
         vlc_mutex_unlock( &p_intf->p_sys->p_input->stream.stream_lock );
     }
-
-    vlc_object_release( p_intf->p_sys->p_input );
 }
 
 
@@ -226,7 +210,6 @@ void GtkTitleNext( GtkButton * button, gpointer user_data )
         GtkSetupMenus( p_intf );
         vlc_mutex_unlock( &p_intf->p_sys->p_input->stream.stream_lock );
     }
-
 }
 
 
@@ -316,7 +299,6 @@ void GtkChannelGo( GtkButton * button, gpointer user_data )
  ****************************************************************************/
 
 gboolean GtkAboutShow( GtkWidget       *widget,
-                       GdkEventButton  *event,
                        gpointer         user_data)
 {
     intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
@@ -346,7 +328,6 @@ void GtkAboutOk( GtkButton * button, gpointer user_data)
  ****************************************************************************/
 
 gboolean GtkJumpShow( GtkWidget       *widget,
-                      GdkEventButton  *event,
                       gpointer         user_data)
 {
     intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
@@ -371,6 +352,11 @@ void GtkJumpOk( GtkButton       *button,
     intf_thread_t * p_intf = GetIntf( GTK_WIDGET( button ), (char*)user_data );
     int i_hours, i_minutes, i_seconds;
 
+    if( p_intf->p_sys->p_input == NULL )
+    {
+        return;
+    }
+
 #define GET_VALUE( name )                                                   \
     gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON( gtk_object_get_data( \
         GTK_OBJECT( p_intf->p_sys->p_jump ), name ) ) )
@@ -379,12 +365,10 @@ void GtkJumpOk( GtkButton       *button,
     i_seconds = GET_VALUE( "jump_second_spinbutton" );
 #undef GET_VALUE
 
-    input_Seek( p_intf, i_seconds + 60 * i_minutes + 3600 * i_hours,
-                        INPUT_SEEK_SECONDS | INPUT_SEEK_SET );
+    input_Seek( p_intf->p_sys->p_input,
+                i_seconds + 60 * i_minutes + 3600 * i_hours,
+                INPUT_SEEK_SECONDS | INPUT_SEEK_SET );
 
-#if 0 /* PLAYLIST TARASS */
-    p_intf->p_vlc->p_playlist->b_stopped = 0;
-#endif
     gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
 }
 
@@ -395,51 +379,10 @@ void GtkJumpCancel( GtkButton       *button,
     gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
 }
 
-
-/****************************************************************************
- * Callbacks for menuitems
- ****************************************************************************/
-void GtkExitActivate( GtkMenuItem * menuitem, gpointer user_data )
-{
-    GtkExit( GTK_WIDGET( menuitem ), NULL, user_data );
-}
-
-
-void GtkFullscreenActivate( GtkMenuItem * menuitem, gpointer user_data )
-{
-    GtkFullscreen( GTK_WIDGET( menuitem ), NULL, user_data );
-}
-
-
-void GtkWindowToggleActivate( GtkMenuItem * menuitem, gpointer user_data )
-{
-    GtkWindowToggle( GTK_WIDGET( menuitem ), NULL, user_data );
-}
-
-
-void GtkAboutActivate( GtkMenuItem * menuitem, gpointer user_data )
-{
-    GtkAboutShow( GTK_WIDGET( menuitem ), NULL, user_data );
-}
-
-
-void GtkJumpActivate( GtkMenuItem * menuitem, gpointer user_data )
-{
-    GtkJumpShow( GTK_WIDGET( menuitem ), NULL, user_data );
-}
-
-
-void GtkMessagesActivate( GtkMenuItem * menuitem, gpointer user_data )
-{
-    GtkMessagesShow( GTK_WIDGET( menuitem ), NULL, user_data );
-}
-
-
 /****************************************************************************
  * Callbacks for disc ejection
  ****************************************************************************/
-gboolean GtkDiscEject ( GtkWidget *widget, GdkEventButton *event,
-                        gpointer user_data )
+gboolean GtkDiscEject ( GtkWidget *widget, gpointer user_data )
 {
 #if 0 /* PLAYLIST TARASS */
     intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
@@ -523,17 +466,11 @@ gboolean GtkDiscEject ( GtkWidget *widget, GdkEventButton *event,
     return TRUE;
 }
 
-void GtkEjectDiscActivate ( GtkMenuItem *menuitem, gpointer user_data )
-{
-    GtkDiscEject( GTK_WIDGET( menuitem ), NULL, user_data );
-}
-
 /****************************************************************************
  * Messages window
  ****************************************************************************/
 
 gboolean GtkMessagesShow( GtkWidget       *widget,
-                          GdkEventButton  *event,
                           gpointer         user_data)
 {
     static GdkColor black = { 0, 0x0000, 0x0000, 0x0000 };
index 0890aeb..5da051a 100644 (file)
@@ -2,7 +2,7 @@
  * gtk_callbacks.h : Callbacks for the gtk plugin.
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: gtk_callbacks.h,v 1.19 2002/05/18 02:12:20 ipkiss Exp $
+ * $Id: gtk_callbacks.h,v 1.20 2002/06/07 14:30:40 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Stéphane Borel <stef@via.ecp.fr>
  *  main window callbacks: specific prototypes are in headers listed before
  *****************************************************************************/
 
-gboolean GtkExit                ( GtkWidget *, GdkEventButton *, gpointer );
-gboolean GtkWindowToggle        ( GtkWidget *, GdkEventButton *, gpointer );
-gboolean GtkFullscreen          ( GtkWidget *, GdkEventButton *, gpointer );
+gboolean GtkExit                ( GtkWidget *, gpointer );
+gboolean GtkWindowToggle        ( GtkWidget *, gpointer );
+gboolean GtkFullscreen          ( GtkWidget *, gpointer );
 gboolean GtkSliderRelease       ( GtkWidget *, GdkEventButton *, gpointer );
 gboolean GtkSliderPress         ( GtkWidget *, GdkEventButton *, gpointer );
 gboolean GtkWindowDelete        ( GtkWidget * widget, GdkEvent *, gpointer );
-gboolean GtkJumpShow            ( GtkWidget *, GdkEventButton *, gpointer );
-gboolean GtkAboutShow           ( GtkWidget *, GdkEventButton *, gpointer );
-gboolean GtkMessagesShow        ( GtkWidget *, GdkEventButton *, gpointer );
+gboolean GtkJumpShow            ( GtkWidget *, gpointer );
+gboolean GtkAboutShow           ( GtkWidget *, gpointer );
+gboolean GtkMessagesShow        ( GtkWidget *, gpointer );
 void     GtkTitlePrev           ( GtkButton * button, gpointer );
 void     GtkTitleNext           ( GtkButton * button, gpointer );
 void     GtkChapterPrev         ( GtkButton *, gpointer );
@@ -61,28 +61,14 @@ void     GtkWindowDrag          ( GtkWidget *, GdkDragContext *,
                                   guint , guint, gpointer );
 void     GtkJumpOk              ( GtkButton * button, gpointer );
 void     GtkJumpCancel          ( GtkButton * button, gpointer user_data );
-void     GtkExitActivate        ( GtkMenuItem *, gpointer );
-void     GtkWindowToggleActivate( GtkMenuItem *, gpointer );
-void     GtkFullscreenActivate  ( GtkMenuItem *, gpointer );
-void     GtkAboutActivate       ( GtkMenuItem *, gpointer );
-void     GtkJumpActivate        ( GtkMenuItem *, gpointer );
 
 void     GtkNetworkJoin         ( GtkEditable *, gpointer );
 void     GtkChannelGo           ( GtkButton *, gpointer );
 
 void     GtkNetworkOpenChannel  ( GtkToggleButton *, gpointer );
 
-void
-GtkEjectDiscActivate                   (GtkMenuItem     *menuitem,
-                                        gpointer         user_data);
-
 gboolean
 GtkDiscEject                           (GtkWidget       *widget,
-                                        GdkEventButton  *event,
-                                        gpointer         user_data);
-
-void
-GtkMessagesActivate                    (GtkMenuItem     *menuitem,
                                         gpointer         user_data);
 
 void
@@ -96,7 +82,6 @@ GtkMessagesDelete                      (GtkWidget       *widget,
 
 gboolean
 GtkSatOpenShow                         (GtkWidget       *widget,
-                                        GdkEventButton  *event,
                                         gpointer         user_data);
 
 void
index 46bfe95..97c18a2 100644 (file)
@@ -2,7 +2,7 @@
  * gtk_common.h: private Gtk+ interface description
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: gtk_common.h,v 1.9 2002/06/01 12:31:59 sam Exp $
+ * $Id: gtk_common.h,v 1.10 2002/06/07 14:30:41 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -63,7 +63,7 @@ struct intf_sys_s
     /* windows and widgets */
     GtkWidget *         p_window;                             /* main window */
     GtkWidget *         p_popup;                               /* popup menu */
-    GtkWidget *         p_playlist;                              /* playlist */
+    GtkWidget *         p_playwin;                               /* playlist */
     GtkWidget *         p_modules;                         /* module manager */
     GtkWidget *         p_about;                             /* about window */
     GtkWidget *         p_fileopen;                      /* file open window */
index e3372d8..2ef7fbe 100644 (file)
@@ -2,7 +2,7 @@
  * gtk_control.c : functions to handle stream control buttons.
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: gtk_control.c,v 1.11 2002/06/02 09:03:54 sam Exp $
+ * $Id: gtk_control.c,v 1.12 2002/06/07 14:30:41 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Stéphane Borel <stef@via.ecp.fr>
@@ -52,7 +52,6 @@
  * by other callbacks
  ****************************************************************************/
 gboolean GtkControlBack( GtkWidget       *widget,
-                         GdkEventButton  *event,
                          gpointer         user_data )
 {
     return FALSE;
@@ -60,162 +59,98 @@ gboolean GtkControlBack( GtkWidget       *widget,
 
 
 gboolean GtkControlStop( GtkWidget       *widget,
-                         GdkEventButton  *event,
                          gpointer         user_data )
 {
-    intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
-    playlist_t *p_playlist;
-
-    p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
-
-    if( p_playlist )
+    intf_thread_t *  p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
+    playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
+                                                       FIND_ANYWHERE );
+    if( p_playlist == NULL )
     {
-        playlist_Stop( p_playlist );
-        vlc_object_release( p_playlist );
+        return FALSE;
     }
 
+    playlist_Stop( p_playlist );
+    vlc_object_release( p_playlist );
+
     return TRUE;
 }
 
 
 gboolean GtkControlPlay( GtkWidget       *widget,
-                         GdkEventButton  *event,
                          gpointer         user_data )
 {
-    intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
-    playlist_t *p_playlist;
-
-    p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
+    intf_thread_t *  p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
+    playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
+                                                       FIND_ANYWHERE );
+    if( p_playlist == NULL )
+    {
+        GtkFileOpenShow( widget, user_data );
+        return TRUE;
+    }
 
-    if( p_playlist )
+    /* If the playlist is empty, open a file requester instead */
+    vlc_mutex_lock( &p_playlist->object_lock );
+    if( p_playlist->i_size )
     {
+        vlc_mutex_unlock( &p_playlist->object_lock );
         playlist_Play( p_playlist );
         vlc_object_release( p_playlist );
     }
-
-#if 0 /* FIXME: deal with this */
+    else
     {
-        vlc_mutex_unlock( &p_intf->p_vlc->p_playlist->change_lock );
-        GtkFileOpenShow( widget, event, user_data );
+        vlc_mutex_unlock( &p_playlist->object_lock );
+        vlc_object_release( p_playlist );
+        GtkFileOpenShow( widget, user_data );
     }
-#endif
 
     return TRUE;
 }
 
 
 gboolean GtkControlPause( GtkWidget       *widget,
-                          GdkEventButton  *event,
                           gpointer         user_data )
 {
-    intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
-    playlist_t *p_playlist;
-
-    p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
+    intf_thread_t *  p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
 
-    if( p_playlist )
+    if( p_intf->p_sys->p_input == NULL )
     {
-        playlist_Pause( p_playlist );
-        vlc_object_release( p_playlist );
+        return FALSE;
     }
 
+    input_SetStatus( p_intf->p_sys->p_input, INPUT_STATUS_PAUSE );
+
     return TRUE;
 }
 
 
 gboolean GtkControlSlow( GtkWidget       *widget,
-                         GdkEventButton  *event,
                          gpointer         user_data )
 {
-    intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
-    playlist_t *p_playlist;
-
-    p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
+    intf_thread_t *  p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
 
-#if 0
-    if( p_playlist )
+    if( p_intf->p_sys->p_input == NULL )
     {
-        playlist_Slow( p_playlist );
-        vlc_object_release( p_playlist );
+        return FALSE;
     }
-#endif
+
+    input_SetStatus( p_intf->p_sys->p_input, INPUT_STATUS_SLOWER );
 
     return TRUE;
 }
 
 
 gboolean GtkControlFast( GtkWidget       *widget,
-                         GdkEventButton  *event,
                          gpointer         user_data )
 {
-    intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
-    playlist_t *p_playlist;
-
-    p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
+    intf_thread_t *  p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
 
-#if 0
-    if( p_playlist )
+    if( p_intf->p_sys->p_input == NULL )
     {
-        playlist_Fast( p_playlist );
-        vlc_object_release( p_playlist );
+        return FALSE;
     }
-#endif
-
-    return TRUE;
-}
 
+    input_SetStatus( p_intf->p_sys->p_input, INPUT_STATUS_FASTER );
 
-/****************************************************************************
- * Control callbacks for menuitems
- ****************************************************************************
- * We have different callaback for menuitem since we must use the
- * activate signal toi popdown the menu automatically
- ****************************************************************************/
-void GtkPlayActivate( GtkMenuItem * menuitem, gpointer user_data )
-{
-    GtkControlPlay( GTK_WIDGET( menuitem ), NULL, user_data );
-}
-
-
-void GtkPauseActivate( GtkMenuItem * menuitem, gpointer user_data )
-{
-    GtkControlPause( GTK_WIDGET( menuitem ), NULL, user_data );
-
-}
-
-
-void
-GtKStopActivate                        (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkControlStop( GTK_WIDGET( menuitem ), NULL, user_data );
-
-}
-
-
-void
-GtkBackActivate                        (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkControlBack( GTK_WIDGET( menuitem ), NULL, user_data );
-
-}
-
-
-void
-GtkSlowActivate                        (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkControlSlow( GTK_WIDGET( menuitem ), NULL, user_data );
-
-}
-
-
-void
-GtkFastActivate                        (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-    GtkControlFast( GTK_WIDGET( menuitem ), NULL, user_data );
+    return TRUE;
 }
 
-
index b60a964..dd1b12b 100644 (file)
@@ -2,7 +2,7 @@
  * gtk_control.h: prototypes for control functions
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: gtk_control.h,v 1.1 2001/05/15 01:01:44 stef Exp $
+ * $Id: gtk_control.h,v 1.2 2002/06/07 14:30:41 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Stéphane Borel <stef@via.ecp.fr>
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  *****************************************************************************/
 
-gboolean GtkControlBack ( GtkWidget *, GdkEventButton *, gpointer );
-gboolean GtkControlStop ( GtkWidget *, GdkEventButton *, gpointer );
-gboolean GtkControlPlay ( GtkWidget *, GdkEventButton *, gpointer );
-gboolean GtkControlPause( GtkWidget *, GdkEventButton *, gpointer );
-gboolean GtkControlSlow ( GtkWidget *, GdkEventButton *, gpointer );
-gboolean GtkControlFast ( GtkWidget *, GdkEventButton *, gpointer );
-void GtkPlayActivate    ( GtkMenuItem *, gpointer );
-void GtkPauseActivate   ( GtkMenuItem *, gpointer );
-void GtKStopActivate    ( GtkMenuItem *, gpointer );
-void GtkBackActivate    ( GtkMenuItem *, gpointer );
-void GtkSlowActivate    ( GtkMenuItem *, gpointer );
-void GtkFastActivate    ( GtkMenuItem *, gpointer );
+gboolean GtkControlBack ( GtkWidget *, gpointer );
+gboolean GtkControlStop ( GtkWidget *, gpointer );
+gboolean GtkControlPlay ( GtkWidget *, gpointer );
+gboolean GtkControlPause( GtkWidget *, gpointer );
+gboolean GtkControlSlow ( GtkWidget *, gpointer );
+gboolean GtkControlFast ( GtkWidget *, gpointer );
 
index e26b20b..a013e78 100644 (file)
@@ -823,81 +823,81 @@ create_intf_window (void)
                       GTK_SIGNAL_FUNC (GtkWindowDelete),
                       "intf_window");
   gtk_signal_connect (GTK_OBJECT (menubar_open), "activate",
-                      GTK_SIGNAL_FUNC (GtkFileOpenActivate),
+                      GTK_SIGNAL_FUNC (GtkFileOpenShow),
                       "intf_window");
   gtk_signal_connect (GTK_OBJECT (menubar_disc), "activate",
-                      GTK_SIGNAL_FUNC (GtkDiscOpenActivate),
+                      GTK_SIGNAL_FUNC (GtkDiscOpenShow),
                       "intf_window");
   gtk_signal_connect (GTK_OBJECT (menubar_network), "activate",
-                      GTK_SIGNAL_FUNC (GtkNetworkOpenActivate),
+                      GTK_SIGNAL_FUNC (GtkNetworkOpenShow),
                       "intf_window");
   gtk_signal_connect (GTK_OBJECT (menubar_eject), "activate",
-                      GTK_SIGNAL_FUNC (GtkEjectDiscActivate),
+                      GTK_SIGNAL_FUNC (GtkDiscEject),
                       "intf_window");
   gtk_signal_connect (GTK_OBJECT (menubar_exit), "activate",
-                      GTK_SIGNAL_FUNC (GtkExitActivate),
+                      GTK_SIGNAL_FUNC (GtkExit),
                       "intf_window");
   gtk_signal_connect (GTK_OBJECT (menubar_interface_hide), "activate",
-                      GTK_SIGNAL_FUNC (GtkWindowToggleActivate),
+                      GTK_SIGNAL_FUNC (GtkWindowToggle),
                       "intf_window");
   gtk_signal_connect (GTK_OBJECT (menubar_fullscreen), "activate",
-                      GTK_SIGNAL_FUNC (GtkFullscreenActivate),
+                      GTK_SIGNAL_FUNC (GtkFullscreen),
                       "intf_window");
   gtk_signal_connect (GTK_OBJECT (menubar_playlist), "activate",
-                      GTK_SIGNAL_FUNC (GtkPlaylistActivate),
+                      GTK_SIGNAL_FUNC (GtkPlaylistShow),
                       "intf_window");
   gtk_signal_connect (GTK_OBJECT (menubar_modules), "activate",
-                      GTK_SIGNAL_FUNC (GtkModulesActivate),
+                      GTK_SIGNAL_FUNC (GtkModulesShow),
                       "intf_window");
   gtk_signal_connect (GTK_OBJECT (menubar_messages), "activate",
-                      GTK_SIGNAL_FUNC (GtkMessagesActivate),
+                      GTK_SIGNAL_FUNC (GtkMessagesShow),
                       "intf_window");
   gtk_signal_connect (GTK_OBJECT (menubar_preferences), "activate",
-                      GTK_SIGNAL_FUNC (GtkPreferencesActivate),
+                      GTK_SIGNAL_FUNC (GtkPreferencesShow),
                       "intf_window");
   gtk_signal_connect (GTK_OBJECT (menubar_about), "activate",
-                      GTK_SIGNAL_FUNC (GtkAboutActivate),
+                      GTK_SIGNAL_FUNC (GtkAboutShow),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_open), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_open), "clicked",
                       GTK_SIGNAL_FUNC (GtkFileOpenShow),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_disc), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_disc), "clicked",
                       GTK_SIGNAL_FUNC (GtkDiscOpenShow),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_network), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_network), "clicked",
                       GTK_SIGNAL_FUNC (GtkNetworkOpenShow),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_sat), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_sat), "clicked",
                       GTK_SIGNAL_FUNC (GtkSatOpenShow),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_back), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_back), "clicked",
                       GTK_SIGNAL_FUNC (GtkControlBack),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_stop), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_stop), "clicked",
                       GTK_SIGNAL_FUNC (GtkControlStop),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_eject), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_eject), "clicked",
                       GTK_SIGNAL_FUNC (GtkDiscEject),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_play), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_play), "clicked",
                       GTK_SIGNAL_FUNC (GtkControlPlay),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_pause), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_pause), "clicked",
                       GTK_SIGNAL_FUNC (GtkControlPause),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_slow), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_slow), "clicked",
                       GTK_SIGNAL_FUNC (GtkControlSlow),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_fast), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_fast), "clicked",
                       GTK_SIGNAL_FUNC (GtkControlFast),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_playlist), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_playlist), "clicked",
                       GTK_SIGNAL_FUNC (GtkPlaylistShow),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_prev), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_prev), "clicked",
                       GTK_SIGNAL_FUNC (GtkPlaylistPrev),
                       "intf_window");
-  gtk_signal_connect (GTK_OBJECT (toolbar_next), "button_press_event",
+  gtk_signal_connect (GTK_OBJECT (toolbar_next), "clicked",
                       GTK_SIGNAL_FUNC (GtkPlaylistNext),
                       "intf_window");
   gtk_signal_connect (GTK_OBJECT (slider), "button_release_event",
@@ -1243,58 +1243,58 @@ create_intf_popup (void)
   gtk_container_add (GTK_CONTAINER (intf_popup), popup_exit);
 
   gtk_signal_connect (GTK_OBJECT (popup_play), "activate",
-                      GTK_SIGNAL_FUNC (GtkPlayActivate),
+                      GTK_SIGNAL_FUNC (GtkControlPlay),
                       "intf_popup");
   gtk_signal_connect (GTK_OBJECT (popup_pause), "activate",
-                      GTK_SIGNAL_FUNC (GtkPauseActivate),
+                      GTK_SIGNAL_FUNC (GtkControlPause),
                       "intf_popup");
   gtk_signal_connect (GTK_OBJECT (popup_stop), "activate",
-                      GTK_SIGNAL_FUNC (GtKStopActivate),
+                      GTK_SIGNAL_FUNC (GtkControlStop),
                       "intf_popup");
   gtk_signal_connect (GTK_OBJECT (popup_back), "activate",
-                      GTK_SIGNAL_FUNC (GtkBackActivate),
+                      GTK_SIGNAL_FUNC (GtkControlBack),
                       "intf_popup");
   gtk_signal_connect (GTK_OBJECT (popup_slow), "activate",
-                      GTK_SIGNAL_FUNC (GtkSlowActivate),
+                      GTK_SIGNAL_FUNC (GtkControlSlow),
                       "intf_popup");
   gtk_signal_connect (GTK_OBJECT (popup_fast), "activate",
-                      GTK_SIGNAL_FUNC (GtkFastActivate),
+                      GTK_SIGNAL_FUNC (GtkControlFast),
                       "intf_popup");
   gtk_signal_connect (GTK_OBJECT (popup_interface_toggle), "activate",
-                      GTK_SIGNAL_FUNC (GtkWindowToggleActivate),
+                      GTK_SIGNAL_FUNC (GtkWindowToggle),
                       "intf_popup");
   gtk_signal_connect (GTK_OBJECT (popup_fullscreen), "activate",
-                      GTK_SIGNAL_FUNC (GtkFullscreenActivate),
+                      GTK_SIGNAL_FUNC (GtkFullscreen),
                       "intf_popup");
   gtk_signal_connect (GTK_OBJECT (popup_next), "activate",
-                      GTK_SIGNAL_FUNC (GtkNextActivate),
+                      GTK_SIGNAL_FUNC (GtkPlaylistNext),
                       "intf_popup");
   gtk_signal_connect (GTK_OBJECT (popup_prev), "activate",
-                      GTK_SIGNAL_FUNC (GtkPrevActivate),
+                      GTK_SIGNAL_FUNC (GtkPlaylistPrev),
                       "intf_popup");
   gtk_signal_connect (GTK_OBJECT (popup_jump), "activate",
-                      GTK_SIGNAL_FUNC (GtkJumpActivate),
+                      GTK_SIGNAL_FUNC (GtkJumpShow),
                       "intf_popup");
   gtk_signal_connect (GTK_OBJECT (popup_file), "activate",
-                      GTK_SIGNAL_FUNC (GtkFileOpenActivate),
+                      GTK_SIGNAL_FUNC (GtkFileOpenShow),
                       "intf_popup");
   gtk_signal_connect (GTK_OBJECT (popup_disc), "activate",
-                      GTK_SIGNAL_FUNC (GtkDiscOpenActivate),
+                      GTK_SIGNAL_FUNC (GtkDiscOpenShow),
                       "intf_popup");
   gtk_signal_connect (GTK_OBJECT (popup_network), "activate",
-                      GTK_SIGNAL_FUNC (GtkNetworkOpenActivate),
+                      GTK_SIGNAL_FUNC (GtkNetworkOpenShow),
                       "intf_popup");
   gtk_signal_connect (GTK_OBJECT (popup_about), "activate",
-                      GTK_SIGNAL_FUNC (GtkAboutActivate),
+                      GTK_SIGNAL_FUNC (GtkAboutShow),
                       "intf_popup");
   gtk_signal_connect (GTK_OBJECT (popup_playlist), "activate",
-                      GTK_SIGNAL_FUNC (GtkPlaylistActivate),
+                      GTK_SIGNAL_FUNC (GtkPlaylistShow),
                       "intf_popup");
   gtk_signal_connect (GTK_OBJECT (popup_preferences), "activate",
-                      GTK_SIGNAL_FUNC (GtkPreferencesActivate),
+                      GTK_SIGNAL_FUNC (GtkPreferencesShow),
                       "intf_popup");
   gtk_signal_connect (GTK_OBJECT (popup_exit), "activate",
-                      GTK_SIGNAL_FUNC (GtkExitActivate),
+                      GTK_SIGNAL_FUNC (GtkExit),
                       "intf_popup");
 
   gtk_object_set_data (GTK_OBJECT (intf_popup), "tooltips", tooltips);
@@ -2295,13 +2295,13 @@ create_intf_playlist (void)
                       GTK_SIGNAL_FUNC (gtk_widget_hide),
                       NULL);
   gtk_signal_connect (GTK_OBJECT (playlist_add_disc), "activate",
-                      GTK_SIGNAL_FUNC (GtkDiscOpenActivate),
+                      GTK_SIGNAL_FUNC (GtkDiscOpenShow),
                       "intf_playlist");
   gtk_signal_connect (GTK_OBJECT (playlist_add_file), "activate",
-                      GTK_SIGNAL_FUNC (GtkFileOpenActivate),
+                      GTK_SIGNAL_FUNC (GtkFileOpenShow),
                       "intf_playlist");
   gtk_signal_connect (GTK_OBJECT (playlist_add_network), "activate",
-                      GTK_SIGNAL_FUNC (GtkNetworkOpenActivate),
+                      GTK_SIGNAL_FUNC (GtkNetworkOpenShow),
                       "intf_playlist");
   gtk_signal_connect (GTK_OBJECT (playlist_add_url), "activate",
                       GTK_SIGNAL_FUNC (GtkPlaylistAddUrl),
index bd8b824..31f4f62 100644 (file)
@@ -2,7 +2,7 @@
  * gtk_modules.c : functions to build modules configuration boxes.
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: gtk_modules.c,v 1.8 2002/06/01 12:31:59 sam Exp $
+ * $Id: gtk_modules.c,v 1.9 2002/06/07 14:30:41 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Stéphane Borel <stef@via.ecp.fr>
@@ -46,7 +46,6 @@
 #include "gtk_common.h"
 
 gboolean GtkModulesShow( GtkWidget       *widget,
-                         GdkEventButton  *event,
                          gpointer         user_data )
 {
     intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), "intf_window" );
@@ -70,10 +69,3 @@ void GtkModulesCancel( GtkButton * button, gpointer user_data )
     gtk_widget_hide( p_intf->p_sys->p_modules );
 }
 
-/****************************************************************************
- * Callbacks for menuitems
- ****************************************************************************/
-void GtkModulesActivate( GtkMenuItem * menuitem, gpointer user_data )
-{
-    GtkModulesShow( GTK_WIDGET( menuitem ), NULL, user_data );
-}
index e7e8f9b..dbce10c 100644 (file)
@@ -2,7 +2,7 @@
  * gtk_modules.h: prototypes for modules functions
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: gtk_modules.h,v 1.2 2001/05/15 14:49:48 stef Exp $
+ * $Id: gtk_modules.h,v 1.3 2002/06/07 14:30:41 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Stéphane Borel <stef@via.ecp.fr>
@@ -22,6 +22,6 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  *****************************************************************************/
 
-gboolean GtkModulesShow    ( GtkWidget *, GdkEventButton *, gpointer );
+gboolean GtkModulesShow    ( GtkWidget *, gpointer );
 void     GtkModulesCancel  ( GtkButton * button, gpointer );
-void     GtkModulesActivate( GtkMenuItem * menuitem, gpointer );
+
index 247adb2..31ac992 100644 (file)
@@ -2,7 +2,7 @@
  * gtk_open.c : functions to handle file/disc/network open widgets.
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: gtk_open.c,v 1.27 2002/06/02 09:03:54 sam Exp $
+ * $Id: gtk_open.c,v 1.28 2002/06/07 14:30:41 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Stéphane Borel <stef@via.ecp.fr>
@@ -53,7 +53,6 @@
  * The following callbacks are related to the file requester.
  *****************************************************************************/
 gboolean GtkFileOpenShow( GtkWidget       *widget,
-                          GdkEventButton  *event,
                           gpointer         user_data )
 {
     intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
@@ -106,24 +105,16 @@ void GtkFileOpenOk( GtkButton * button, gpointer user_data )
     /* add the new file to the interface playlist */
     psz_filename =
         gtk_file_selection_get_filename( GTK_FILE_SELECTION( p_filesel ) );
-    playlist_Add( p_playlist, 0, (char*)psz_filename );
+    playlist_Add( p_playlist, (char*)psz_filename,
+                  PLAYLIST_APPEND | PLAYLIST_GO, PLAYLIST_END );
 
     /* catch the GTK CList */
     p_playlist_clist = GTK_CLIST( gtk_object_get_data(
-        GTK_OBJECT( p_intf->p_sys->p_playlist ), "playlist_clist" ) );
+        GTK_OBJECT( p_intf->p_sys->p_playwin ), "playlist_clist" ) );
     /* update the plugin display */
     GtkRebuildCList( p_playlist_clist, p_playlist );
 
     vlc_object_release( p_playlist );
-    /* end current item, select added item  */
-#if 0
-    if( p_intf->p_vlc->p_input_bank->pp_input[0] != NULL )
-    {
-        p_intf->p_vlc->p_input_bank->pp_input[0]->b_eof = 1;
-    }
-
-    intf_PlaylistJumpto( p_intf->p_vlc->p_playlist, i_end - 1 );
-#endif
 }
 
 /*****************************************************************************
@@ -132,7 +123,6 @@ void GtkFileOpenOk( GtkButton * button, gpointer user_data )
  * The following callbacks are related to the disc manager.
  *****************************************************************************/
 gboolean GtkDiscOpenShow( GtkWidget       *widget,
-                          GdkEventButton  *event,
                           gpointer         user_data)
 {
     intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
@@ -239,26 +229,17 @@ void GtkDiscOpenOk( GtkButton * button, gpointer user_data )
     /* Build source name and add it to playlist */
     sprintf( psz_source, "%s:%s@%d,%d",
              psz_method, psz_device, i_title, i_chapter );
-    playlist_Add( p_playlist, 0, psz_source );
+    playlist_Add( p_playlist, psz_source,
+                  PLAYLIST_APPEND | PLAYLIST_GO, PLAYLIST_END );
     free( psz_source );
 
     /* catch the GTK CList */
     p_playlist_clist = GTK_CLIST( gtk_object_get_data(
-        GTK_OBJECT( p_intf->p_sys->p_playlist ), "playlist_clist" ) );
+        GTK_OBJECT( p_intf->p_sys->p_playwin ), "playlist_clist" ) );
 
     /* update the display */
     GtkRebuildCList( p_playlist_clist, p_playlist );
 
-    /* stop current item, select added item */
-#if 0
-    if( p_intf->p_vlc->p_input_bank->pp_input[0] != NULL )
-    {
-        p_intf->p_vlc->p_input_bank->pp_input[0]->b_eof = 1;
-    }
-
-    intf_PlaylistJumpto( p_intf->p_vlc->p_playlist, i_end - 1 );
-#endif
-
     vlc_object_release( p_playlist );
 }
 
@@ -275,7 +256,6 @@ void GtkDiscOpenCancel( GtkButton * button, gpointer user_data )
  * The following callbacks are related to the network stream manager.
  *****************************************************************************/
 gboolean GtkNetworkOpenShow( GtkWidget       *widget,
-                             GdkEventButton  *event,
                              gpointer         user_data )
 {
     intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
@@ -374,19 +354,15 @@ void GtkNetworkOpenOk( GtkButton *button, gpointer user_data )
 
         /* Build source name and add it to playlist */
         sprintf( psz_source, "udp:@:%i", i_port );
-
-        playlist_Add( p_playlist, 0, psz_source );
+        playlist_Add( p_playlist, psz_source,
+                      PLAYLIST_APPEND | PLAYLIST_GO, PLAYLIST_END );
         free( psz_source );
 
         /* catch the GTK CList */
         p_playlist_clist = GTK_CLIST( gtk_object_get_data(
-            GTK_OBJECT( p_intf->p_sys->p_playlist ), "playlist_clist" ) );
+            GTK_OBJECT( p_intf->p_sys->p_playwin ), "playlist_clist" ) );
         /* update the display */
         GtkRebuildCList( p_playlist_clist, p_playlist );
-
-#if 0
-        intf_PlaylistJumpto( p_playlist, i_end - 1 );
-#endif
     }
 
     /* UDP Multicast */
@@ -417,19 +393,15 @@ void GtkNetworkOpenOk( GtkButton *button, gpointer user_data )
 
         /* Build source name and add it to playlist */
         sprintf( psz_source, "udp:@%s:%i", psz_address, i_port );
-
-        playlist_Add( p_playlist, 0, psz_source );
+        playlist_Add( p_playlist, psz_source,
+                      PLAYLIST_APPEND | PLAYLIST_GO, PLAYLIST_END );
         free( psz_source );
 
         /* catch the GTK CList */
         p_playlist_clist = GTK_CLIST( gtk_object_get_data(
-            GTK_OBJECT( p_intf->p_sys->p_playlist ), "playlist_clist" ) );
+            GTK_OBJECT( p_intf->p_sys->p_playwin ), "playlist_clist" ) );
         /* update the display */
         GtkRebuildCList( p_playlist_clist, p_playlist );
-
-#if 0
-        intf_PlaylistJumpto( p_playlist, i_end - 1 );
-#endif
     }
     
     /* Channel server */
@@ -476,19 +448,15 @@ void GtkNetworkOpenOk( GtkButton *button, gpointer user_data )
 
         /* Build source name and add it to playlist */
         sprintf( psz_source, "http://%s", psz_address );
-
-        playlist_Add( p_playlist, 0, psz_source );
+        playlist_Add( p_playlist, psz_source,
+                      PLAYLIST_APPEND | PLAYLIST_GO, PLAYLIST_END );
         free( psz_source );
 
         /* catch the GTK CList */
         p_playlist_clist = GTK_CLIST( gtk_object_get_data(
-            GTK_OBJECT( p_intf->p_sys->p_playlist ), "playlist_clist" ) );
+            GTK_OBJECT( p_intf->p_sys->p_playwin ), "playlist_clist" ) );
         /* update the display */
         GtkRebuildCList( p_playlist_clist, p_playlist );
-
-#if 0
-        intf_PlaylistJumpto( p_playlist, i_end - 1 );
-#endif
     }
 
     /* This shouldn't occur */
@@ -593,8 +561,7 @@ void GtkNetworkOpenHTTP( GtkToggleButton *togglebutton,
  * The following callbacks are related to the satellite card manager.
  *****************************************************************************/
 gboolean GtkSatOpenShow( GtkWidget       *widget,
-                          GdkEventButton  *event,
-                          gpointer         user_data)
+                         gpointer         user_data)
 {
     intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
 
@@ -662,26 +629,17 @@ void GtkSatOpenOk( GtkButton * button, gpointer user_data )
     /* Build source name and add it to playlist */
     sprintf( psz_source, "%s:%d,%d,%d,%d",
              "satellite", i_freq, b_pol, i_fec, i_srate );
-    playlist_Add( p_playlist, 0, psz_source );
+    playlist_Add( p_playlist, psz_source,
+                  PLAYLIST_APPEND | PLAYLIST_GO, PLAYLIST_END );
     free( psz_source );
 
     /* catch the GTK CList */
     p_playlist_clist = GTK_CLIST( gtk_object_get_data(
-        GTK_OBJECT( p_intf->p_sys->p_playlist ), "playlist_clist" ) );
+        GTK_OBJECT( p_intf->p_sys->p_playwin ), "playlist_clist" ) );
 
     /* update the display */
     GtkRebuildCList( p_playlist_clist, p_playlist );
 
-    /* stop current item, select added item */
-#if 0
-    if( p_intf->p_vlc->p_input_bank->pp_input[0] != NULL )
-    {
-        p_intf->p_vlc->p_input_bank->pp_input[0]->b_eof = 1;
-    }
-
-    intf_PlaylistJumpto( p_intf->p_vlc->p_playlist, i_end - 1 );
-#endif
-
     vlc_object_release( p_playlist );
 }
 
@@ -691,23 +649,3 @@ void GtkSatOpenCancel( GtkButton * button, gpointer user_data )
     gtk_widget_hide( gtk_widget_get_toplevel( GTK_WIDGET (button) ) );
 }
 
-/****************************************************************************
- * Callbacks for menuitem
- ****************************************************************************/
-void GtkFileOpenActivate( GtkMenuItem * menuitem, gpointer user_data )
-{
-    GtkFileOpenShow( GTK_WIDGET( menuitem ), NULL, user_data );
-}
-
-
-void GtkDiscOpenActivate( GtkMenuItem * menuitem, gpointer user_data )
-{
-    GtkDiscOpenShow( GTK_WIDGET( menuitem ), NULL, user_data );
-}
-
-
-void GtkNetworkOpenActivate( GtkMenuItem * menuitem, gpointer user_data )
-{
-    GtkNetworkOpenShow( GTK_WIDGET( menuitem ), NULL, user_data );
-}
-
index 6ede5fb..f1fa2c3 100644 (file)
@@ -2,7 +2,7 @@
  * gtk_open.h: prototypes for open functions
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: gtk_open.h,v 1.3 2001/05/30 23:02:04 stef Exp $
+ * $Id: gtk_open.h,v 1.4 2002/06/07 14:30:41 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Stéphane Borel <stef@via.ecp.fr>
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  *****************************************************************************/
 
-gboolean GtkFileOpenShow        ( GtkWidget *, GdkEventButton *, gpointer );
+gboolean GtkFileOpenShow        ( GtkWidget *, gpointer );
 void     GtkFileOpenCancel      ( GtkButton *, gpointer );
 void     GtkFileOpenOk          ( GtkButton *, gpointer );
 
-gboolean GtkDiscOpenShow        ( GtkWidget *, GdkEventButton *, gpointer );
+gboolean GtkDiscOpenShow        ( GtkWidget *, gpointer );
 void     GtkDiscOpenDvd         ( GtkToggleButton *, gpointer );
 void     GtkDiscOpenVcd         ( GtkToggleButton *, gpointer );
 void     GtkDiscOpenOk          ( GtkButton *, gpointer );
 void     GtkDiscOpenCancel      ( GtkButton *, gpointer );
 
-gboolean GtkNetworkOpenShow     ( GtkWidget *, GdkEventButton *, gpointer );
+gboolean GtkNetworkOpenShow     ( GtkWidget *, gpointer );
 void     GtkNetworkOpenOk       ( GtkButton *, gpointer );
 void     GtkNetworkOpenCancel   ( GtkButton *, gpointer );
 void     GtkNetworkOpenBroadcast( GtkToggleButton *, gpointer );
 void     GtkNetworkOpenChannel  ( GtkToggleButton *, gpointer );
 
-void     GtkFileOpenActivate    ( GtkMenuItem *, gpointer );
-void     GtkDiscOpenActivate    ( GtkMenuItem *, gpointer );
-void     GtkNetworkOpenActivate ( GtkMenuItem *, gpointer );
index e401a06..694ddda 100644 (file)
@@ -2,7 +2,7 @@
  * gtk_playlist.c : Interface for the playlist dialog
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: gtk_playlist.c,v 1.32 2002/06/01 12:31:59 sam Exp $
+ * $Id: gtk_playlist.c,v 1.33 2002/06/07 14:30:41 sam Exp $
  *
  * Authors: Pierre Baillet <oct@zoy.org>
  *          Stéphane Borel <stef@via.ecp.fr>
@@ -62,27 +62,33 @@ static void UrlDecode( char *encoded_path );
  * Playlist window management
  ****************************************************************************/
 gboolean GtkPlaylistShow( GtkWidget       *widget,
-                          GdkEventButton  *event,
                           gpointer         user_data )
 {
-#if 0 /* PLAYLIST TARASS */
     intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
+    playlist_t *p_playlist;
 
-    if( GTK_WIDGET_VISIBLE( p_intf->p_sys->p_playlist ) )
+    p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
+    if( p_playlist == NULL )
     {
-        gtk_widget_hide( p_intf->p_sys->p_playlist );
+        return FALSE;
+    }
+
+    if( GTK_WIDGET_VISIBLE( p_intf->p_sys->p_playwin ) )
+    {
+        gtk_widget_hide( p_intf->p_sys->p_playwin );
     } 
     else 
     {        
         GtkCList * p_clist;
 
         p_clist = GTK_CLIST( gtk_object_get_data(
-            GTK_OBJECT( p_intf->p_sys->p_playlist ), "playlist_clist" ) );
-        GtkRebuildCList( p_clist , p_intf->p_vlc->p_playlist );
-        gtk_widget_show( p_intf->p_sys->p_playlist );
-        gdk_window_raise( p_intf->p_sys->p_playlist->window );
+            GTK_OBJECT( p_intf->p_sys->p_playwin ), "playlist_clist" ) );
+        GtkRebuildCList( p_clist , p_playlist );
+        gtk_widget_show( p_intf->p_sys->p_playwin );
+        gdk_window_raise( p_intf->p_sys->p_playwin->window );
     }
-#endif
+
+    vlc_object_release( p_playlist );
 
     return TRUE;
 }
@@ -102,63 +108,40 @@ void GtkPlaylistCancel( GtkButton * button, gpointer user_data )
 
 
 gboolean GtkPlaylistPrev( GtkWidget       *widget,
-                          GdkEventButton  *event,
                           gpointer         user_data )
 {
-#if 0 /* PLAYLIST TARASS */
     intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
+    playlist_t *p_playlist;
+
+    p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
 
-    if( p_intf->p_sys->p_input != NULL )
+    if( p_playlist )
     {
-        /* FIXME: temporary hack */
-        intf_PlaylistPrev( p_intf->p_vlc->p_playlist );
-        intf_PlaylistPrev( p_intf->p_vlc->p_playlist );
-        p_intf->p_sys->p_input->b_eof = 1;
+        playlist_Prev( p_playlist );
+        vlc_object_release( p_playlist );
     }
-#endif
 
     return TRUE;
 }
 
 
 gboolean GtkPlaylistNext( GtkWidget       *widget,
-                          GdkEventButton  *event,
                           gpointer         user_data)
 {
-#if 0 /* PLAYLIST TARASS */
     intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
+    playlist_t *p_playlist;
+
+    p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
 
-    if( p_intf->p_sys->p_input != NULL )
+    if( p_playlist )
     {
-        /* FIXME: temporary hack */
-        p_intf->p_sys->p_input->b_eof = 1;
+        playlist_Next( p_playlist );
+        vlc_object_release( p_playlist );
     }
-#endif
 
     return TRUE;
 }
 
-/****************************************************************************
- * Menu callbacks for playlist functions
- ****************************************************************************/
-void GtkPlaylistActivate( GtkMenuItem * menuitem, gpointer user_data )
-{
-    GtkPlaylistShow( GTK_WIDGET( menuitem ), NULL, user_data );
-}
-
-
-void GtkNextActivate( GtkMenuItem * menuitem, gpointer user_data )
-{
-    GtkPlaylistNext( GTK_WIDGET( menuitem ), NULL, user_data );
-}
-
-
-void GtkPrevActivate( GtkMenuItem * menuitem, gpointer user_data )
-{
-    GtkPlaylistPrev( GTK_WIDGET( menuitem ), NULL, user_data );
-}
-
-
 /****************************************************************************
  * Playlist core functions
  ****************************************************************************/
@@ -191,7 +174,7 @@ void GtkPlaylistDeleteSelected( GtkMenuItem * menuitem, gpointer user_data )
     vlc_mutex_lock( &p_intf->change_lock );
 
     p_clist = GTK_CLIST( gtk_object_get_data( GTK_OBJECT(
-        p_intf->p_sys->p_playlist ), "playlist_clist" ) );
+        p_intf->p_sys->p_playwin ), "playlist_clist" ) );
     
     /* I use UNDOCUMENTED features to retrieve the selection... */
     p_selection = p_clist->selection;
@@ -237,7 +220,7 @@ void GtkPlaylistInvert( GtkMenuItem * menuitem, gpointer user_data )
     vlc_mutex_lock( &p_intf->change_lock );
 
     p_clist = GTK_CLIST( gtk_object_get_data( GTK_OBJECT(
-        p_intf->p_sys->p_playlist ), "playlist_clist" ) );
+        p_intf->p_sys->p_playwin ), "playlist_clist" ) );
     
     /* have to copy the selection to an int *
        I wasn't able to copy the g_list to another g_list
@@ -277,8 +260,13 @@ gboolean GtkPlaylistEvent( GtkWidget * widget,
                            GdkEvent  * event,
                            gpointer    user_data)
 {
-#if 0 /* PLAYLIST TARASS */
-    intf_thread_t *p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
+    intf_thread_t *  p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
+    playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
+                                                       FIND_ANYWHERE );
+    if( p_playlist == NULL )
+    {
+        return FALSE;
+    }
 
     if( ( event->button ).type == GDK_2BUTTON_PRESS )
     {
@@ -287,24 +275,19 @@ gboolean GtkPlaylistEvent( GtkWidget * widget,
         gint        i_col;
 
         p_clist = GTK_CLIST( gtk_object_get_data( GTK_OBJECT(
-            p_intf->p_sys->p_playlist ), "playlist_clist" ) );
+            p_intf->p_sys->p_playwin ), "playlist_clist" ) );
         
         if( gtk_clist_get_selection_info( p_clist, (event->button).x, 
                     (event->button).y, &i_row, &i_col ) == 1 )
         {
-            /* clicked is in range. */
-            if( p_intf->p_sys->p_input != NULL )
-            {
-                /* FIXME: temporary hack */
-                p_intf->p_sys->p_input->b_eof = 1;
-            }
-
-            intf_PlaylistJumpto( p_intf->p_vlc->p_playlist, i_row - 1 );
+            playlist_Goto( p_playlist, i_row );
         }
+
+        vlc_object_release( p_playlist );
         return TRUE;
     }
-#endif
 
+    vlc_object_release( p_playlist );
     return FALSE;
 }
 
@@ -325,7 +308,7 @@ void GtkPlaylistDragData( GtkWidget       *widget,
     int             i_end = p_intf->p_vlc->p_playlist->i_size;
 
     p_clist = GTK_CLIST( gtk_object_get_data( GTK_OBJECT(
-        p_intf->p_sys->p_playlist ), "playlist_clist" ) );
+        p_intf->p_sys->p_playwin ), "playlist_clist" ) );
    
     if( gtk_clist_get_selection_info( p_clist, x, y, &i_row, &i_col ) == 1 )
     {
@@ -361,11 +344,11 @@ gboolean GtkPlaylistDragMotion( GtkWidget       *widget,
     p_intf = GetIntf( GTK_WIDGET(widget), (char*)user_data );
 
     p_clist = GTK_CLIST( gtk_object_get_data( GTK_OBJECT(
-        p_intf->p_sys->p_playlist ), "playlist_clist" ) );
+        p_intf->p_sys->p_playwin ), "playlist_clist" ) );
 
     if( !GTK_WIDGET_TOPLEVEL(widget) )
     {
-        gdk_window_raise( p_intf->p_sys->p_playlist->window );
+        gdk_window_raise( p_intf->p_sys->p_playwin->window );
     }
 
     color.red =   0xffff;
@@ -502,7 +485,7 @@ void GtkDropDataReceived( intf_thread_t * p_intf,
         GtkAppendList( p_playlist, i_position, p_files );
 
         /* get the CList  and rebuild it. */
-        p_clist = GTK_CLIST( lookup_widget( p_intf->p_sys->p_playlist,
+        p_clist = GTK_CLIST( lookup_widget( p_intf->p_sys->p_playwin,
                                             "playlist_clist" ) ); 
         GtkRebuildCList( p_clist , p_playlist );
         
@@ -662,20 +645,24 @@ int GtkAppendList( playlist_t * p_playlist, int i_pos, GList * p_list )
 /* statis timeouted function */
 void GtkPlayListManage( intf_thread_t * p_intf )
 {
-#if 0 /* PLAYLIST TARASS */
-    /* this thing really sucks for now :( */
+    playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
+                                                       FIND_ANYWHERE );
+    GtkCList *   p_clist;
 
-    /* TODO speak more with interface/intf_playlist.c */
+    if( p_playlist == NULL )
+    {
+        return;
+    }
 
-    playlist_t *    p_playlist = p_intf->p_vlc->p_playlist ;
-    GtkCList *      p_clist;
+    /* this thing really sucks for now :( */
 
-    if( GTK_IS_WIDGET( p_intf->p_sys->p_playlist ) )
+    /* TODO speak more with interface/intf_playlist.c */
+    if( GTK_IS_WIDGET( p_intf->p_sys->p_playwin ) )
     {
         p_clist = GTK_CLIST( gtk_object_get_data( GTK_OBJECT(
-                       p_intf->p_sys->p_playlist ), "playlist_clist" ) );
+                       p_intf->p_sys->p_playwin ), "playlist_clist" ) );
     
-        vlc_mutex_lock( &p_playlist->change_lock );
+        vlc_mutex_lock( &p_playlist->object_lock );
     
         if( p_intf->p_sys->i_playing != p_playlist->i_index )
         {
@@ -698,14 +685,14 @@ void GtkPlayListManage( intf_thread_t * p_intf )
             p_intf->p_sys->i_playing = p_playlist->i_index;
         }
     
-        vlc_mutex_unlock( &p_playlist->change_lock );
+        vlc_mutex_unlock( &p_playlist->object_lock );
     }
-#endif
+
+    vlc_object_release( p_playlist );
 }
 
 void GtkRebuildCList( GtkCList * p_clist, playlist_t * p_playlist )
 {
-#if 0 /* PLAYLIST TARASS */
     int         i_dummy;
     gchar *     ppsz_text[2];
     GdkColor    red;
@@ -716,18 +703,17 @@ void GtkRebuildCList( GtkCList * p_clist, playlist_t * p_playlist )
     gtk_clist_freeze( p_clist );
     gtk_clist_clear( p_clist );
    
-    vlc_mutex_lock( &p_playlist->change_lock );
+    vlc_mutex_lock( &p_playlist->object_lock );
     for( i_dummy = p_playlist->i_size ; i_dummy-- ; )
     {
-        ppsz_text[0] = p_playlist->p_item[i_dummy].psz_name;
+        ppsz_text[0] = p_playlist->pp_items[i_dummy]->psz_name;
         ppsz_text[1] = "no info";
         gtk_clist_insert( p_clist, 0, ppsz_text );
     }
-    vlc_mutex_unlock( &p_playlist->change_lock );
+    vlc_mutex_unlock( &p_playlist->object_lock );
 
     gtk_clist_set_background( p_clist, p_playlist->i_index, &red);
     gtk_clist_thaw( p_clist );
-#endif
 }
 
 /* URL-decode a file: URL path, return NULL if it's not what we expect */
index ec357d8..42133fe 100644 (file)
@@ -2,7 +2,7 @@
  * gtk_playlist.h : Playlist functions for the Gtk plugin.
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: gtk_playlist.h,v 1.6 2002/06/01 12:31:59 sam Exp $
+ * $Id: gtk_playlist.h,v 1.7 2002/06/07 14:30:41 sam Exp $
  *
  * Authors: Pierre Baillet <oct@zoy.org>
  *          Stéphane Borel <stef@via.ecp.fr>
@@ -35,9 +35,9 @@ gint     GtkCompareItems      ( gconstpointer, gconstpointer );
 int      GtkHasValidExtension ( gchar * );
 GList *  GtkReadFiles         ( gchar * );
 
-gboolean GtkPlaylistShow      ( GtkWidget *, GdkEventButton *, gpointer );
-gboolean GtkPlaylistPrev      ( GtkWidget *, GdkEventButton *, gpointer );
-gboolean GtkPlaylistNext      ( GtkWidget *, GdkEventButton *, gpointer );
+gboolean GtkPlaylistShow      ( GtkWidget *, gpointer );
+gboolean GtkPlaylistPrev      ( GtkWidget *, gpointer );
+gboolean GtkPlaylistNext      ( GtkWidget *, gpointer );
 gboolean GtkPlaylistDragMotion( GtkWidget *, GdkDragContext *,
                                 gint, gint, guint, gpointer );
 gboolean GtkPlaylistEvent     ( GtkWidget *, GdkEvent *, gpointer );
@@ -46,10 +46,6 @@ void     GtkPlaylistDragData  ( GtkWidget *, GdkDragContext *,
                                 guint, guint, gpointer  );
 void     GtkDeleteGListItem   ( gpointer, gpointer );
 
-void     GtkPlaylistActivate  ( GtkMenuItem *, gpointer );
-void     GtkNextActivate      ( GtkMenuItem *, gpointer );
-void     GtkPrevActivate      ( GtkMenuItem *, gpointer );
-
 void GtkDropDataReceived ( intf_thread_t *, GtkSelectionData *, guint, int );
 int  GtkAppendList       ( playlist_t *, int, GList * );
 void GtkRebuildCList     ( GtkCList *, playlist_t * );
index 4246378..239dbf1 100644 (file)
@@ -2,7 +2,7 @@
  * gtk_preferences.c: functions to handle the preferences dialog box.
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: gtk_preferences.c,v 1.31 2002/06/01 18:04:48 sam Exp $
+ * $Id: gtk_preferences.c,v 1.32 2002/06/07 14:30:41 sam Exp $
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *          Loïc Minier <lool@via.ecp.fr>
@@ -76,7 +76,7 @@ static void GtkModuleHighlighted ( GtkCList *, int, int, GdkEventButton *,
 /****************************************************************************
  * Callback for menuitems: display configuration interface window
  ****************************************************************************/
-void GtkPreferencesActivate( GtkMenuItem * menuitem, gpointer user_data )
+void GtkPreferencesShow( GtkMenuItem * menuitem, gpointer user_data )
 {
     intf_thread_t * p_intf;
 
@@ -836,7 +836,7 @@ static void GtkBoolChanged( GtkToggleButton *button, gpointer user_data )
 
     /* change the highlight status of the Apply button */
     apply_button = (GtkWidget *)gtk_object_get_data( GTK_OBJECT(user_data),
-                                                    "apply_button" );
+                                                     "apply_button" );
     gtk_widget_set_sensitive( apply_button, TRUE );
 }
 
index aeb1b45..28bf268 100644 (file)
@@ -2,7 +2,7 @@
  * gtk_control.h: prototypes for control functions
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: gtk_preferences.h,v 1.3 2002/03/11 07:23:09 gbazin Exp $
+ * $Id: gtk_preferences.h,v 1.4 2002/06/07 14:30:41 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Stéphane Borel <stef@via.ecp.fr>
@@ -22,4 +22,4 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  *****************************************************************************/
 
-void GtkPreferencesActivate( GtkMenuItem *, gpointer );
+void GtkPreferencesShow( GtkMenuItem *, gpointer );
index b7e243b..a0f62d4 100644 (file)
@@ -2,7 +2,7 @@
  * mpeg_audio.c : mpeg_audio Stream input module for vlc
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: mpeg_audio.c,v 1.9 2002/06/01 12:32:00 sam Exp $
+ * $Id: mpeg_audio.c,v 1.10 2002/06/07 14:30:41 sam Exp $
  *
  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  * 
@@ -430,7 +430,7 @@ static int MPEGAudioInit( input_thread_t * p_input )
                                              MPEGAUDIO_MAXTESTPOS) ) 
                     < (b_forced ? 1 : 2)  )
     {
-        msg_Warn( p_input, "MPEGAudio module discarded" );
+        msg_Warn( p_input, "MPEGAudio module discarded (no frame found)" );
         return( -1 );
     }
     
@@ -446,8 +446,7 @@ static int MPEGAudioInit( input_thread_t * p_input )
         return( -1 );
     }
     p_input->stream.pp_programs[0]->b_is_ok = 0;
-    p_input->stream.p_selected_program = 
-            p_input->stream.p_new_program = p_input->stream.pp_programs[0];
+    p_input->stream.p_selected_program = p_input->stream.pp_programs[0];
     
     /* create our ES */ 
     p_es = input_AddES( p_input, 
index b835a27..fc2817b 100644 (file)
@@ -2,7 +2,7 @@
  * vpar_headers.c : headers parsing
  *****************************************************************************
  * Copyright (C) 1999-2001 VideoLAN
- * $Id: vpar_headers.c,v 1.26 2002/06/02 09:03:54 sam Exp $
+ * $Id: vpar_headers.c,v 1.27 2002/06/07 14:30:41 sam Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *          Stéphane Borel <stef@via.ecp.fr>
@@ -486,10 +486,15 @@ static void SequenceHeader( vpar_thread_t * p_vpar )
     /* Extension and User data */
     ExtensionAndUserData( p_vpar );
 
-    /* Spawn a video output if there is none */
-
+    /* Spawn a video output if there is none. First we look for our children,
+     * then we look for any other vout that might be available. */
     p_vpar->p_vout = vlc_object_find( p_vpar->p_fifo, VLC_OBJECT_VOUT,
-                                                      FIND_ANYWHERE );
+                                                      FIND_CHILD );
+    if( p_vpar->p_vout == NULL )
+    {
+        p_vpar->p_vout = vlc_object_find( p_vpar->p_fifo, VLC_OBJECT_VOUT,
+                                                          FIND_ANYWHERE );
+    }
     
     if( p_vpar->p_vout )
     {
@@ -513,6 +518,11 @@ static void SequenceHeader( vpar_thread_t * p_vpar )
         }
     }
 
+    if( p_vpar->p_fifo->b_die || p_vpar->p_fifo->b_error )
+    {
+        return;
+    }
+
     if( p_vpar->p_vout == NULL )
     {
         msg_Dbg( p_vpar->p_fifo, "no vout present, spawning one" );
index 5eae9a8..dd4688a 100644 (file)
@@ -2,7 +2,7 @@
  * rc.c : remote control stdin/stdout plugin for vlc
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: rc.c,v 1.17 2002/06/02 09:03:54 sam Exp $
+ * $Id: rc.c,v 1.18 2002/06/07 14:30:41 sam Exp $
  *
  * Authors: Peter Surda <shurdeek@panorama.sth.ac.at>
  *
@@ -53,7 +53,7 @@
  *****************************************************************************/
 struct intf_sys_s
 {
-    vlc_mutex_t         change_lock;
+    input_thread_t * p_input;
 };
 
 #define MAX_LINE_LENGTH 256
@@ -151,7 +151,7 @@ static void intf_Run( intf_thread_t *p_intf )
 
     double     f_ratio = 1;
 
-    input_thread_t *p_input;
+    p_intf->p_sys->p_input = NULL;
 
     while( !p_intf->b_die )
     {
@@ -187,10 +187,21 @@ static void intf_Run( intf_thread_t *p_intf )
         }
 
         /* Manage the input part */
-        p_input = vlc_object_find( p_intf, VLC_OBJECT_INPUT, FIND_ANYWHERE );
+        if( p_intf->p_sys->p_input == NULL )
+        {
+            p_intf->p_sys->p_input = vlc_object_find( p_intf, VLC_OBJECT_INPUT,
+                                                              FIND_ANYWHERE );
+        }
+        else if( p_intf->p_sys->p_input->b_dead )
+        {
+            vlc_object_release( p_intf->p_sys->p_input );
+            p_intf->p_sys->p_input = NULL;
+        }
 
-        if( p_input )
+        if( p_intf->p_sys->p_input )
         {
+            input_thread_t *p_input = p_intf->p_sys->p_input;
+
             /* Get position */
             vlc_mutex_lock( &p_input->stream.stream_lock );
             if( !p_input->b_die && p_input->stream.i_mux_rate )
@@ -234,18 +245,19 @@ static void intf_Run( intf_thread_t *p_intf )
 
             case 'p':
             case 'P':
-                if( p_input )
+                if( p_intf->p_sys->p_input )
                 {
-                    input_SetStatus( p_input, INPUT_STATUS_PAUSE );
+                    input_SetStatus( p_intf->p_sys->p_input,
+                                     INPUT_STATUS_PAUSE );
                 }
                 break;
 
             case 'f':
             case 'F':
-                if( p_input )
+                if( p_intf->p_sys->p_input )
                 {
                     vout_thread_t *p_vout;
-                    p_vout = vlc_object_find( p_input,
+                    p_vout = vlc_object_find( p_intf->p_sys->p_input,
                                               VLC_OBJECT_VOUT, FIND_CHILD );
 
                     if( p_vout )
@@ -268,7 +280,7 @@ static void intf_Run( intf_thread_t *p_intf )
 
             case 'r':
             case 'R':
-                if( p_input )
+                if( p_intf->p_sys->p_input )
                 {
                     for( i_dummy = 1;
                          i_dummy < MAX_LINE_LENGTH && p_cmd[ i_dummy ] >= '0'
@@ -279,7 +291,8 @@ static void intf_Run( intf_thread_t *p_intf )
                     }
 
                     p_cmd[ i_dummy ] = 0;
-                    input_Seek( p_input, (off_t)atoi( p_cmd + 1 ),
+                    input_Seek( p_intf->p_sys->p_input,
+                                (off_t)atoi( p_cmd + 1 ),
                                 INPUT_SEEK_SECONDS | INPUT_SEEK_SET );
                     /* rcreseek(f_cpos); */
                 }
@@ -304,12 +317,14 @@ static void intf_Run( intf_thread_t *p_intf )
             }
         }
 
-        if( p_input )
-        {
-            vlc_object_release( p_input );
-        }
-
         msleep( INTF_IDLE_SLEEP );
     }
+
+    if( p_intf->p_sys->p_input )
+    {
+        vlc_object_release( p_intf->p_sys->p_input );
+        p_intf->p_sys->p_input = NULL;
+    }
+
 }
 
index ea3365c..29f814f 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: vlc 0.73.3\n"
-"POT-Creation-Date: 2002-06-04 02:09+0200\n"
+"POT-Creation-Date: 2002-06-07 11:11+0200\n"
 "PO-Revision-Date: 2002-04-18 23:38+0100\n"
 "Last-Translator: Thomas Graf <tgr@reeler.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -14,13 +14,13 @@ msgstr ""
 "Content-Type: text/plain; charset=iso-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: src/libvlc.c:277
+#: src/libvlc.c:281
 #, c-format
 msgid "Usage: %s [options] [parameters] [file]...\n"
 msgstr "Usage: %s [Optionen] [Parameter] [Date]...\n"
 
 #. Print module name
-#: src/libvlc.c:891
+#: src/libvlc.c:898
 #, fuzzy, c-format
 msgid ""
 "%s module options:\n"
@@ -28,27 +28,27 @@ msgid ""
 msgstr "%s Modul Optionen:\n"
 
 #. We could also have "=<" here
-#: src/libvlc.c:911 src/misc/configuration.c:798
+#: src/libvlc.c:918 src/misc/configuration.c:798
 msgid "string"
 msgstr "text"
 
-#: src/libvlc.c:914 src/misc/configuration.c:783
+#: src/libvlc.c:921 src/misc/configuration.c:783
 msgid "integer"
 msgstr "zahl"
 
-#: src/libvlc.c:917 src/misc/configuration.c:790
+#: src/libvlc.c:924 src/misc/configuration.c:790
 msgid "float"
 msgstr "gleitpunktzahl"
 
-#: src/libvlc.c:923
+#: src/libvlc.c:930
 msgid " (default enabled)"
 msgstr ""
 
-#: src/libvlc.c:924
+#: src/libvlc.c:931
 msgid " (default disabled)"
 msgstr ""
 
-#: src/libvlc.c:1006
+#: src/libvlc.c:1013
 #, fuzzy
 msgid ""
 "\n"
@@ -79,7 +79,7 @@ msgstr ""
 "pausieren\n"
 "  vlc:quit                       \tVLC beenden"
 
-#: src/libvlc.c:1027 src/libvlc.c:1076 src/libvlc.c:1100 src/libvlc.c:1119
+#: src/libvlc.c:1034 src/libvlc.c:1083 src/libvlc.c:1107 src/libvlc.c:1126
 #, fuzzy
 msgid ""
 "\n"
@@ -89,19 +89,19 @@ msgstr ""
 "Drück die Eingabetaste um weiterzufahren..."
 
 #. Usage
-#: src/libvlc.c:1050
+#: src/libvlc.c:1057
 #, fuzzy, c-format
 msgid ""
 "Usage: %s [options] [parameters] [file]...\n"
 "\n"
 msgstr "Usage: %s [Optionen] [Parameter] [Date]...\n"
 
-#: src/libvlc.c:1053
+#: src/libvlc.c:1060
 #, fuzzy
 msgid "[module]              [description]\n"
 msgstr "[Modul]               [Beschreibung]"
 
-#: src/libvlc.c:1094
+#: src/libvlc.c:1101
 msgid ""
 "This program comes with NO WARRANTY, to the extent permitted by law.\n"
 "You may redistribute it under the terms of the GNU General Public License;\n"
@@ -171,10 +171,9 @@ msgid "audio output module"
 msgstr "Audio Ausgabe Modul"
 
 #: src/libvlc.h:60
-#, fuzzy
 msgid ""
-"This option allows you to select the audio audio output method used by vlc. "
-"The default behavior is to automatically select the best method available."
+"This option allows you to select the audio output method used by vlc. The "
+"default behavior is to automatically select the best method available."
 msgstr ""
 "Diese Option erlaubt Dir den Audio Ausgabemodus festzulegen.\n"
 "Merke Dir, standardmässig wird die beste Methode ausgewählt."
index da2e13a..c4f4f10 100644 (file)
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-06-04 02:09+0200\n"
+"POT-Creation-Date: 2002-06-07 11:11+0200\n"
 "PO-Revision-Date: 2002-04-22 09:56+0200\n"
 "Last-Translator: Samuel Hocevar <sam@zoy.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -13,13 +13,13 @@ msgstr ""
 "Content-Type: text/plain; charset=iso-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: src/libvlc.c:277
+#: src/libvlc.c:281
 #, c-format
 msgid "Usage: %s [options] [parameters] [file]...\n"
 msgstr ""
 
 #. Print module name
-#: src/libvlc.c:891
+#: src/libvlc.c:898
 #, c-format
 msgid ""
 "%s module options:\n"
@@ -27,27 +27,27 @@ msgid ""
 msgstr ""
 
 #. We could also have "=<" here
-#: src/libvlc.c:911 src/misc/configuration.c:798
+#: src/libvlc.c:918 src/misc/configuration.c:798
 msgid "string"
 msgstr ""
 
-#: src/libvlc.c:914 src/misc/configuration.c:783
+#: src/libvlc.c:921 src/misc/configuration.c:783
 msgid "integer"
 msgstr ""
 
-#: src/libvlc.c:917 src/misc/configuration.c:790
+#: src/libvlc.c:924 src/misc/configuration.c:790
 msgid "float"
 msgstr ""
 
-#: src/libvlc.c:923
+#: src/libvlc.c:930
 msgid " (default enabled)"
 msgstr ""
 
-#: src/libvlc.c:924
+#: src/libvlc.c:931
 msgid " (default disabled)"
 msgstr ""
 
-#: src/libvlc.c:1006
+#: src/libvlc.c:1013
 msgid ""
 "\n"
 "Playlist items:\n"
@@ -63,25 +63,25 @@ msgid ""
 "  vlc:quit                       quit VLC\n"
 msgstr ""
 
-#: src/libvlc.c:1027 src/libvlc.c:1076 src/libvlc.c:1100 src/libvlc.c:1119
+#: src/libvlc.c:1034 src/libvlc.c:1083 src/libvlc.c:1107 src/libvlc.c:1126
 msgid ""
 "\n"
 "Press the RETURN key to continue...\n"
 msgstr ""
 
 #. Usage
-#: src/libvlc.c:1050
+#: src/libvlc.c:1057
 #, c-format
 msgid ""
 "Usage: %s [options] [parameters] [file]...\n"
 "\n"
 msgstr ""
 
-#: src/libvlc.c:1053
+#: src/libvlc.c:1060
 msgid "[module]              [description]\n"
 msgstr ""
 
-#: src/libvlc.c:1094
+#: src/libvlc.c:1101
 msgid ""
 "This program comes with NO WARRANTY, to the extent permitted by law.\n"
 "You may redistribute it under the terms of the GNU General Public License;\n"
@@ -153,11 +153,11 @@ msgstr ""
 
 #: src/libvlc.h:60
 msgid ""
-"This option allows you to select the audio audio output method used by vlc. "
-"The default behavior is to automatically select the best method available."
+"This option allows you to select the audio output method used by vlc. The "
+"default behavior is to automatically select the best method available."
 msgstr ""
-"This option allows you to select the audio audio output method used by vlc. "
-"The default behaviour is to automatically select the best method available."
+"This option allows you to select the audio output method used by vlc. The "
+"default behaviour is to automatically select the best method available."
 
 #: src/libvlc.h:64
 msgid "enable audio"
index d20c025..e126cc3 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-06-04 02:09+0200\n"
+"POT-Creation-Date: 2002-06-07 11:11+0200\n"
 "PO-Revision-Date: 2001-12-10 13:32+0100\n"
 "Last-Translator: Samuel Hocevar <sam@zoy.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -13,13 +13,13 @@ msgstr ""
 "Content-Type: text/plain; charset=iso-8859-1\n"
 "Content-Transfer-Encoding: 8-bit\n"
 
-#: src/libvlc.c:277
+#: src/libvlc.c:281
 #, c-format
 msgid "Usage: %s [options] [parameters] [file]...\n"
 msgstr "Utilisation: %s [options] [paramètres] [fichier]...\n"
 
 #. Print module name
-#: src/libvlc.c:891
+#: src/libvlc.c:898
 #, c-format
 msgid ""
 "%s module options:\n"
@@ -29,27 +29,27 @@ msgstr ""
 "\n"
 
 #. We could also have "=<" here
-#: src/libvlc.c:911 src/misc/configuration.c:798
+#: src/libvlc.c:918 src/misc/configuration.c:798
 msgid "string"
 msgstr "chaîne"
 
-#: src/libvlc.c:914 src/misc/configuration.c:783
+#: src/libvlc.c:921 src/misc/configuration.c:783
 msgid "integer"
 msgstr "entier"
 
-#: src/libvlc.c:917 src/misc/configuration.c:790
+#: src/libvlc.c:924 src/misc/configuration.c:790
 msgid "float"
 msgstr "flottant"
 
-#: src/libvlc.c:923
+#: src/libvlc.c:930
 msgid " (default enabled)"
 msgstr ""
 
-#: src/libvlc.c:924
+#: src/libvlc.c:931
 msgid " (default disabled)"
 msgstr ""
 
-#: src/libvlc.c:1006
+#: src/libvlc.c:1013
 msgid ""
 "\n"
 "Playlist items:\n"
@@ -77,7 +77,7 @@ msgstr ""
 "  vlc:pause                      fait une pause dans la playlist\n"
 "  vlc:quit                       quitter VLC\n"
 
-#: src/libvlc.c:1027 src/libvlc.c:1076 src/libvlc.c:1100 src/libvlc.c:1119
+#: src/libvlc.c:1034 src/libvlc.c:1083 src/libvlc.c:1107 src/libvlc.c:1126
 msgid ""
 "\n"
 "Press the RETURN key to continue...\n"
@@ -86,7 +86,7 @@ msgstr ""
 "Appuyez sur ENTRÉE pour continuer...\n"
 
 #. Usage
-#: src/libvlc.c:1050
+#: src/libvlc.c:1057
 #, c-format
 msgid ""
 "Usage: %s [options] [parameters] [file]...\n"
@@ -95,11 +95,11 @@ msgstr ""
 "Utilisation: %s [options] [paramètres] [fichier]...\n"
 "\n"
 
-#: src/libvlc.c:1053
+#: src/libvlc.c:1060
 msgid "[module]              [description]\n"
 msgstr "[module]              [description]\n"
 
-#: src/libvlc.c:1094
+#: src/libvlc.c:1101
 msgid ""
 "This program comes with NO WARRANTY, to the extent permitted by law.\n"
 "You may redistribute it under the terms of the GNU General Public License;\n"
@@ -174,8 +174,8 @@ msgstr "module de sortie audio"
 
 #: src/libvlc.h:60
 msgid ""
-"This option allows you to select the audio audio output method used by vlc. "
-"The default behavior is to automatically select the best method available."
+"This option allows you to select the audio output method used by vlc. The "
+"default behavior is to automatically select the best method available."
 msgstr ""
 "Cette option permet de choisir le module de sortie audio utilisée par vlc. "
 "Le comportement par défaut est de choisir automatiquement le meilleur module "
index 5adb7a8..aa739aa 100644 (file)
--- a/po/ja.po
+++ b/po/ja.po
@@ -4,7 +4,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-06-04 02:09+0200\n"
+"POT-Creation-Date: 2002-06-07 11:11+0200\n"
 "PO-Revision-Date: 2002-04-02 03:22+0900\n"
 "Last-Translator: Fumio Nakayama <endymion@ca2.so-net.ne.jp>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -12,13 +12,13 @@ msgstr ""
 "Content-Type: text/plain; charset=euc-jp\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: src/libvlc.c:277
+#: src/libvlc.c:281
 #, c-format
 msgid "Usage: %s [options] [parameters] [file]...\n"
 msgstr ""
 
 #. Print module name
-#: src/libvlc.c:891
+#: src/libvlc.c:898
 #, c-format
 msgid ""
 "%s module options:\n"
@@ -26,27 +26,27 @@ msgid ""
 msgstr ""
 
 #. We could also have "=<" here
-#: src/libvlc.c:911 src/misc/configuration.c:798
+#: src/libvlc.c:918 src/misc/configuration.c:798
 msgid "string"
 msgstr ""
 
-#: src/libvlc.c:914 src/misc/configuration.c:783
+#: src/libvlc.c:921 src/misc/configuration.c:783
 msgid "integer"
 msgstr ""
 
-#: src/libvlc.c:917 src/misc/configuration.c:790
+#: src/libvlc.c:924 src/misc/configuration.c:790
 msgid "float"
 msgstr ""
 
-#: src/libvlc.c:923
+#: src/libvlc.c:930
 msgid " (default enabled)"
 msgstr ""
 
-#: src/libvlc.c:924
+#: src/libvlc.c:931
 msgid " (default disabled)"
 msgstr ""
 
-#: src/libvlc.c:1006
+#: src/libvlc.c:1013
 msgid ""
 "\n"
 "Playlist items:\n"
@@ -62,25 +62,25 @@ msgid ""
 "  vlc:quit                       quit VLC\n"
 msgstr ""
 
-#: src/libvlc.c:1027 src/libvlc.c:1076 src/libvlc.c:1100 src/libvlc.c:1119
+#: src/libvlc.c:1034 src/libvlc.c:1083 src/libvlc.c:1107 src/libvlc.c:1126
 msgid ""
 "\n"
 "Press the RETURN key to continue...\n"
 msgstr ""
 
 #. Usage
-#: src/libvlc.c:1050
+#: src/libvlc.c:1057
 #, c-format
 msgid ""
 "Usage: %s [options] [parameters] [file]...\n"
 "\n"
 msgstr ""
 
-#: src/libvlc.c:1053
+#: src/libvlc.c:1060
 msgid "[module]              [description]\n"
 msgstr ""
 
-#: src/libvlc.c:1094
+#: src/libvlc.c:1101
 msgid ""
 "This program comes with NO WARRANTY, to the extent permitted by law.\n"
 "You may redistribute it under the terms of the GNU General Public License;\n"
@@ -148,8 +148,8 @@ msgstr ""
 
 #: src/libvlc.h:60
 msgid ""
-"This option allows you to select the audio audio output method used by vlc. "
-"The default behavior is to automatically select the best method available."
+"This option allows you to select the audio output method used by vlc. The "
+"default behavior is to automatically select the best method available."
 msgstr ""
 
 #: src/libvlc.h:64
index 61282a2..bedaf8c 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-06-04 02:09+0200\n"
+"POT-Creation-Date: 2002-06-07 11:11+0200\n"
 "PO-Revision-Date: 2002-04-20 16:58GMT\n"
 "Last-Translator: Jean-Paul Saman <jpsaman@wxs.nl>\n"
 "Language-Team: Nederlands <nl@li.org>\n"
@@ -14,13 +14,13 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: KBabel 0.8\n"
 
-#: src/libvlc.c:277
+#: src/libvlc.c:281
 #, c-format
 msgid "Usage: %s [options] [parameters] [file]...\n"
 msgstr "Gebruik: %s [opties] [parameters] [file] ...\n"
 
 #. Print module name
-#: src/libvlc.c:891
+#: src/libvlc.c:898
 #, fuzzy, c-format
 msgid ""
 "%s module options:\n"
@@ -28,27 +28,27 @@ msgid ""
 msgstr "%s module opties:\n"
 
 #. We could also have "=<" here
-#: src/libvlc.c:911 src/misc/configuration.c:798
+#: src/libvlc.c:918 src/misc/configuration.c:798
 msgid "string"
 msgstr ""
 
-#: src/libvlc.c:914 src/misc/configuration.c:783
+#: src/libvlc.c:921 src/misc/configuration.c:783
 msgid "integer"
 msgstr ""
 
-#: src/libvlc.c:917 src/misc/configuration.c:790
+#: src/libvlc.c:924 src/misc/configuration.c:790
 msgid "float"
 msgstr ""
 
-#: src/libvlc.c:923
+#: src/libvlc.c:930
 msgid " (default enabled)"
 msgstr ""
 
-#: src/libvlc.c:924
+#: src/libvlc.c:931
 msgid " (default disabled)"
 msgstr ""
 
-#: src/libvlc.c:1006
+#: src/libvlc.c:1013
 #, fuzzy
 msgid ""
 "\n"
@@ -77,7 +77,7 @@ msgstr ""
 "  vlc:pause                      \tpauzeer speellijst items\n"
 "  vlc:quit                       \tstop VLC"
 
-#: src/libvlc.c:1027 src/libvlc.c:1076 src/libvlc.c:1100 src/libvlc.c:1119
+#: src/libvlc.c:1034 src/libvlc.c:1083 src/libvlc.c:1107 src/libvlc.c:1126
 #, fuzzy
 msgid ""
 "\n"
@@ -87,19 +87,19 @@ msgstr ""
 "Druk op RETURN om verder te gaan..."
 
 #. Usage
-#: src/libvlc.c:1050
+#: src/libvlc.c:1057
 #, fuzzy, c-format
 msgid ""
 "Usage: %s [options] [parameters] [file]...\n"
 "\n"
 msgstr "Gebruik: %s [opties] [parameters] [file] ...\n"
 
-#: src/libvlc.c:1053
+#: src/libvlc.c:1060
 #, fuzzy
 msgid "[module]              [description]\n"
 msgstr "[module]              [beschrijving]"
 
-#: src/libvlc.c:1094
+#: src/libvlc.c:1101
 #, fuzzy
 msgid ""
 "This program comes with NO WARRANTY, to the extent permitted by law.\n"
@@ -176,10 +176,9 @@ msgid "audio output module"
 msgstr "audio output module"
 
 #: src/libvlc.h:60
-#, fuzzy
 msgid ""
-"This option allows you to select the audio audio output method used by vlc. "
-"The default behavior is to automatically select the best method available."
+"This option allows you to select the audio output method used by vlc. The "
+"default behavior is to automatically select the best method available."
 msgstr ""
 "Deze optie selecteert de audio output methode, die gebruikt wordt door vlc.\n"
 "Noot: Standaard wordt automatisch de best beschikbare methode gekozen."
index b9eb5c8..5a1172f 100644 (file)
--- a/po/no.po
+++ b/po/no.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: vlc-cvs\n"
-"POT-Creation-Date: 2002-06-04 02:09+0200\n"
+"POT-Creation-Date: 2002-06-07 11:11+0200\n"
 "PO-Revision-Date: 2002-28-02 23.35+0100\n"
 "Last-Translator: Sigmund Augdal <sigmunau@idi.ntnu.no>.\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -13,13 +13,13 @@ msgstr ""
 "Content-Type: text/plain; charset=iso-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: src/libvlc.c:277
+#: src/libvlc.c:281
 #, c-format
 msgid "Usage: %s [options] [parameters] [file]...\n"
 msgstr ""
 
 #. Print module name
-#: src/libvlc.c:891
+#: src/libvlc.c:898
 #, c-format
 msgid ""
 "%s module options:\n"
@@ -27,27 +27,27 @@ msgid ""
 msgstr ""
 
 #. We could also have "=<" here
-#: src/libvlc.c:911 src/misc/configuration.c:798
+#: src/libvlc.c:918 src/misc/configuration.c:798
 msgid "string"
 msgstr ""
 
-#: src/libvlc.c:914 src/misc/configuration.c:783
+#: src/libvlc.c:921 src/misc/configuration.c:783
 msgid "integer"
 msgstr ""
 
-#: src/libvlc.c:917 src/misc/configuration.c:790
+#: src/libvlc.c:924 src/misc/configuration.c:790
 msgid "float"
 msgstr ""
 
-#: src/libvlc.c:923
+#: src/libvlc.c:930
 msgid " (default enabled)"
 msgstr ""
 
-#: src/libvlc.c:924
+#: src/libvlc.c:931
 msgid " (default disabled)"
 msgstr ""
 
-#: src/libvlc.c:1006
+#: src/libvlc.c:1013
 msgid ""
 "\n"
 "Playlist items:\n"
@@ -63,25 +63,25 @@ msgid ""
 "  vlc:quit                       quit VLC\n"
 msgstr ""
 
-#: src/libvlc.c:1027 src/libvlc.c:1076 src/libvlc.c:1100 src/libvlc.c:1119
+#: src/libvlc.c:1034 src/libvlc.c:1083 src/libvlc.c:1107 src/libvlc.c:1126
 msgid ""
 "\n"
 "Press the RETURN key to continue...\n"
 msgstr ""
 
 #. Usage
-#: src/libvlc.c:1050
+#: src/libvlc.c:1057
 #, c-format
 msgid ""
 "Usage: %s [options] [parameters] [file]...\n"
 "\n"
 msgstr ""
 
-#: src/libvlc.c:1053
+#: src/libvlc.c:1060
 msgid "[module]              [description]\n"
 msgstr ""
 
-#: src/libvlc.c:1094
+#: src/libvlc.c:1101
 msgid ""
 "This program comes with NO WARRANTY, to the extent permitted by law.\n"
 "You may redistribute it under the terms of the GNU General Public License;\n"
@@ -149,8 +149,8 @@ msgstr ""
 
 #: src/libvlc.h:60
 msgid ""
-"This option allows you to select the audio audio output method used by vlc. "
-"The default behavior is to automatically select the best method available."
+"This option allows you to select the audio output method used by vlc. The "
+"default behavior is to automatically select the best method available."
 msgstr ""
 
 #: src/libvlc.h:64
index 7651e10..118b8bf 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: vlc\n"
-"POT-Creation-Date: 2002-06-04 02:09+0200\n"
+"POT-Creation-Date: 2002-06-07 11:11+0200\n"
 "PO-Revision-Date: 2002-05-26 18:31+0200\n"
 "Last-Translator: Arkadiusz Lipiec <alipiec@elka.pw.edu.pl>\n"
 "Language-Team: polish <pl@li.org>\n"
@@ -13,13 +13,13 @@ msgstr ""
 "Content-Type: text/plain; charset=iso-8859-2\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: src/libvlc.c:277
+#: src/libvlc.c:281
 #, c-format
 msgid "Usage: %s [options] [parameters] [file]...\n"
 msgstr "U¿ycie: %s [opcje] [parametry] [plik]...\n"
 
 #. Print module name
-#: src/libvlc.c:891
+#: src/libvlc.c:898
 #, fuzzy, c-format
 msgid ""
 "%s module options:\n"
@@ -27,27 +27,27 @@ msgid ""
 msgstr "opcje modu³u %s:\n"
 
 #. We could also have "=<" here
-#: src/libvlc.c:911 src/misc/configuration.c:798
+#: src/libvlc.c:918 src/misc/configuration.c:798
 msgid "string"
 msgstr "napis"
 
-#: src/libvlc.c:914 src/misc/configuration.c:783
+#: src/libvlc.c:921 src/misc/configuration.c:783
 msgid "integer"
 msgstr "liczba ca³kowita"
 
-#: src/libvlc.c:917 src/misc/configuration.c:790
+#: src/libvlc.c:924 src/misc/configuration.c:790
 msgid "float"
 msgstr "liczba zmiennoprz."
 
-#: src/libvlc.c:923
+#: src/libvlc.c:930
 msgid " (default enabled)"
 msgstr ""
 
-#: src/libvlc.c:924
+#: src/libvlc.c:931
 msgid " (default disabled)"
 msgstr ""
 
-#: src/libvlc.c:1006
+#: src/libvlc.c:1013
 #, fuzzy
 msgid ""
 "\n"
@@ -76,7 +76,7 @@ msgstr ""
 "  vlc:pause                      zatrzymanie odtwarzania obiektów listy\n"
 "  vlc:quit                       wyj¶cie z VLC"
 
-#: src/libvlc.c:1027 src/libvlc.c:1076 src/libvlc.c:1100 src/libvlc.c:1119
+#: src/libvlc.c:1034 src/libvlc.c:1083 src/libvlc.c:1107 src/libvlc.c:1126
 #, fuzzy
 msgid ""
 "\n"
@@ -86,19 +86,19 @@ msgstr ""
 "Naci¶nij klawisz ENTER aby kontynuowaæ..."
 
 #. Usage
-#: src/libvlc.c:1050
+#: src/libvlc.c:1057
 #, fuzzy, c-format
 msgid ""
 "Usage: %s [options] [parameters] [file]...\n"
 "\n"
 msgstr "U¿ycie: %s [opcje] [parametry] [plik]...\n"
 
-#: src/libvlc.c:1053
+#: src/libvlc.c:1060
 #, fuzzy
 msgid "[module]              [description]\n"
 msgstr "[modu³]               [opis]"
 
-#: src/libvlc.c:1094
+#: src/libvlc.c:1101
 #, fuzzy
 msgid ""
 "This program comes with NO WARRANTY, to the extent permitted by law.\n"
@@ -175,10 +175,9 @@ msgid "audio output module"
 msgstr "modu³ wyj¶ciowy d¼wiêku"
 
 #: src/libvlc.h:60
-#, fuzzy
 msgid ""
-"This option allows you to select the audio audio output method used by vlc. "
-"The default behavior is to automatically select the best method available."
+"This option allows you to select the audio output method used by vlc. The "
+"default behavior is to automatically select the best method available."
 msgstr ""
 "Ta opcja umo¿liwia wybranie metody wyj¶ciowej d¼wiêku u¿ywanej przez vlc.\n"
 "Zauwa¿, ¿e domy¶lnym zachowaniem jest automatyczne wybranie najlepszej "
index 237aa6e..d920d42 100644 (file)
--- a/po/ru.po
+++ b/po/ru.po
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: gnome-vlc\n"
-"POT-Creation-Date: 2002-06-04 02:09+0200\n"
+"POT-Creation-Date: 2002-06-07 11:11+0200\n"
 "PO-Revision-Date: 2001-02-19 19:58+03:00\n"
 "Last-Translator: Valek Filippov <frob@df.ru>\n"
 "Language-Team: Russian <ru@li.org>\n"
@@ -14,13 +14,13 @@ msgstr ""
 "Content-Type: text/plain; charset=koi8-r\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: src/libvlc.c:277
+#: src/libvlc.c:281
 #, c-format
 msgid "Usage: %s [options] [parameters] [file]...\n"
 msgstr ""
 
 #. Print module name
-#: src/libvlc.c:891
+#: src/libvlc.c:898
 #, c-format
 msgid ""
 "%s module options:\n"
@@ -28,27 +28,27 @@ msgid ""
 msgstr ""
 
 #. We could also have "=<" here
-#: src/libvlc.c:911 src/misc/configuration.c:798
+#: src/libvlc.c:918 src/misc/configuration.c:798
 msgid "string"
 msgstr ""
 
-#: src/libvlc.c:914 src/misc/configuration.c:783
+#: src/libvlc.c:921 src/misc/configuration.c:783
 msgid "integer"
 msgstr ""
 
-#: src/libvlc.c:917 src/misc/configuration.c:790
+#: src/libvlc.c:924 src/misc/configuration.c:790
 msgid "float"
 msgstr ""
 
-#: src/libvlc.c:923
+#: src/libvlc.c:930
 msgid " (default enabled)"
 msgstr ""
 
-#: src/libvlc.c:924
+#: src/libvlc.c:931
 msgid " (default disabled)"
 msgstr ""
 
-#: src/libvlc.c:1006
+#: src/libvlc.c:1013
 msgid ""
 "\n"
 "Playlist items:\n"
@@ -64,25 +64,25 @@ msgid ""
 "  vlc:quit                       quit VLC\n"
 msgstr ""
 
-#: src/libvlc.c:1027 src/libvlc.c:1076 src/libvlc.c:1100 src/libvlc.c:1119
+#: src/libvlc.c:1034 src/libvlc.c:1083 src/libvlc.c:1107 src/libvlc.c:1126
 msgid ""
 "\n"
 "Press the RETURN key to continue...\n"
 msgstr ""
 
 #. Usage
-#: src/libvlc.c:1050
+#: src/libvlc.c:1057
 #, c-format
 msgid ""
 "Usage: %s [options] [parameters] [file]...\n"
 "\n"
 msgstr ""
 
-#: src/libvlc.c:1053
+#: src/libvlc.c:1060
 msgid "[module]              [description]\n"
 msgstr ""
 
-#: src/libvlc.c:1094
+#: src/libvlc.c:1101
 msgid ""
 "This program comes with NO WARRANTY, to the extent permitted by law.\n"
 "You may redistribute it under the terms of the GNU General Public License;\n"
@@ -148,8 +148,8 @@ msgstr ""
 
 #: src/libvlc.h:60
 msgid ""
-"This option allows you to select the audio audio output method used by vlc. "
-"The default behavior is to automatically select the best method available."
+"This option allows you to select the audio output method used by vlc. The "
+"default behavior is to automatically select the best method available."
 msgstr ""
 
 #: src/libvlc.h:64
index 47fb173..ef990a3 100644 (file)
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-06-04 02:09+0200\n"
+"POT-Creation-Date: 2002-06-07 11:11+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -14,13 +14,13 @@ msgstr ""
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: src/libvlc.c:277
+#: src/libvlc.c:281
 #, c-format
 msgid "Usage: %s [options] [parameters] [file]...\n"
 msgstr ""
 
 #. Print module name
-#: src/libvlc.c:891
+#: src/libvlc.c:898
 #, c-format
 msgid ""
 "%s module options:\n"
@@ -28,27 +28,27 @@ msgid ""
 msgstr ""
 
 #. We could also have "=<" here
-#: src/libvlc.c:911 src/misc/configuration.c:798
+#: src/libvlc.c:918 src/misc/configuration.c:798
 msgid "string"
 msgstr ""
 
-#: src/libvlc.c:914 src/misc/configuration.c:783
+#: src/libvlc.c:921 src/misc/configuration.c:783
 msgid "integer"
 msgstr ""
 
-#: src/libvlc.c:917 src/misc/configuration.c:790
+#: src/libvlc.c:924 src/misc/configuration.c:790
 msgid "float"
 msgstr ""
 
-#: src/libvlc.c:923
+#: src/libvlc.c:930
 msgid " (default enabled)"
 msgstr ""
 
-#: src/libvlc.c:924
+#: src/libvlc.c:931
 msgid " (default disabled)"
 msgstr ""
 
-#: src/libvlc.c:1006
+#: src/libvlc.c:1013
 msgid ""
 "\n"
 "Playlist items:\n"
@@ -64,25 +64,25 @@ msgid ""
 "  vlc:quit                       quit VLC\n"
 msgstr ""
 
-#: src/libvlc.c:1027 src/libvlc.c:1076 src/libvlc.c:1100 src/libvlc.c:1119
+#: src/libvlc.c:1034 src/libvlc.c:1083 src/libvlc.c:1107 src/libvlc.c:1126
 msgid ""
 "\n"
 "Press the RETURN key to continue...\n"
 msgstr ""
 
 #. Usage
-#: src/libvlc.c:1050
+#: src/libvlc.c:1057
 #, c-format
 msgid ""
 "Usage: %s [options] [parameters] [file]...\n"
 "\n"
 msgstr ""
 
-#: src/libvlc.c:1053
+#: src/libvlc.c:1060
 msgid "[module]              [description]\n"
 msgstr ""
 
-#: src/libvlc.c:1094
+#: src/libvlc.c:1101
 msgid ""
 "This program comes with NO WARRANTY, to the extent permitted by law.\n"
 "You may redistribute it under the terms of the GNU General Public License;\n"
@@ -148,8 +148,8 @@ msgstr ""
 
 #: src/libvlc.h:60
 msgid ""
-"This option allows you to select the audio audio output method used by vlc. "
-"The default behavior is to automatically select the best method available."
+"This option allows you to select the audio output method used by vlc. The "
+"default behavior is to automatically select the best method available."
 msgstr ""
 
 #: src/libvlc.h:64
index a6d0ced..fabb4fe 100644 (file)
@@ -4,7 +4,7 @@
  * decoders.
  *****************************************************************************
  * Copyright (C) 1998-2001 VideoLAN
- * $Id: input.c,v 1.201 2002/06/04 00:11:12 sam Exp $
+ * $Id: input.c,v 1.202 2002/06/07 14:30:41 sam Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -77,7 +77,7 @@ input_thread_t *__input_CreateThread( vlc_object_t *p_parent,
     if( p_input == NULL )
     {
         msg_Err( p_parent, "out of memory" );
-        return( NULL );
+        return NULL;
     }
 
     /* Initialize thread properties */
@@ -446,7 +446,7 @@ static int InitThread( input_thread_t * p_input )
 
     if( input_AccessInit( p_input ) == -1 )
     {
-        return( -1 );
+        return -1;
     }
 
     /* Find and open appropriate access module */
@@ -458,7 +458,7 @@ static int InitThread( input_thread_t * p_input )
     {
         msg_Err( p_input, "no suitable access module for `%s/%s:%s'",
                  p_input->psz_access, p_input->psz_demux, p_input->psz_name );
-        return( -1 );
+        return -1;
     }
 
 #define f p_input->p_access_module->p_functions->access.functions.access
@@ -487,7 +487,7 @@ static int InitThread( input_thread_t * p_input )
             if( p_input->b_die || p_input->b_error || p_input->b_eof )
             {
                 module_Unneed( p_input->p_access_module );
-                return( -1 );
+                return -1;
             }
         }
     }
@@ -502,7 +502,7 @@ static int InitThread( input_thread_t * p_input )
         msg_Err( p_input, "no suitable demux module for `%s/%s:%s'",
                  p_input->psz_access, p_input->psz_demux, p_input->psz_name );
         module_Unneed( p_input->p_access_module );
-        return( -1 );
+        return -1;
     }
 
 #define f p_input->p_demux_module->p_functions->demux.functions.demux
@@ -512,7 +512,7 @@ static int InitThread( input_thread_t * p_input )
     p_input->pf_rewind        = f.pf_rewind;
 #undef f
 
-    return( 0 );
+    return 0;
 }
 
 /*****************************************************************************
index 65ce159..74b6c3c 100644 (file)
@@ -4,7 +4,7 @@
  * and spawns threads.
  *****************************************************************************
  * Copyright (C) 1998-2001 VideoLAN
- * $Id: libvlc.c,v 1.7 2002/06/04 00:11:12 sam Exp $
+ * $Id: libvlc.c,v 1.8 2002/06/07 14:30:41 sam Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -239,6 +239,10 @@ vlc_error_t vlc_init( vlc_t *p_vlc, int i_argc, char *ppsz_argv[] )
         p_vlc->psz_object_name = "vlc";
     }
 
+    /* Announce who we are */
+    msg_Dbg( p_vlc, COPYRIGHT_MESSAGE );
+    msg_Dbg( p_vlc, "libvlc was configured with %s", CONFIGURE_LINE );
+
     /*
      * Initialize the module bank and and load the configuration of the main
      * module. We need to do this at this stage to be able to display a short
@@ -781,8 +785,10 @@ vlc_status_t vlc_status( vlc_t *p_vlc )
     return p_vlc->i_status;
 }
 
-vlc_error_t vlc_add_target( vlc_t *p_vlc, char *psz_target )
+vlc_error_t vlc_add_target( vlc_t *p_vlc, char *psz_target,
+                                          int i_mode, int i_pos )
 {
+    vlc_error_t err;
     playlist_t *p_playlist;
 
     if( !p_vlc || ( p_vlc->i_status != VLC_STATUS_STOPPED
@@ -807,11 +813,11 @@ vlc_error_t vlc_add_target( vlc_t *p_vlc, char *psz_target )
         vlc_object_yield( p_playlist );
     }
 
-    playlist_Add( p_playlist, PLAYLIST_END, psz_target );
+    err = playlist_Add( p_playlist, psz_target, i_mode, i_pos );
 
     vlc_object_release( p_playlist );
 
-    return VLC_SUCCESS;
+    return err;
 }
 
 /* following functions are local */
@@ -828,7 +834,8 @@ static int GetFilenames( vlc_t *p_vlc, int i_argc, char *ppsz_argv[] )
     /* We assume that the remaining parameters are filenames */
     for( i_opt = optind; i_opt < i_argc; i_opt++ )
     {
-        vlc_add_target( p_vlc, ppsz_argv[ i_opt ] );
+        vlc_add_target( p_vlc, ppsz_argv[ i_opt ],
+                        PLAYLIST_APPEND, PLAYLIST_END );
     }
 
     return VLC_SUCCESS;
index be5422f..c94b67b 100644 (file)
@@ -2,7 +2,7 @@
  * libvlc.h: main libvlc header
  *****************************************************************************
  * Copyright (C) 1998-2002 VideoLAN
- * $Id: libvlc.h,v 1.2 2002/06/01 17:09:25 sam Exp $
+ * $Id: libvlc.h,v 1.3 2002/06/07 14:30:41 sam Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -57,9 +57,9 @@
 
 #define AOUT_TEXT N_("audio output module")
 #define AOUT_LONGTEXT N_( \
-    "This option allows you to select the audio audio output method used by " \
-    "vlc. The default behavior is to automatically select the " \
-    "best method available.")
+    "This option allows you to select the audio output method used by vlc. " \
+    "The default behavior is to automatically select the best method " \
+    "available.")
 
 #define AUDIO_TEXT N_("enable audio")
 #define AUDIO_LONGTEXT N_( \
@@ -360,9 +360,9 @@ ADD_BOOL ( "altivec", 1, NULL, ALTIVEC_TEXT, ALTIVEC_LONGTEXT )
 
 /* Playlist options */
 ADD_CATEGORY_HINT( N_("Playlist"), NULL )
-ADD_BOOL ( "launch-playlist", 0, NULL, PL_LAUNCH_TEXT, PL_LAUNCH_LONGTEXT )
-ADD_BOOL ( "enqueue-playlist", 0, NULL, PL_ENQUEUE_TEXT, PL_ENQUEUE_LONGTEXT )
-ADD_BOOL ( "loop-playlist", 0, NULL, PL_LOOP_TEXT, PL_LOOP_LONGTEXT )
+ADD_BOOL ( "playlist", 0, NULL, PL_LAUNCH_TEXT, PL_LAUNCH_LONGTEXT )
+ADD_BOOL ( "enqueue", 0, NULL, PL_ENQUEUE_TEXT, PL_ENQUEUE_LONGTEXT )
+ADD_BOOL ( "loop", 0, NULL, PL_LOOP_TEXT, PL_LOOP_LONGTEXT )
 
 /* Misc options */
 ADD_CATEGORY_HINT( N_("Miscellaneous"), NULL )
index d91870e..4df79dc 100644 (file)
@@ -2,7 +2,7 @@
  * cpu.c: CPU detection code
  *****************************************************************************
  * Copyright (C) 1998-2002 VideoLAN
- * $Id: cpu.c,v 1.3 2002/06/04 00:11:12 sam Exp $
+ * $Id: cpu.c,v 1.4 2002/06/07 14:30:41 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Christophe Massiot <massiot@via.ecp.fr>
@@ -82,7 +82,7 @@ u32 __CPUCapabilities( vlc_object_t *p_this )
     if( ret != KERN_SUCCESS )
     {
         fprintf( stderr, "error: couldn't get CPU information\n" );
-        return( i_capabilities );
+        return i_capabilities;
     }
 
     slot_name( hi.cpu_type, hi.cpu_subtype, &psz_name, &psz_subname );
@@ -93,7 +93,7 @@ u32 __CPUCapabilities( vlc_object_t *p_this )
         i_capabilities |= CPU_CAPABILITY_ALTIVEC;
     }
 
-    return( i_capabilities );
+    return i_capabilities;
 
 #elif defined( __i386__ )
     volatile unsigned int  i_eax, i_ebx, i_ecx, i_edx;
@@ -140,7 +140,7 @@ u32 __CPUCapabilities( vlc_object_t *p_this )
 #   if defined( CAN_COMPILE_SSE ) || defined ( CAN_COMPILE_3DNOW )
         signal( SIGILL, NULL );
 #   endif
-        return( i_capabilities );
+        return i_capabilities;
     }
 
     i_capabilities |= CPU_CAPABILITY_486;
@@ -153,7 +153,7 @@ u32 __CPUCapabilities( vlc_object_t *p_this )
 #   if defined( CAN_COMPILE_SSE ) || defined ( CAN_COMPILE_3DNOW )
         signal( SIGILL, NULL );
 #   endif
-        return( i_capabilities );
+        return i_capabilities;
     }
 
     /* FIXME: this isn't correct, since some 486s have cpuid */
@@ -171,7 +171,7 @@ u32 __CPUCapabilities( vlc_object_t *p_this )
 #   if defined( CAN_COMPILE_SSE ) || defined ( CAN_COMPILE_3DNOW )
         signal( SIGILL, NULL );
 #   endif
-        return( i_capabilities );
+        return i_capabilities;
     }
 
     i_capabilities |= CPU_CAPABILITY_MMX;
@@ -208,7 +208,7 @@ u32 __CPUCapabilities( vlc_object_t *p_this )
 #   if defined( CAN_COMPILE_SSE ) || defined ( CAN_COMPILE_3DNOW )
         signal( SIGILL, NULL );
 #   endif
-        return( i_capabilities );
+        return i_capabilities;
     }
 
     /* list these additional capabilities */
@@ -243,7 +243,7 @@ u32 __CPUCapabilities( vlc_object_t *p_this )
 #   if defined( CAN_COMPILE_SSE ) || defined ( CAN_COMPILE_3DNOW )
     signal( SIGILL, NULL );
 #   endif
-    return( i_capabilities );
+    return i_capabilities;
 
 #elif defined( __powerpc__ )
 
@@ -272,16 +272,16 @@ u32 __CPUCapabilities( vlc_object_t *p_this )
     signal( SIGILL, NULL );
 #   endif
 
-    return( i_capabilities );
+    return i_capabilities;
 
 #elif defined( __sparc__ )
 
     i_capabilities |= CPU_CAPABILITY_FPU;
-    return( i_capabilities );
+    return i_capabilities;
 
 #else
     /* default behaviour */
-    return( i_capabilities );
+    return i_capabilities;
 
 #endif
 }
index 78eb752..8b59a3e 100644 (file)
@@ -2,7 +2,7 @@
  * modules.c : Builtin and plugin modules management functions
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: modules.c,v 1.65 2002/06/02 09:03:54 sam Exp $
+ * $Id: modules.c,v 1.66 2002/06/07 14:30:41 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *          Ethan C. Baldridge <BaldridgeE@cadmus.com>
@@ -279,8 +279,8 @@ module_t * __module_Need( vlc_object_t *p_this,
     module_t *p_module;
     char     *psz_realname = NULL;
 
-    msg_Info( p_this, "looking for %s module",
-                      MODULE_CAPABILITY( i_capability ) );
+    msg_Dbg( p_this, "looking for %s module",
+                     MODULE_CAPABILITY( i_capability ) );
 
     /* We take the global lock */
     vlc_mutex_lock( &p_this->p_vlc->module_bank.lock );
index f6cd44b..d5a3975 100644 (file)
@@ -2,7 +2,7 @@
  * objects.c: vlc_object_t handling
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: objects.c,v 1.7 2002/06/05 18:29:24 stef Exp $
+ * $Id: objects.c,v 1.8 2002/06/07 14:30:41 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -163,22 +163,42 @@ void * __vlc_object_create( vlc_object_t *p_this, int i_type )
  *****************************************************************************/
 void __vlc_object_destroy( vlc_object_t *p_this )
 {
-    if( p_this->i_refcount )
-    {
-        msg_Err( p_this, "refcount is %i", p_this->i_refcount );
-        vlc_dumpstructure( p_this );
-    }
+    int i_delay = 0;
 
     if( p_this->i_children )
     {
-        msg_Err( p_this, "object still has children" );
+        msg_Err( p_this, "cannot delete object with children" );
         vlc_dumpstructure( p_this );
+        return;
     }
 
     if( p_this->i_parents )
     {
-        msg_Err( p_this, "object still has parents" );
+        msg_Err( p_this, "cannot delete object with parents" );
         vlc_dumpstructure( p_this );
+        return;
+    }
+
+    while( p_this->i_refcount )
+    {
+        if( i_delay == 0 )
+        {
+            msg_Warn( p_this, "refcount is %i, delaying before deletion",
+                              p_this->i_refcount );
+        }
+        else if( i_delay == 12 )
+        {
+            msg_Err( p_this, "refcount is %i, I have a bad feeling about this",
+                             p_this->i_refcount );
+        }
+        else if( i_delay == 42 )
+        {
+            msg_Err( p_this, "we waited too long, cancelling destruction" );
+            return;
+        }
+
+        i_delay++;
+        msleep( 100000 );
     }
 
     //msg_Dbg( p_this, "destroyed object" );
@@ -187,7 +207,6 @@ void __vlc_object_destroy( vlc_object_t *p_this )
     vlc_cond_destroy( &p_this->object_wait );
 
     free( p_this );
-    p_this = NULL;
 }
 
 /*****************************************************************************
index 82cb7cd..888f519 100644 (file)
@@ -2,7 +2,7 @@
  * playlist.c : Playlist management functions
  *****************************************************************************
  * Copyright (C) 1999-2001 VideoLAN
- * $Id: playlist.c,v 1.5 2002/06/04 00:11:12 sam Exp $
+ * $Id: playlist.c,v 1.6 2002/06/07 14:30:41 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -10,7 +10,7 @@
  * 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
  * Local prototypes
  *****************************************************************************/
 static void RunThread ( playlist_t * );
+static void SkipItem  ( playlist_t *, int );
+static void PlayItem  ( playlist_t * );
+
+static void Poubellize ( playlist_t *, input_thread_t * );
 
 /*****************************************************************************
  * playlist_Create: create playlist
@@ -62,19 +66,17 @@ playlist_t * __playlist_Create ( vlc_object_t *p_parent )
     p_playlist->i_index = -1;
     p_playlist->i_size = 0;
     p_playlist->pp_items = NULL;
-    vlc_mutex_init( p_playlist, &p_playlist->change_lock );
-
-    vlc_object_attach( p_playlist, p_parent );
 
-    if( vlc_thread_create( p_playlist, "playlist", RunThread, 0 ) )
+    if( vlc_thread_create( p_playlist, "playlist", RunThread, VLC_TRUE ) )
     {
         msg_Err( p_playlist, "cannot spawn playlist thread" );
-        vlc_object_detach_all( p_playlist );
-        vlc_mutex_destroy( &p_playlist->change_lock );
         vlc_object_destroy( p_playlist );
         return NULL;
     }
 
+    /* The object has been initialized, now attach it */
+    vlc_object_attach( p_playlist, p_parent );
+
     return p_playlist;
 }
 
@@ -89,7 +91,6 @@ void playlist_Destroy( playlist_t * p_playlist )
 
     vlc_thread_join( p_playlist );
 
-    vlc_mutex_destroy( &p_playlist->change_lock );
     vlc_object_destroy( p_playlist );
 }
 
@@ -99,32 +100,88 @@ void playlist_Destroy( playlist_t * p_playlist )
  * Add an item to the playlist at position i_pos. If i_pos is PLAYLIST_END,
  * add it at the end regardless of the playlist current size.
  *****************************************************************************/
-int playlist_Add( playlist_t *p_playlist, int i_pos, const char * psz_item )
+int playlist_Add( playlist_t *p_playlist, const char * psz_target,
+                                          int i_mode, int i_pos )
 {
-    msg_Warn( p_playlist, "adding playlist item « %s »", psz_item );
+    playlist_item_t *p_item;
+
+    msg_Warn( p_playlist, "adding playlist item « %s »", psz_target );
 
-    vlc_mutex_lock( &p_playlist->change_lock );
+    vlc_mutex_lock( &p_playlist->object_lock );
 
-    p_playlist->i_size++;
-    p_playlist->pp_items = realloc( p_playlist->pp_items,
-                                    p_playlist->i_size * sizeof(void*) );
-    if( p_playlist->pp_items == NULL )
+    /* Create the new playlist item */
+    p_item = malloc( sizeof( playlist_item_t ) );
+    if( p_item == NULL )
     {
         msg_Err( p_playlist, "out of memory" );
-        vlc_mutex_unlock( &p_playlist->change_lock );
-        vlc_object_release( p_playlist );
-        return -1;
+        vlc_mutex_unlock( &p_playlist->object_lock );
     }
 
-    i_pos = p_playlist->i_size - 1; /* FIXME */
-    p_playlist->pp_items[i_pos] = malloc( sizeof( playlist_item_t ) );
-    p_playlist->pp_items[i_pos]->psz_name = strdup( psz_item );
-    p_playlist->pp_items[i_pos]->i_type = 0;
-    p_playlist->pp_items[i_pos]->i_status = 0;
+    p_item->psz_name = strdup( psz_target );
+    p_item->i_type = 0;
+    p_item->i_status = 0;
+
+    /* Do a few boundary checks and allocate space for the item */
+    if( i_pos == PLAYLIST_END )
+    {
+        i_pos = p_playlist->i_size - 1;
+    }
+
+    if( !(i_mode & PLAYLIST_REPLACE)
+         || i_pos < 0 || i_pos >= p_playlist->i_size )
+    {
+        int i_index;
+
+        p_playlist->i_size++;
+        p_playlist->pp_items = realloc( p_playlist->pp_items,
+                                        p_playlist->i_size * sizeof(void*) );
+        if( p_playlist->pp_items == NULL )
+        {
+            msg_Err( p_playlist, "out of memory" );
+            free( p_item->psz_name );
+            free( p_item );
+            vlc_mutex_unlock( &p_playlist->object_lock );
+            return -1;
+        }
+
+        /* Additional boundary checks */
+        if( i_mode & PLAYLIST_APPEND )
+        {
+            i_pos++;
+        }
+
+        if( i_pos < 0 )
+        {
+            i_pos = 0;
+        }
+        else if( i_pos > p_playlist->i_size - 1 )
+        {
+            i_pos = p_playlist->i_size - 1;
+        }
+
+        /* Now we know exactly where it goes. Just renumber the playlist */
+        for( i_index = p_playlist->i_size - 2; i_index > i_pos ; i_index-- )
+        {
+            p_playlist->pp_items[i_index + 1] = p_playlist->pp_items[i_index];
+        }
 
+        if( p_playlist->i_index >= i_pos )
+        {
+            i_index++;
+        }
+    }
+    else
+    {
+        /* i_mode == PLAYLIST_REPLACE and 0 <= i_pos < p_playlist->i_size */
+        free( p_playlist->pp_items[i_pos]->psz_name );
+        free( p_playlist->pp_items[i_pos] );
+        /* XXX: what if the item is still in use? */
+    }
+
+    p_playlist->pp_items[i_pos] = p_item;
     p_playlist->i_status = PLAYLIST_RUNNING;
 
-    vlc_mutex_unlock( &p_playlist->change_lock );
+    vlc_mutex_unlock( &p_playlist->object_lock );
 
     return 0;
 }
@@ -136,9 +193,9 @@ int playlist_Add( playlist_t *p_playlist, int i_pos, const char * psz_item )
  *****************************************************************************/
 int playlist_Delete( playlist_t * p_playlist, int i_pos )
 {
-    vlc_mutex_lock( &p_playlist->change_lock );
+    vlc_mutex_lock( &p_playlist->object_lock );
 
-    vlc_mutex_unlock( &p_playlist->change_lock );
+    vlc_mutex_unlock( &p_playlist->object_lock );
 
     return 0;
 }
@@ -146,35 +203,54 @@ int playlist_Delete( playlist_t * p_playlist, int i_pos )
 /*****************************************************************************
  * playlist_Command: do a playlist action
  *****************************************************************************
- * 
+ *
  *****************************************************************************/
 void playlist_Command( playlist_t * p_playlist, int i_command, int i_arg )
-{   
-    vlc_mutex_lock( &p_playlist->change_lock );
+{
+    vlc_mutex_lock( &p_playlist->object_lock );
 
     switch( i_command )
     {
     case PLAYLIST_STOP:
-        msg_Dbg( p_playlist, "stopping" );
         p_playlist->i_status = PLAYLIST_STOPPED;
+        if( p_playlist->p_input )
+        {
+            input_StopThread( p_playlist->p_input );
+        }
         break;
+
     case PLAYLIST_PLAY:
-        msg_Dbg( p_playlist, "running" );
         p_playlist->i_status = PLAYLIST_RUNNING;
         break;
+
     case PLAYLIST_SKIP:
-        msg_Dbg( p_playlist, "next" );
-        if( p_playlist->i_size )
+        p_playlist->i_status = PLAYLIST_STOPPED;
+        SkipItem( p_playlist, i_arg );
+        if( p_playlist->p_input )
         {
-            p_playlist->i_index = 0;
+            input_StopThread( p_playlist->p_input );
+        }
+        p_playlist->i_status = PLAYLIST_RUNNING;
+        break;
+
+    case PLAYLIST_GOTO:
+        if( i_arg >= 0 && i_arg < p_playlist->i_size )
+        {
+            p_playlist->i_index = i_arg;
+            if( p_playlist->p_input )
+            {
+                input_StopThread( p_playlist->p_input );
+            }
             p_playlist->i_status = PLAYLIST_RUNNING;
         }
         break;
+
     default:
+        msg_Err( p_playlist, "unknown playlist command" );
         break;
     }
 
-    vlc_mutex_unlock( &p_playlist->change_lock );
+    vlc_mutex_unlock( &p_playlist->object_lock );
 
     return;
 }
@@ -186,8 +262,13 @@ void playlist_Command( playlist_t * p_playlist, int i_command, int i_arg )
  *****************************************************************************/
 static void RunThread ( playlist_t *p_playlist )
 {
+    /* Tell above that we're ready */
+    vlc_thread_ready( p_playlist );
+
     while( !p_playlist->b_die )
     {
+        vlc_mutex_lock( &p_playlist->object_lock );
+
         /* If there is an input, check that it doesn't need to die. */
         if( p_playlist->p_input )
         {
@@ -197,16 +278,18 @@ static void RunThread ( playlist_t *p_playlist )
                 input_thread_t *p_input;
 
                 /* Unlink current input */
-                vlc_mutex_lock( &p_playlist->change_lock );
                 p_input = p_playlist->p_input;
                 p_playlist->p_input = NULL;
                 vlc_object_detach_all( p_input );
-                vlc_mutex_unlock( &p_playlist->change_lock );
+
+                /* Release the playlist lock, because we may get stuck
+                 * in input_DestroyThread() for some time. */
+                vlc_mutex_unlock( &p_playlist->object_lock );
 
                 /* Destroy input */
-                vlc_object_release( p_input );
                 input_DestroyThread( p_input );
                 vlc_object_destroy( p_input );
+                continue;
             }
             /* This input is dying, let him do */
             else if( p_playlist->p_input->b_die )
@@ -217,75 +300,145 @@ static void RunThread ( playlist_t *p_playlist )
             else if( p_playlist->p_input->b_error
                       || p_playlist->p_input->b_eof )
             {
+                /* Select the next playlist item */
+                SkipItem( p_playlist, 1 );
+
+                /* Release the playlist lock, because we may get stuck
+                 * in input_StopThread() for some time. */
+                vlc_mutex_unlock( &p_playlist->object_lock );
                 input_StopThread( p_playlist->p_input );
+                continue;
             }
         }
         else if( p_playlist->i_status != PLAYLIST_STOPPED )
         {
-            /* Select the next playlist item */
-            playlist_Next( p_playlist );
-
-            /* don't loop by default: stop at playlist end */
-            if( p_playlist->i_index == -1 )
-            {
-                p_playlist->i_status = PLAYLIST_STOPPED;
-            }
-            else
-            {
-                input_thread_t *p_input;
-
-                //p_playlist->i_mode = PLAYLIST_FORWARD +
-                //    config_GetInt( p_playlist, "loop-playlist" );
-                msg_Dbg( p_playlist, "creating new input thread" );
-                p_input = input_CreateThread( p_playlist,
-                            p_playlist->pp_items[p_playlist->i_index], NULL );
-                if( p_input != NULL )
-                {
-                    /* Link current input */
-                    vlc_mutex_lock( &p_playlist->change_lock );
-                    p_playlist->p_input = p_input;
-                    vlc_mutex_unlock( &p_playlist->change_lock );
-                }
-            }
+            PlayItem( p_playlist );
         }
 
+        vlc_mutex_unlock( &p_playlist->object_lock );
+
         msleep( INTF_IDLE_SLEEP );
     }
 
     /* If there is an input, kill it */
-    while( p_playlist->p_input )
+    while( 1 )
     {
+        vlc_mutex_lock( &p_playlist->object_lock );
+
+        if( p_playlist->p_input == NULL )
+        {
+            vlc_mutex_unlock( &p_playlist->object_lock );
+            break;
+        }
+
         if( p_playlist->p_input->b_dead )
         {
             input_thread_t *p_input;
 
             /* Unlink current input */
-            vlc_mutex_lock( &p_playlist->change_lock );
             p_input = p_playlist->p_input;
             p_playlist->p_input = NULL;
             vlc_object_detach_all( p_input );
-            vlc_mutex_unlock( &p_playlist->change_lock );
+            vlc_mutex_unlock( &p_playlist->object_lock );
 
             /* Destroy input */
-            vlc_object_release( p_input );
             input_DestroyThread( p_input );
             vlc_object_destroy( p_input );
+            continue;
         }
-        /* This input is dying, let him do */
         else if( p_playlist->p_input->b_die )
         {
+            /* This input is dying, leave him alone */
             ;
         }
         else if( p_playlist->p_input->b_error || p_playlist->p_input->b_eof )
         {
+            vlc_mutex_unlock( &p_playlist->object_lock );
             input_StopThread( p_playlist->p_input );
+            continue;
         }
         else
         {
             p_playlist->p_input->b_eof = 1;
         }
 
+        vlc_mutex_unlock( &p_playlist->object_lock );
+
         msleep( INTF_IDLE_SLEEP );
     }
 }
 
+/*****************************************************************************
+ * SkipItem: go to Xth playlist item
+ *****************************************************************************
+ * This function calculates the position of the next playlist item, depending
+ * on the playlist course mode (forward, backward, random...).
+ *****************************************************************************/
+static void SkipItem( playlist_t *p_playlist, int i_arg )
+{
+    int i_oldindex = p_playlist->i_index;
+
+    /* If the playlist is empty, there is no current item */
+    if( p_playlist->i_size == 0 )
+    {
+        p_playlist->i_index = -1;
+        return;
+    }
+
+    /* Increment */
+    p_playlist->i_index += i_arg;
+
+    /* Boundary check */
+    if( p_playlist->i_index >= p_playlist->i_size )
+    {
+        if( p_playlist->i_status == PLAYLIST_STOPPED
+             || config_GetInt( p_playlist, "loop" ) )
+        {
+            p_playlist->i_index = 0;
+        }
+        else
+        {
+            /* Don't loop by default: stop at playlist end */
+            p_playlist->i_index = i_oldindex;
+            p_playlist->i_status = PLAYLIST_STOPPED;
+        }
+    }
+    else if( p_playlist->i_index < 0 )
+    {
+        p_playlist->i_index = p_playlist->i_size - 1;
+    }
+}
+
+/*****************************************************************************
+ * PlayItem: play current playlist item
+ *****************************************************************************
+ * This function calculates the position of the next playlist item, depending
+ * on the playlist course mode (forward, backward, random...).
+ *****************************************************************************/
+static void PlayItem( playlist_t *p_playlist )
+{
+    if( p_playlist->i_index == -1 )
+    {
+        if( p_playlist->i_size == 0 )
+        {
+            return;
+        }
+
+        SkipItem( p_playlist, 1 );
+    }
+
+    msg_Dbg( p_playlist, "creating new input thread" );
+    p_playlist->p_input = input_CreateThread( p_playlist,
+                p_playlist->pp_items[p_playlist->i_index], NULL );
+}
+
+/*****************************************************************************
+ * Poubellize: put an input thread in the trashcan
+ *****************************************************************************
+ * XXX: unused
+ *****************************************************************************/
+static void Poubellize ( playlist_t *p_playlist, input_thread_t *p_input )
+{
+    
+}
+