Remove p_playlist from p_libvlc
authorRémi Denis-Courmont <rem@videolan.org>
Wed, 7 May 2008 19:26:56 +0000 (22:26 +0300)
committerRémi Denis-Courmont <rem@videolan.org>
Wed, 7 May 2008 19:26:56 +0000 (22:26 +0300)
Plugins are already using pl_Yield to get the playlist, as they should.

12 files changed:
include/vlc_main.h
include/vlc_playlist.h
modules/gui/pda/pda_callbacks.c
src/control/media.c
src/control/playlist.c
src/input/input.c
src/libvlc-common.c
src/libvlc.c
src/libvlc.h
src/misc/win32_specific.c
src/playlist/control.c
src/playlist/engine.c

index b6c8b8c..2168788 100644 (file)
@@ -1,9 +1,8 @@
 /*****************************************************************************
  * main.h: access to all program variables
- * Declaration and extern access to global program object.
+ * Declaration and extern access to LibVLC instance object.
  *****************************************************************************
- * Copyright (C) 1999, 2000, 2001, 2002 the VideoLAN team
- * $Id$
+ * Copyright (C) 1999, 2000, 2001, 2002, 2008 the VideoLAN team
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *
@@ -40,8 +39,6 @@ struct libvlc_int_t
     /* Global properties */
     char *                 psz_homedir;      ///< user's home directory
 
-    playlist_t            *p_playlist;       ///< playlist object
-
     global_stats_t       *p_stats;           ///< Global statistics
 
 
index e03027b..bb78449 100644 (file)
@@ -412,7 +412,7 @@ static inline int playlist_Import( playlist_t *p_playlist, const char *psz_file)
 #define playlist_IsEmpty( pl ) ( pl->items.i_size == 0 )
 
 /** Tell the number of items in the current playing context */
-#define playlist_CurrentSize( obj ) obj->p_libvlc->p_playlist->current.i_size
+#define playlist_CurrentSize( pl ) pl->current.i_size
 
 /** Ask the playlist to do some work */
 #define playlist_Signal( p_playlist ) vlc_object_signal( p_playlist )
