]> git.sesse.net Git - vlc/commitdiff
* ./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 d8d519bb179a9428e53a93aa9f7446589d9ca87f..b50f6ba9da625e6297e0b5d36a170ff9ee1ddd23 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 05cf8d3185d1fd689a9ad91144ae1c434d221b8c..7cf2c50cc941b9d7bc6b3b1d306a15c05fcb68b2 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 b6404d3048b6aee46a5a2240518f538a486b08df..9b26a11b6e35e1425ea3361424688ce18f09a0a7 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 f0bd9923747a8d4d4de5980c780e3738db1de4cc..96434e147097acaba601618f088284105e33bd66 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 0fe3ac95b49fa3e55f126c0ed9a3e996e66b4197..26848b924f095214695055f6b9e4045884750f4a 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 2146499573378fb72882a1c76e642007a4ef75e2..5c7ae6f067c71083060b582cbbb0c6099763da39 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 db1063f03b4290e6ab839ca7654d16ec64011d6f..9988d22a606be409d50408df17380eb1e744a88e 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 e5cbfd0c5e72bf4371901a0930b9a2acff8168ad..456110ff967d1c51c25b8d44da515e54917f57ed 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 35129c8f73fbe7cb6184b9206d204e89f6200576..9a33e9d212cabf9ecabda7c55f33f401091d46cd 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 a3d4a040a86d3649d40b8c8f625c8ff4257467a6..fd5443805487186f32177edc75557eaf9c839baa 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 28d340724c0361056af87bd0843efafc7d74aac5..91426e85d8c2b936d1f161864468c5b8a6a9cbe5 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 86569ea61071ff76632676be8a2007567b71e436..f6767e6bdfea938eef06e33efbe4da85635a81b4 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 8c2d665e1d34430b7e9391288dd0ee5fe671f2cd..3e60c4292c3fddf0b2767acb75bbf1dd43a4d659 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 631146979a99568147ebd72bf14b12c4a8889f78..fc13f5cccf44b45cf3b8ff8cbd4c9a7a196f1eec 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 e2df73959e6d27427abc63c5dcaef6b920639025..e112c17d502a9df6d6dab032cc33b0ff56506aee 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 58332ce1bcb1784337e2586c64b170b85910511f..60495b737962f6fd1ff250c91744e02876bc709d 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 0890aebbae2755fb79e944642019cae0c400e5d2..5da051ab801416212e744b16c78ef3db4bd9c9c4 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 46bfe9544032f01a7d58fbd4201fbab60bb6fa39..97c18a2792c5006f37af793a8294899cd8458942 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 e3372d87fb792e1bdc411e1779720afd442941dc..2ef7fbe90ea05ac15f539e361c59dcc13a7d0924 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 b60a96446dd181d7ec185aa499f6366c6a68bac2..dd1b12b80789cfd3ab4f71e306d7b45ef0fdece9 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 e26b20b8155a40e6649fed077de0775d533c007e..a013e781222fef28c19a8b0c612176532bf66c82 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 bd8b824a53975e41f5042a807ad17c446aae23ba..31f4f621968ff9f8f52cee8986e242843fdf629d 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 e7e8f9b0bc9e52765a4dd31bf8c455961dce1463..dbce10c7109878cb458c917ef352088653b5055b 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 247adb2ce3ac93a63c861b08c26c36b9fa113de0..31ac992abd40d0cb009faa326befd2ef59b302ba 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 6ede5fbae8a5caa1e284d08bac89e6fc2b7b5981..f1fa2c3cb933a64c81ff42b701db061aa01a40fc 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 e401a0689405839dc58fa0af6281cdb7888c3c91..694ddda17d35bf3113e47081e82622cf8bd82f9f 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 ec357d8772b7fb13f607b8e95ed8752ef10f5f2e..42133feca1431c55cccfde440f258c5679dff581 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 4246378cf05da68393c61b7fb5c1502d6123f912..239dbf15e147a2a7c285641defc3ee90dc2843c7 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 aeb1b457d671e104cad4561561f797f058075b8f..28bf268f8ed5cb9801d5ca89cbcb944e8922af0d 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 b7e243bcc072b272db0304b157dcc4933532c471..a0f62d47a5447cb1d5853f8d301a6788a8f37e36 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 b835a2761ba2352c72107ec73f7f8d701d84e1f2..fc2817b64b9f4100853e9f7e438e75b488c8249a 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 5eae9a8aa921c4886dca705e8a400200309cc6df..dd4688ab6d4c008b517ff78fd7620b8cdc9d6cf7 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 ea3365cd684798556fc8795603871296a0595f71..29f814fcc04bcbf72877d58cbfc3a2f1f838cc87 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 da2e13a3cd43ff4f590373aa885b9ef7f48cc88b..c4f4f106339077e0c99e0ad8242dd1639014dbf0 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 d20c025e0c5308901e228d6a09edd76a89abb272..e126cc397ebdf951909f90d6de96b54f4efcb078 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 5adb7a8b8a381a9a22c7fd08414baff7850a96d3..aa739aaa1944bafcd9f0e1ca925f25f61d6c7f52 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 61282a2fabf450bbd798bd76b1547af62b7b9d0c..bedaf8c77521068496574247738635e8ba2ff65f 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 b9eb5c8f6575b4db666d7e1b3bb3dc4ea1369b47..5a1172f06d4bc543f2f5deb441b9986caed1c4fd 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 7651e102eb45db6c938bf1e407a43e2b8c7e5a62..118b8bf9fb2d5bf8446a9ec4ec01ded04085d019 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 237aa6eff6047339829edfcf1278c85dfb4b160f..d920d428e08c2a991bcd737b9b4e3f9b58b45be8 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 47fb173889f9b3488972a055e0027d47171eb4fb..ef990a3b91f1e90746b666371f7618c969cb8835 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 a6d0cedbed1bae41585826816f4896164f359252..fabb4feee219f5298a3ce749909aa3a751e209a5 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 65ce159d1d035293227e05aa9b5fee3c3cee3059..74b6c3c85798d2595e6de95b3bc87fd16dae4ad8 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 be5422f32da172ed69af53e7cc1a04433be7d7e5..c94b67b00097ba881323029a14623f196b91fbb9 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 d91870e4087ff809fc74db5947e5fb15850199af..4df79dc17189c223fba0162e1e214c7fccdff520 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 78eb7526077e7a5102b71a1b3a58cfd10ac8cade..8b59a3e64571500a68f17b5e933b2fb99be1baa9 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 f6cd44b55e787f87f511199ea648097ec7e50573..d5a39757f0a2eb5ce2298b0e8dfe08bc5809b2f0 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 82cb7cdb4de3d26b3de44cb479758741ae17957c..888f5195a89cac09e822ae772c1d878395a8889d 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 )
+{
+    
+}
+