]> git.sesse.net Git - vlc/blobdiff - src/input/control.c
* do not use a dynamic linker if no plugin support was detected/requested.
[vlc] / src / input / control.c
index 25f5052c307aaa397aa71a68a33514c545a21c68..776cfc94a3055605c538da7de41981238aa2bd80 100644 (file)
@@ -196,6 +196,47 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
             NotifyPlaylist( p_input );
         }
         return VLC_SUCCESS;
+        case INPUT_DEL_INFO:
+        {
+            char *psz_cat = (char *)va_arg( args, char * );
+            char *psz_name = (char *)va_arg( args, char * );
+
+            info_category_t *p_cat = NULL;
+            int i;
+
+            vlc_mutex_lock( &p_input->input.p_item->lock );
+            for( i = 0; i < p_input->input.p_item->i_categories; i++ )
+            {
+                if( !strcmp( p_input->input.p_item->pp_categories[i]->psz_name,
+                             psz_cat ) )
+                {
+                    p_cat = p_input->input.p_item->pp_categories[i];
+                    break;
+                }
+            }
+            if( p_cat == NULL )
+            {
+                vlc_mutex_unlock( &p_input->input.p_item->lock );
+                return VLC_EGENERIC;
+            }
+
+            for( i = 0; i < p_cat->i_infos; i++ )
+            {
+                if( !strcmp( p_cat->pp_infos[i]->psz_name, psz_name ) )
+                {
+                    REMOVE_ELEM( p_cat->pp_infos, p_cat->i_infos, i );
+                    break;
+                }
+            }
+            vlc_mutex_unlock( &p_input->input.p_item->lock );
+
+            if( i >= p_cat->i_infos )
+                return VLC_EGENERIC;
+
+            NotifyPlaylist( p_input );
+        }
+        return VLC_SUCCESS;
+
 
         case INPUT_GET_INFO:
         {
@@ -203,7 +244,6 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
             char *psz_name = (char *)va_arg( args, char * );
             char **ppsz_value = (char **)va_arg( args, char ** );
             int i_ret = VLC_EGENERIC;
-            int i;
             *ppsz_value = NULL;
 
             *ppsz_value = vlc_input_item_GetInfo( p_input->input.p_item,
@@ -384,12 +424,12 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
                 vlc_value_t pos;
                 int i_ret;
 
-                if( p_input->bookmark[i_bkmk]->i_time_offset )
+                if( p_input->bookmark[i_bkmk]->i_time_offset != -1 )
                 {
                     pos.i_time = p_input->bookmark[i_bkmk]->i_time_offset;
                     i_ret = var_Set( p_input, "time", pos );
                 }
-                else if( p_input->bookmark[i_bkmk]->i_byte_offset )
+                else if( p_input->bookmark[i_bkmk]->i_byte_offset != -1 )
                 {
                     // don't crash on bookmarks in live streams
                     if( stream_Size( p_input->input.p_stream ) == 0 )