index 7c835b5..58fa6fa 100644 (file)
@@ -120,7 +120,7 @@ static void PlaylistAddItem(GtkWidget *widget, gchar *name, char **ppsz_options,
             gtk_list_store_set (GTK_LIST_STORE(p_play_model), &p_play_iter,
                                     0, name,   /* Add path to it !!! */
                                     1, "no info",
-                                    2, playlist_CurrentSize(p_intf), /* Hidden index. */
+                                    2, playlist_CurrentSize(p_playlist), /* Hidden index. */
                                     -1 );
 
             /* Add to VLC's playlist */
@@ -163,7 +163,7 @@ void PlaylistRebuildListStore( intf_thread_t *p_intf,
     red.green   = 0;
 #endif
     vlc_mutex_lock( &p_playlist->object_lock );
-    for( i_dummy = 0; i_dummy < playlist_CurrentSize(p_intf) ; i_dummy++ )
+    for( i_dummy = 0; i_dummy < playlist_CurrentSize(p_playlist) ; i_dummy++ )
     {
         playlist_item_t *p_item = playlist_ItemGetById( p_playlist, i_dummy, true );
         if( p_item )
@@ -384,7 +384,7 @@ void onPlay(GtkButton *button, gpointer user_data)
     if (p_playlist)
     {
         vlc_mutex_lock( &p_playlist->object_lock );
-        if (playlist_CurrentSize(p_intf))
+        if (playlist_CurrentSize(p_playlist))
         {
             vlc_mutex_unlock( &p_playlist->object_lock );
             playlist_Play( p_playlist );
@@ -929,7 +929,7 @@ void onClearPlaylist(GtkButton *button, gpointer user_data)
         return;
     }
 
-    for(item = playlist_CurrentSize(p_intf) - 1; item >= 0 ;item-- )
+    for(item = playlist_CurrentSize(p_playlist) - 1; item >= 0 ;item-- )
     {
         msg_Err( p_playlist, "fix pda delete" );
     }
index 07be5fe..6f506ea 100644 (file)
@@ -22,7 +22,7 @@
  *****************************************************************************/
 
 #include "libvlc_internal.h"
-
+#include "libvlc.h"
 #include <vlc/libvlc.h>
 #include <vlc_input.h>
 #include <vlc_meta.h>
@@ -215,7 +215,7 @@ static void preparse_if_needed( libvlc_media_t *p_md )
     if (!p_md->b_preparsed)
     {
         playlist_PreparseEnqueue(
-                p_md->p_libvlc_instance->p_libvlc_int->p_playlist,
+                libvlc_priv (p_md->p_libvlc_instance->p_libvlc_int)->p_playlist,
                 p_md->p_input_item );
         p_md->b_preparsed = true;
     }
@@ -430,7 +430,7 @@ char * libvlc_media_get_meta( libvlc_media_t *p_md,
     if( e_meta == libvlc_meta_ArtworkURL && !psz_meta )
     {
         playlist_AskForArtEnqueue(
-                p_md->p_libvlc_instance->p_libvlc_int->p_playlist,
+                libvlc_priv(p_md->p_libvlc_instance->p_libvlc_int)->p_playlist,
                 p_md->p_input_item );
     }
 
index bc2dc4b..ae9217f 100644 (file)
@@ -30,7 +30,7 @@
 
 #include "../playlist/playlist_internal.h"
 
-#define PL p_instance->p_libvlc_int->p_playlist
+#define PL (libvlc_priv (p_instance->p_libvlc_int)->p_playlist)
 
 static inline int playlist_was_locked( libvlc_instance_t *p_instance )
 {
index f4a0e50..eb5bfb4 100644 (file)
@@ -553,7 +553,7 @@ static int Run( input_thread_t *p_input )
 
         /* We have finished */
         p_input->b_eof = true;
-        playlist_Signal( p_input->p_libvlc->p_playlist );
+        playlist_Signal( libvlc_priv (p_input->p_libvlc)->p_playlist );
     }
 
     /* Wait until we are asked to die */
@@ -2110,7 +2110,8 @@ static int UpdateFromAccess( input_thread_t *p_input )
         vlc_meta_t *p_meta = vlc_meta_New();
         access_Control( p_input->p->input.p_access,ACCESS_GET_META, p_meta );
         InputUpdateMeta( p_input, p_meta );
-        var_SetInteger( p_input->p_libvlc->p_playlist, "item-change", p_input->p->input.p_item->i_id );
+        var_SetInteger( libvlc_priv (p_input->p_libvlc)->p_playlist,
+                        "item-change", p_input->p->input.p_item->i_id );
         p_access->info.i_update &= ~INPUT_UPDATE_META;
     }
 
@@ -2153,8 +2154,8 @@ static void UpdateItemLength( input_thread_t *p_input, int64_t i_length )
     if( !p_input->b_preparsing )
     {
         pl_Yield( p_input );
-        var_SetInteger( p_input->p_libvlc->p_playlist, "item-change",
-                        p_input->p->input.p_item->i_id );
+        var_SetInteger( libvlc_priv (p_input->p_libvlc)->p_playlist,
+                        "item-change", p_input->p->input.p_item->i_id );
         pl_Release( p_input );
     }
 }
index 755f890..aa16cdd 100644 (file)
@@ -179,7 +179,7 @@ libvlc_int_t * libvlc_InternalCreate( void )
         return NULL;
 
     priv = libvlc_priv (p_libvlc);
-    p_libvlc->p_playlist = NULL;
+    priv->p_playlist = NULL;
     priv->p_interaction = NULL;
     priv->p_vlm = NULL;
     p_libvlc->psz_object_name = strdup( "libvlc" );
@@ -736,7 +736,7 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
 
     /* Initialize playlist and get commandline files */
     playlist_ThreadCreate( p_libvlc );
-    if( !p_libvlc->p_playlist )
+    if( !priv->p_playlist )
     {
         msg_Err( p_libvlc, "playlist initialization failed" );
         if( priv->p_memcpy_module != NULL )
@@ -746,7 +746,7 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
         module_EndBank( p_libvlc );
         return VLC_EGENERIC;
     }
-    p_playlist = p_libvlc->p_playlist;
+    p_playlist = priv->p_playlist;
 
     psz_modules = config_GetPsz( p_playlist, "services-discovery" );
     if( psz_modules && *psz_modules )
@@ -939,7 +939,7 @@ int libvlc_InternalCleanup( libvlc_int_t *p_libvlc )
 
     /* Free playlist */
     msg_Dbg( p_libvlc, "removing playlist" );
-    playlist_ThreadDestroy( p_libvlc->p_playlist );
+    playlist_ThreadDestroy( priv->p_playlist );
 
     /* Free video outputs */
     msg_Dbg( p_libvlc, "removing all video outputs" );
@@ -1138,7 +1138,7 @@ int libvlc_InternalAddIntf( libvlc_int_t *p_libvlc,
 
     /* Interface doesn't handle play on start so do it ourselves */
     if( !p_intf->b_play && b_play )
-        playlist_Play( p_libvlc->p_playlist );
+        playlist_Play( libvlc_priv(p_libvlc)->p_playlist );
 
     /* Try to run the interface */
     p_intf->b_play = b_play;
index 184035c..e8d3a4f 100644 (file)
@@ -296,11 +296,12 @@ int VLC_VariableType( int i_object, char const *psz_var, int *pi_type )
 
 #define LIBVLC_PLAYLIST_FUNC \
     libvlc_int_t *p_libvlc = vlc_current_object( i_object );\
-    if( !p_libvlc || !p_libvlc->p_playlist ) return VLC_ENOOBJ; \
-    vlc_object_yield( p_libvlc->p_playlist );
+    if( !p_libvlc ) return VLC_ENOOBJ; \
+    playlist_t *p_playlist = pl_Yield( p_libvlc ); \
+    if( !p_playlist ) return VLC_ENOOBJ
 
 #define LIBVLC_PLAYLIST_FUNC_END \
-    vlc_object_release( p_libvlc->p_playlist ); \
+    pl_Release( p_libvlc ); \
     if( i_object ) vlc_object_release( p_libvlc );
 
 /*****************************************************************************
@@ -315,7 +316,7 @@ int VLC_AddTarget( int i_object, char const *psz_target,
 {
     int i_err;
     LIBVLC_PLAYLIST_FUNC;
-    i_err = playlist_AddExt( p_libvlc->p_playlist, psz_target,
+    i_err = playlist_AddExt( p_playlist, psz_target,
                              NULL,  i_mode, i_pos, -1,
                              ppsz_options, i_options, true, false );
     LIBVLC_PLAYLIST_FUNC_END;
@@ -328,7 +329,7 @@ int VLC_AddTarget( int i_object, char const *psz_target,
 int VLC_Play( int i_object )
 {
     LIBVLC_PLAYLIST_FUNC;
-    playlist_Play( p_libvlc->p_playlist );
+    playlist_Play( p_playlist );
     LIBVLC_PLAYLIST_FUNC_END;
     return VLC_SUCCESS;
 }
@@ -339,7 +340,7 @@ int VLC_Play( int i_object )
 int VLC_Pause( int i_object )
 {
     LIBVLC_PLAYLIST_FUNC;
-    playlist_Pause( p_libvlc->p_playlist );
+    playlist_Pause( p_playlist );
     LIBVLC_PLAYLIST_FUNC_END;
     return VLC_SUCCESS;
 }
@@ -350,7 +351,7 @@ int VLC_Pause( int i_object )
 int VLC_Stop( int i_object )
 {
     LIBVLC_PLAYLIST_FUNC;
-    playlist_Stop( p_libvlc->p_playlist );
+    playlist_Stop( p_playlist );
     LIBVLC_PLAYLIST_FUNC_END;
     return VLC_SUCCESS;
 }
@@ -363,15 +364,15 @@ bool VLC_IsPlaying( int i_object )
     bool   b_playing;
 
     LIBVLC_PLAYLIST_FUNC;
-    if( p_libvlc->p_playlist->p_input )
+    if( p_playlist->p_input )
     {
         vlc_value_t  val;
-        var_Get( p_libvlc->p_playlist->p_input, "state", &val );
+        var_Get( p_playlist->p_input, "state", &val );
         b_playing = ( val.i_int == PLAYING_S );
     }
     else
     {
-        b_playing = playlist_IsPlaying( p_libvlc->p_playlist );
+        b_playing = playlist_IsPlaying( p_playlist );
     }
     LIBVLC_PLAYLIST_FUNC_END;
     return b_playing;
@@ -672,7 +673,7 @@ int VLC_PlaylistNumberOfItems( int i_object )
 {
     int i_size;
     LIBVLC_PLAYLIST_FUNC;
-    i_size = p_libvlc->p_playlist->items.i_size;
+    i_size = p_playlist->items.i_size;
     LIBVLC_PLAYLIST_FUNC_END;
     return i_size;
 }
@@ -685,7 +686,7 @@ int VLC_PlaylistNumberOfItems( int i_object )
 int VLC_PlaylistNext( int i_object )
 {
     LIBVLC_PLAYLIST_FUNC;
-    playlist_Next( p_libvlc->p_playlist );
+    playlist_Next( p_playlist );
     LIBVLC_PLAYLIST_FUNC_END;
     return VLC_SUCCESS;
 }
@@ -698,7 +699,7 @@ int VLC_PlaylistNext( int i_object )
 int VLC_PlaylistPrev( int i_object )
 {
     LIBVLC_PLAYLIST_FUNC;
-    playlist_Prev( p_libvlc->p_playlist );
+    playlist_Prev( p_playlist );
     LIBVLC_PLAYLIST_FUNC_END;
     return VLC_SUCCESS;
 }
@@ -709,7 +710,7 @@ int VLC_PlaylistPrev( int i_object )
 int VLC_PlaylistClear( int i_object )
 {
     LIBVLC_PLAYLIST_FUNC;
-    playlist_Clear( p_libvlc->p_playlist, true );
+    playlist_Clear( p_playlist, true );
     LIBVLC_PLAYLIST_FUNC_END;
     return VLC_SUCCESS;
 }
index ec8d7c8..6df516b 100644 (file)
@@ -232,7 +232,8 @@ typedef struct libvlc_priv_t
                                           /// (needs cleanup)
 
     module_t          *p_memcpy_module;  ///< Fast memcpy plugin used
-    vlm_t             *p_vlm;  ///< VLM if created from libvlc-common.c
+    playlist_t        *p_playlist; //< the playlist singleton
+    vlm_t             *p_vlm;  ///< the VLM singleton (or NULL)
     vlc_object_t      *p_interaction;    ///< interface interaction object
     httpd_t           *p_httpd; ///< HTTP daemon (src/network/httpd.c)
 } libvlc_priv_t;
index 1f0f4c7..eab246b 100644 (file)
@@ -314,9 +314,7 @@ LRESULT CALLBACK WMCOPYWNDPROC( HWND hwnd, UINT uMsg, WPARAM wParam,
         if( !p_this ) return 0;
 
         /* Add files to the playlist */
-        p_playlist = (playlist_t *)vlc_object_find( p_this,
-                                                    VLC_OBJECT_PLAYLIST,
-                                                    FIND_ANYWHERE );
+        p_playlist = pl_Yield( p_this );
         if( !p_playlist ) return 0;
 
         if( pwm_data->lpData )
index bbaa74b..b81f839 100644 (file)
@@ -43,7 +43,7 @@ static void PreparseEnqueueItemSub( playlist_t *, playlist_item_t * );
 
 playlist_t *__pl_Yield( vlc_object_t *p_this )
 {
-    playlist_t *pl = p_this->p_libvlc->p_playlist;
+    playlist_t *pl = libvlc_priv (p_this->p_libvlc)->p_playlist;
     assert( pl != NULL );
     vlc_object_yield( pl );
     return pl;
@@ -51,7 +51,7 @@ playlist_t *__pl_Yield( vlc_object_t *p_this )
 
 void __pl_Release( vlc_object_t *p_this )
 {
-    playlist_t *pl = p_this->p_libvlc->p_playlist;
+    playlist_t *pl = libvlc_priv (p_this->p_libvlc)->p_playlist;
     assert( pl != NULL );
     vlc_object_release( pl );
 }
index 5e0cecd..b601439 100644 (file)
@@ -74,7 +74,7 @@ playlist_t * playlist_Create( vlc_object_t *p_parent )
 
     TAB_INIT( p_playlist->i_sds, p_playlist->pp_sds );
 
-    p_parent->p_libvlc->p_playlist = p_playlist;
+    libvlc_priv(p_parent->p_libvlc)->p_playlist = p_playlist;
 
     VariablesInit( p_playlist );