ports/multimedia/vlc/files/patch-modules-gui-ncurses.c
Juergen Lock 1919fab6ad - Update to 2.0.8 .
- Add subtitle, video, and audio track scrolling to VLC's ncurses.c
  module. [1]
- Add GME knob. (audio/libgme dependency) [2]
- Fix build with clang+libc++. [3]

PR:		ports/181596 [1], ports/181909 [3]
Submitted by:	Cam Karnes <karnes.cameron@gmail.com> [1]
Submitted by:	pawel (on -multimedia) [2]
Submitted by:	"O. Hartmann" <ohartman@zedat.fu-berlin.de>, bapt via pb2 [3]
Obtained from:	vlc upstream git [1]
2013-09-09 18:05:40 +00:00

54 lines
1.8 KiB
C

--- modules/gui/ncurses.c.orig
+++ modules/gui/ncurses.c
@@ -880,6 +880,9 @@ static int DrawHelp(intf_thread_t *intf)
H(_(" s Stop"));
H(_(" <space> Pause/Play"));
H(_(" f Toggle Fullscreen"));
+ H(_(" c Cycle through audio tracks"));
+ H(_(" v Cycle through subtitles tracks"));
+ H(_(" b Cycle through video tracks"));
H(_(" n, p Next/Previous playlist item"));
H(_(" [, ] Next/Previous title"));
H(_(" <, > Next/Previous chapter"));
@@ -1543,6 +1546,30 @@ static void InputNavigate(input_thread_t* p_input, const char *var)
var_TriggerCallback(p_input, var);
}
+static void CycleESTrack(intf_sys_t *sys, const char *var)
+{
+ input_thread_t *input = sys->p_input;
+
+ if (!input)
+ return;
+
+ vlc_value_t val;
+ if (var_Change(input, var, VLC_VAR_GETLIST, &val, NULL) < 0)
+ return;
+
+ vlc_list_t *list = val.p_list;
+ int64_t current = var_GetInteger(input, var);
+
+ int i;
+ for (i = 0; i < list->i_count; i++)
+ if (list->p_values[i].i_int == current)
+ break;
+
+ if (++i >= list->i_count)
+ i = 0;
+ var_SetInteger(input, var, list->p_values[i].i_int);
+}
+
static void HandleCommonKey(intf_thread_t *intf, int key)
{
intf_sys_t *sys = intf->p_sys;
@@ -1611,6 +1638,10 @@ static void HandleCommonKey(intf_thread_t *intf, int key)
case 'z': playlist_VolumeDown(p_playlist, 1, NULL); break;
case 'm': playlist_MuteToggle(p_playlist); break;
+ case 'c': CycleESTrack(sys, "audio-es"); break;
+ case 'v': CycleESTrack(sys, "spu-es"); break;
+ case 'b': CycleESTrack(sys, "video-es"); break;
+
case 0x0c: /* ^l */
case KEY_CLEAR:
break;