]> git.sesse.net Git - vlc/commitdiff
playlist: hide fetcher underneath the preparser and simplify
authorRémi Denis-Courmont <remi@remlab.net>
Tue, 31 Dec 2013 17:55:53 +0000 (19:55 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Tue, 31 Dec 2013 17:55:53 +0000 (19:55 +0200)
src/playlist/control.c
src/playlist/engine.c
src/playlist/playlist_internal.h
src/playlist/preparser.c
src/playlist/preparser.h

index 5df928345c84ce95e30b09765f607a5bda6c83b6..7d6791bc45a04947777465f668fc226158b7f738 100644 (file)
@@ -179,9 +179,8 @@ int playlist_AskForArtEnqueue( playlist_t *p_playlist, input_item_t *p_item )
 {
     playlist_private_t *p_sys = pl_priv(p_playlist);
 
-    if( unlikely(p_sys->p_fetcher == NULL) )
+    if( unlikely(p_sys->p_preparser == NULL) )
         return VLC_ENOMEM;
-    playlist_fetcher_Push( p_sys->p_fetcher, p_item );
+    playlist_preparser_fetcher_Push( p_sys->p_preparser, p_item );
     return VLC_SUCCESS;
 }
-
index 8207c797e615188c743c97ea6b3faac7eb0acfbd..9aeaf1b26bf1b328e72a0586ab3bb1f48d5e21cd 100644 (file)
@@ -233,13 +233,8 @@ static playlist_t *playlist_Create( vlc_object_t *p_parent )
     pl_priv(p_playlist)->b_auto_preparse =
         var_InheritBool( p_parent, "auto-preparse" );
 
-    /* Fetcher */
-    p->p_fetcher = playlist_fetcher_New( VLC_OBJECT(p_playlist) );
-    if( unlikely(p->p_fetcher == NULL) )
-        msg_Err( p_playlist, "cannot create fetcher" );
-   /* Preparser */
-   p->p_preparser = playlist_preparser_New( VLC_OBJECT(p_playlist),
-                                            p->p_fetcher );
+   /* Preparser (and meta retriever) */
+   p->p_preparser = playlist_preparser_New( VLC_OBJECT(p_playlist) );
    if( unlikely(p->p_preparser == NULL) )
        msg_Err( p_playlist, "cannot create preparser" );
 
@@ -341,8 +336,6 @@ void playlist_Destroy( playlist_t *p_playlist )
     playlist_Deactivate( p_playlist );
     if( p_sys->p_preparser )
         playlist_preparser_Delete( p_sys->p_preparser );
-    if( p_sys->p_fetcher )
-        playlist_fetcher_Delete( p_sys->p_fetcher );
 
     /* Release input resources */
     assert( p_sys->p_input == NULL );
index 9b6c000b31c6f41bcaa57e6dc49d4ebd88ca830f..936a51dde2c992f6c478949cd128a92126d24a3c 100644 (file)
@@ -38,7 +38,6 @@
 #include <assert.h>
 
 #include "art.h"
-#include "fetcher.h"
 #include "preparser.h"
 
 typedef struct vlc_sd_internal_t vlc_sd_internal_t;
@@ -47,7 +46,6 @@ typedef struct playlist_private_t
 {
     playlist_t           public_data;
     playlist_preparser_t *p_preparser;  /**< Preparser data */
-    playlist_fetcher_t   *p_fetcher;    /**< Meta and art fetcher data */
 
     playlist_item_array_t items_to_delete; /**< Array of items and nodes to
             delete... At the very end. This sucks. */
index 72e0a12ce5302c50317acd5a25988277ec7856ab..505cece94279a28ae87f33b7fbc87d477d378c1d 100644 (file)
@@ -56,15 +56,17 @@ static void *Thread( void * );
 /*****************************************************************************
  * Public functions
  *****************************************************************************/
-playlist_preparser_t *playlist_preparser_New( vlc_object_t *parent,
-                                              playlist_fetcher_t *p_fetcher )
+playlist_preparser_t *playlist_preparser_New( vlc_object_t *parent )
 {
     playlist_preparser_t *p_preparser = malloc( sizeof(*p_preparser) );
     if( !p_preparser )
         return NULL;
 
     p_preparser->object = parent;
-    p_preparser->p_fetcher = p_fetcher;
+    p_preparser->p_fetcher = playlist_fetcher_New( parent );
+    if( unlikely(p_preparser->p_fetcher == NULL) )
+        msg_Err( parent, "cannot create fetcher" );
+
     vlc_mutex_init( &p_preparser->lock );
     vlc_cond_init( &p_preparser->wait );
     p_preparser->b_live = false;
@@ -93,6 +95,13 @@ void playlist_preparser_Push( playlist_preparser_t *p_preparser, input_item_t *p
     vlc_mutex_unlock( &p_preparser->lock );
 }
 
+void playlist_preparser_fetcher_Push( playlist_preparser_t *p_preparser,
+                                      input_item_t *p_item )
+{
+    if( p_preparser->p_fetcher != NULL )
+        playlist_fetcher_Push( p_preparser->p_fetcher, p_item );
+}
+
 void playlist_preparser_Delete( playlist_preparser_t *p_preparser )
 {
     vlc_mutex_lock( &p_preparser->lock );
@@ -110,6 +119,9 @@ void playlist_preparser_Delete( playlist_preparser_t *p_preparser )
     /* Destroy the item preparser */
     vlc_cond_destroy( &p_preparser->wait );
     vlc_mutex_destroy( &p_preparser->lock );
+
+    if( p_preparser->p_fetcher != NULL )
+        playlist_fetcher_Delete( p_preparser->p_fetcher );
     free( p_preparser );
 }
 
index 0fecead5341713088bb337f717468c900ac45b7a..1d298c7dc8b2b6a8807f28e8f0b33049e31a4f59 100644 (file)
@@ -37,8 +37,7 @@ typedef struct playlist_preparser_t playlist_preparser_t;
 /**
  * This function creates the preparser object and thread.
  */
-playlist_preparser_t *playlist_preparser_New( vlc_object_t *,
-                                              playlist_fetcher_t * );
+playlist_preparser_t *playlist_preparser_New( vlc_object_t * );
 
 /**
  * This function enqueues the provided item to be preparsed.
@@ -48,6 +47,8 @@ playlist_preparser_t *playlist_preparser_New( vlc_object_t *,
  */
 void playlist_preparser_Push( playlist_preparser_t *, input_item_t * );
 
+void playlist_preparser_fetcher_Push( playlist_preparser_t *, input_item_t * );
+
 /**
  * This function destroys the preparser object and thread.
  *