changeset 16469:8c1c8d10c163

cycle through tv channels (patch by Andrew Calkin < calkina at geexbox.org >)
author aurel
date Mon, 12 Sep 2005 22:48:14 +0000
parents 0c22fbbbc2c7
children fbaf51e1c3b2
files libmpdemux/tv.c
diffstat 1 files changed, 9 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/libmpdemux/tv.c	Mon Sep 12 21:08:04 2005 +0000
+++ b/libmpdemux/tv.c	Mon Sep 12 22:48:14 2005 +0000
@@ -738,22 +738,25 @@
 int tv_step_channel(tvi_handle_t *tvh, int direction) {
 	if (tv_channel_list) {
 		if (direction == TV_CHANNEL_HIGHER) {
-			if (tv_channel_current->next) {
-				tv_channel_last = tv_channel_current;
+			tv_channel_last = tv_channel_current;
+			if (tv_channel_current->next)
 				tv_channel_current = tv_channel_current->next;
+			else
+				tv_channel_current = tv_channel_list;
 				tv_set_freq(tvh, (unsigned long)(((float)tv_channel_current->freq/1000)*16));
 				mp_msg(MSGT_TV, MSGL_INFO, "Selected channel: %s - %s (freq: %.3f)\n",
 			tv_channel_current->number, tv_channel_current->name, (float)tv_channel_current->freq/1000);
-			}
 		}
 		if (direction == TV_CHANNEL_LOWER) {
-			if (tv_channel_current->prev) {
-				tv_channel_last = tv_channel_current;
+			tv_channel_last = tv_channel_current;
+			if (tv_channel_current->prev)
 				tv_channel_current = tv_channel_current->prev;
+			else
+				while (tv_channel_current->next)
+					tv_channel_current = tv_channel_current->next;
 				tv_set_freq(tvh, (unsigned long)(((float)tv_channel_current->freq/1000)*16));
 				mp_msg(MSGT_TV, MSGL_INFO, "Selected channel: %s - %s (freq: %.3f)\n",
 			tv_channel_current->number, tv_channel_current->name, (float)tv_channel_current->freq/1000);
-			}
 		}
 	} else tv_step_channel_real(tvh, direction);
 	return(1);