]> git.sesse.net Git - vlc/commitdiff
input: define proper controls for menu navigation
authorRémi Denis-Courmont <remi@remlab.net>
Fri, 1 Feb 2013 15:54:34 +0000 (17:54 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Fri, 1 Feb 2013 15:54:34 +0000 (17:54 +0200)
include/vlc_demux.h
include/vlc_input.h
src/input/control.c
src/input/input.c
src/input/input_internal.h

index b00468dc75d2eedfafc50ac3046f16037c3419e4..c0cea070a3cccc4e7f61082bfa70d3ac30ae4323 100644 (file)
@@ -161,6 +161,13 @@ enum demux_query_e
     DEMUX_CAN_SEEK,            /* arg1= bool*    can fail (assume false)*/
 
     DEMUX_GET_SIGNAL,          /* arg1= double * arg2= double * can fail */
+
+    /* Navigation */
+    DEMUX_NAV_ACTIVATE,        /* res=can fail */
+    DEMUX_NAV_UP,              /* res=can fail */
+    DEMUX_NAV_DOWN,            /* res=can fail */
+    DEMUX_NAV_LEFT,            /* res=can fail */
+    DEMUX_NAV_RIGHT,           /* res=can fail */
 };
 
 VLC_API int demux_vaControlHelper( stream_t *, int64_t i_start, int64_t i_end, int64_t i_bitrate, int i_align, int i_query, va_list args );
index 44003041ad4f2418987f0f113cfec801c7278863..cbd6aab7f73bf5a31ce0cd083a46bb16147e0194 100644 (file)
@@ -470,6 +470,13 @@ enum input_query_e
     INPUT_GET_SPU_DELAY,        /* arg1 = int* res=can fail */
     INPUT_SET_SPU_DELAY,        /* arg1 = int  res=can fail */
 
+    /* Menu navigation */
+    INPUT_NAV_ACTIVATE,
+    INPUT_NAV_UP,
+    INPUT_NAV_DOWN,
+    INPUT_NAV_LEFT,
+    INPUT_NAV_RIGHT,
+
     /* Meta datas */
     INPUT_ADD_INFO,   /* arg1= char* arg2= char* arg3=...     res=can fail */
     INPUT_REPLACE_INFOS,/* arg1= info_category_t *            res=cannot fail */
index d50ea973eed0c897c035ac14f9df5dc3ab1c4f88..a2383734b553d1913f3d893cc4611be58c3c2878 100644 (file)
@@ -136,6 +136,15 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
             i_64 = (int64_t)va_arg( args, int64_t );
             return var_SetTime( p_input, "spu-delay", i_64 );
 
+        case INPUT_NAV_ACTIVATE:
+        case INPUT_NAV_UP:
+        case INPUT_NAV_DOWN:
+        case INPUT_NAV_LEFT:
+        case INPUT_NAV_RIGHT:
+            input_ControlPush( p_input, i_query - INPUT_NAV_ACTIVATE
+                               + INPUT_CONTROL_NAV_ACTIVATE, NULL );
+            return VLC_SUCCESS;
+
         case INPUT_ADD_INFO:
         {
             char *psz_cat = (char *)va_arg( args, char * );
index da3f900e9a4e7981d029576238286eee57945409..729b666d02f549ada8d43eeb3e56cc8b3f8ba9fc 100644 (file)
@@ -1581,6 +1581,11 @@ static bool ControlIsSeekRequest( int i_type )
     case INPUT_CONTROL_SET_SEEKPOINT_NEXT:
     case INPUT_CONTROL_SET_SEEKPOINT_PREV:
     case INPUT_CONTROL_SET_BOOKMARK:
+    case INPUT_CONTROL_NAV_ACTIVATE:
+    case INPUT_CONTROL_NAV_UP:
+    case INPUT_CONTROL_NAV_DOWN:
+    case INPUT_CONTROL_NAV_LEFT:
+    case INPUT_CONTROL_NAV_RIGHT:
         return true;
     default:
         return false;
@@ -2175,6 +2180,15 @@ static bool Control( input_thread_t *p_input,
             break;
         }
 
+        case INPUT_CONTROL_NAV_ACTIVATE:
+        case INPUT_CONTROL_NAV_UP:
+        case INPUT_CONTROL_NAV_DOWN:
+        case INPUT_CONTROL_NAV_LEFT:
+        case INPUT_CONTROL_NAV_RIGHT:
+            demux_Control( p_input->p->input.p_demux, i_type
+                           - INPUT_CONTROL_NAV_ACTIVATE + DEMUX_NAV_ACTIVATE );
+            break;
+
         default:
             msg_Err( p_input, "not yet implemented" );
             break;
index e65acdfb74ac8f99f146503c91c0304b8ede840f..b3ad9e7463481e92b929ed999f764289636f05ff 100644 (file)
@@ -195,6 +195,12 @@ enum input_control_e
 
     INPUT_CONTROL_SET_BOOKMARK,
 
+    INPUT_CONTROL_NAV_ACTIVATE, // NOTE: INPUT_CONTROL_NAV_* values must be
+    INPUT_CONTROL_NAV_UP,       // contiguous and in the same order as
+    INPUT_CONTROL_NAV_DOWN,     // INPUT_NAV_* and DEMUX_NAV_*.
+    INPUT_CONTROL_NAV_LEFT,
+    INPUT_CONTROL_NAV_RIGHT,
+
     INPUT_CONTROL_SET_ES,
     INPUT_CONTROL_RESTART_ES,