]> git.sesse.net Git - vlc/blobdiff - src/input/control.c
QT4 wineventfilter for Win32, allows WM_APPCOMMAND stuff
[vlc] / src / input / control.c
index afe51977ecbe28d523647281882ef894133a964f..ed3d12ec72cf440aa79c03cc824f210f2ac0701f 100644 (file)
@@ -31,7 +31,6 @@
 #include <stdlib.h>
 
 #include "input_internal.h"
-#include "vlc_playlist.h"
 
 
 static void UpdateBookmarksOption( input_thread_t * );
@@ -64,6 +63,7 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
     int *pi_bkmk;
 
     int i_int, *pi_int;
+    bool b_bool, *pb_bool;
     double f, *pf;
     int64_t i_64, *pi_64;
 
@@ -133,7 +133,7 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
 
         case INPUT_ADD_INFO:
         {
-            /* FIXME : Impossible to use input_ItemAddInfo because of
+            /* FIXME : Impossible to use input_item_AddInfo because of
              * the ... problem ? */
             char *psz_cat = (char *)va_arg( args, char * );
             char *psz_name = (char *)va_arg( args, char * );
@@ -287,7 +287,7 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
             int i_ret = VLC_EGENERIC;
             *ppsz_value = NULL;
 
-            *ppsz_value = input_ItemGetInfo( p_input->p->input.p_item,
+            *ppsz_value = input_item_GetInfo( p_input->p->input.p_item,
                                                   psz_cat, psz_name );
             return i_ret;
         }
@@ -516,7 +516,7 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
             if( asprintf( &str, "%s=%s", psz_option, psz_value ) == -1 )
                 return VLC_ENOMEM;
 
-            i = input_ItemAddOpt( p_input->p->input.p_item, str,
+            i = input_item_AddOpt( p_input->p->input.p_item, str,
                                   VLC_INPUT_OPTION_UNIQUE );
             free( str );
             return i;
@@ -599,6 +599,20 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
             return VLC_EGENERIC;
         }
 
+        case INPUT_SET_RECORD_STATE:
+            b_bool = (bool)va_arg( args, int );
+            var_SetBool( p_input, "record", b_bool );
+            return VLC_SUCCESS;
+
+        case INPUT_GET_RECORD_STATE:
+            pb_bool = (bool*)va_arg( args, bool* );
+            *pb_bool = var_GetBool( p_input, "record" );
+            return VLC_SUCCESS;
+
+        case INPUT_RESTART_ES:
+            val.i_int = (int)va_arg( args, int );
+            input_ControlPush( p_input, INPUT_CONTROL_RESTART_ES, &val );
+            return VLC_SUCCESS;
 
         default:
             msg_Err( p_input, "unknown query in input_vaControl" );
@@ -612,30 +626,33 @@ static void UpdateBookmarksOption( input_thread_t *p_input )
     char *psz_value = NULL, *psz_next = NULL;
 
     vlc_mutex_lock( &p_input->p->input.p_item->lock );
-    for( i = 0; i < p_input->p->i_bookmark; i++ )
+    if( p_input->p->i_bookmark > 0 )
     {
-        i_len += snprintf( NULL, 0, "{name=%s,bytes=%"PRId64",time=%"PRId64"}",
-                           p_input->p->bookmark[i]->psz_name,
-                           p_input->p->bookmark[i]->i_byte_offset,
-                           p_input->p->bookmark[i]->i_time_offset/1000000 );
-    }
-    for( i = 0; i < p_input->p->i_bookmark; i++ )
-    {
-        if( !i ) psz_value = psz_next = malloc( i_len + p_input->p->i_bookmark );
-
-        sprintf( psz_next, "{name=%s,bytes=%"PRId64",time=%"PRId64"}",
-                 p_input->p->bookmark[i]->psz_name,
-                 p_input->p->bookmark[i]->i_byte_offset,
-                 p_input->p->bookmark[i]->i_time_offset/1000000 );
+        for( i = 0; i < p_input->p->i_bookmark; i++ )
+        {
+            i_len += snprintf( NULL, 0, "{name=%s,bytes=%"PRId64",time=%"PRId64"}",
+                               p_input->p->bookmark[i]->psz_name,
+                               p_input->p->bookmark[i]->i_byte_offset,
+                               p_input->p->bookmark[i]->i_time_offset/1000000 );
+        }
+        psz_value = psz_next = malloc( i_len + p_input->p->i_bookmark );
 
-        psz_next += strlen( psz_next );
-        if( i < p_input->p->i_bookmark - 1)
+        for( i = 0; i < p_input->p->i_bookmark; i++ )
         {
-            *psz_next = ','; psz_next++;
+            sprintf( psz_next, "{name=%s,bytes=%"PRId64",time=%"PRId64"}",
+                     p_input->p->bookmark[i]->psz_name,
+                     p_input->p->bookmark[i]->i_byte_offset,
+                     p_input->p->bookmark[i]->i_time_offset/1000000 );
+
+            psz_next += strlen( psz_next );
+            if( i < p_input->p->i_bookmark - 1)
+                *psz_next = ','; psz_next++;
         }
     }
     vlc_mutex_unlock( &p_input->p->input.p_item->lock );
 
     input_Control( p_input, INPUT_ADD_OPTION, "bookmarks",
                    psz_value ? psz_value : "" );
+    free( psz_value );
 }
+