]> git.sesse.net Git - vlc/commitdiff
playlist: remove request.i_status
authorRémi Denis-Courmont <remi@remlab.net>
Mon, 15 Dec 2014 16:29:50 +0000 (18:29 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Mon, 15 Dec 2014 17:10:50 +0000 (19:10 +0200)
src/playlist/control.c
src/playlist/item.c
src/playlist/playlist_internal.h
src/playlist/thread.c

index 06441778514ce914c2f35fc585dd30713720d02b..521c3b6e442b35097116621c57f59e2bb692e7e3 100644 (file)
@@ -60,9 +60,9 @@ static void playlist_vaControl( playlist_t *p_playlist, int i_query, va_list arg
     switch( i_query )
     {
     case PLAYLIST_STOP:
-        pl_priv(p_playlist)->request.i_status = PLAYLIST_STOPPED;
         pl_priv(p_playlist)->request.b_request = true;
         pl_priv(p_playlist)->request.p_item = NULL;
+        pl_priv(p_playlist)->request.p_node = NULL;
         break;
 
     // Node can be null, it will keep the same. Use with care ...
@@ -77,7 +77,6 @@ static void playlist_vaControl( playlist_t *p_playlist, int i_query, va_list arg
             p_node = get_current_status_node( p_playlist );
             assert( p_node );
         }
-        pl_priv(p_playlist)->request.i_status = PLAYLIST_RUNNING;
         pl_priv(p_playlist)->request.i_skip = 0;
         pl_priv(p_playlist)->request.b_request = true;
         pl_priv(p_playlist)->request.p_node = p_node;
@@ -96,7 +95,6 @@ static void playlist_vaControl( playlist_t *p_playlist, int i_query, va_list arg
         }
         else
         {
-            pl_priv(p_playlist)->request.i_status = PLAYLIST_RUNNING;
             pl_priv(p_playlist)->request.b_request = true;
             pl_priv(p_playlist)->request.p_node = get_current_status_node( p_playlist );
             pl_priv(p_playlist)->request.p_item = get_current_status_item( p_playlist );
@@ -128,9 +126,6 @@ static void playlist_vaControl( playlist_t *p_playlist, int i_query, va_list arg
         pl_priv(p_playlist)->request.p_node = get_current_status_node( p_playlist );
         pl_priv(p_playlist)->request.p_item = get_current_status_item( p_playlist );
         pl_priv(p_playlist)->request.i_skip = (int) va_arg( args, int );
-        /* if already running, keep running */
-        if( pl_priv(p_playlist)->status.i_status != PLAYLIST_STOPPED )
-            pl_priv(p_playlist)->request.i_status = pl_priv(p_playlist)->status.i_status;
         pl_priv(p_playlist)->request.b_request = true;
         break;
     }
index e51637f16f4964f192091bcf8c3f89746f16f446..a05b77645efbdd84ae495460d5c786d46de50ea2 100644 (file)
@@ -756,7 +756,6 @@ static void GoAndPreparse( playlist_t *p_playlist, int i_mode,
         sys->request.p_item = p_item;
         if( sys->p_input != NULL )
             input_Stop( sys->p_input, true );
-        sys->request.i_status = PLAYLIST_RUNNING;
         vlc_cond_signal( &sys->signal );
     }
     /* Preparse if no artist/album info, and hasn't been preparsed allready
index ee8f63231571761ccecceda892493754ad903b2b..558cdfe8d244b3e1452de359466278cf09098813 100644 (file)
@@ -68,7 +68,6 @@ typedef struct playlist_private_t
 
     struct {
         /* Request. Use this to give orders to the playlist main loop  */
-        playlist_status_t   i_status; /**< requested playlist status */
         playlist_item_t *   p_node;   /**< requested node to play from */
         playlist_item_t *   p_item;   /**< requested item to play in the node */
 
index 8e7b08297462eb6d9c590a0539cf04d7e0500d5f..357d46472fcf426f00af46907ee85749fb7f84a9 100644 (file)
@@ -523,8 +523,10 @@ static void *Thread ( void *data )
         if( p_sys->killed )
             break; /* THE END */
 
-        const int status = p_sys->request.b_request ?
-                           p_sys->request.i_status : p_sys->status.i_status;
+        int status = p_sys->status.i_status;
+        if( p_sys->request.b_request )
+            status = (p_sys->request.p_item || p_sys->request.p_node)
+                     ? PLAYLIST_RUNNING : PLAYLIST_STOPPED;
 
         /* Destroy any video display if the playlist is supposed to stop */
         if( status == PLAYLIST_STOPPED