summaryrefslogtreecommitdiff
path: root/plugins/tvonscreen/patches/tvonscreen-1.0-fixes.diff
blob: c6889eb3a2f770c948736fe7944c82c359277e41 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
--- magazine.c.orig	Sun Aug 27 12:40:30 2006
+++ magazine.c	Sun Sep 10 00:45:27 2006
@@ -458,6 +458,9 @@
 }
 const cEvent *magazine::getNext(const cSchedule *s,const cEvent *e)
 {
+	if (e == NULL)
+		return NULL;
+		
 	const cEvent *pe = NULL;
 	time_t ref = e->StartTime();
 
@@ -480,6 +483,9 @@
 }
 const cEvent *magazine::getPrev(const cSchedule *s,const cEvent *e)
 {
+        if (e == NULL)
+                return NULL;
+
 	const cEvent *pe = NULL;
 	time_t ref = e->StartTime();
 	time_t delta = INT_MAX;
@@ -1077,9 +1083,9 @@
 	{
 		state = cOsdObject::ProcessKey(Key);
 	
-		if (state == osUnknown)
+		if (state == osUnknown && schedArrayNum>currentFirst)
 		{
-			if (curmode==SHOW && schedArrayNum>currentFirst)
+			if (curmode==SHOW)
 			{
 				switch (Key & ~k_Repeat)
 				{
@@ -1111,6 +1117,8 @@
 						currentFirst++;
 						if (currentFirst>schedArrayNum-3)
 							currentFirst=schedArrayNum-3;
+						if (currentFirst<0)
+							currentFirst=0;
 						output();
 						break;
 					case kUp:
@@ -1145,6 +1153,8 @@
 						currentFirst+=3;
 						if (currentFirst>schedArrayNum-3)
 							currentFirst=schedArrayNum-3;
+						if (currentFirst<0)
+							currentFirst=0;
 						output();
 						break;
 					case k8: // zum aktuellen Sender
@@ -1206,14 +1216,17 @@
 				{
 					case kOk:
 						{
-							delete osd;
-							osd=NULL;
 							cEvent **ev=ev4ch(EDIT_curChannel);
-							me=new tvOcMenuEvent(ev[EDIT_curEVI]);
-							me->Display();
-							curmode=SHOW;
-							EDIT_curEvent=0;
-							return osContinue;
+                                                        if (ev[EDIT_curEVI] != NULL)
+                                                        {
+                                                                delete osd;
+                                                                osd=NULL;
+                                                                me=new tvOcMenuEvent(ev[EDIT_curEVI]);
+                                                                me->Display();
+                                                                curmode=SHOW;
+                                                                EDIT_curEvent=0;
+                                                                return osContinue;
+                                                        }						
 						}
 						break;
             		case kBack:
@@ -1238,11 +1251,15 @@
 							EDIT_curChannel++;
 						if (EDIT_curChannel>schedArrayNum-1)
 							EDIT_curChannel=schedArrayNum-1;
+						if (EDIT_curChannel<0)
+							EDIT_curChannel=0;
 						if (EDIT_curChannel>currentFirst+2)
 						{
 							currentFirst++;
 							if (currentFirst>schedArrayNum-3)
 								currentFirst=schedArrayNum-3;
+							if (currentFirst<0)
+								currentFirst=0;
 							EDIT_curChannel=currentFirst+2;
 						}
 						outputLR();
@@ -1343,17 +1360,20 @@
 						break;			*/
 				case kRecord:
 					{
-						delete osd;
-						osd=NULL;
 						cEvent **ev=ev4ch(EDIT_curChannel);
-						cTimer *timer = new cTimer(ev[EDIT_curEVI]);
-						cTimer *t = Timers.GetTimer(timer);
-						if (t)
+                                                if (ev[EDIT_curEVI] != NULL)
 						{
-							delete timer;
-							timer = t;
+                                                        delete osd;
+                                                        osd=NULL;
+                                                        cTimer *timer = new cTimer(ev[EDIT_curEVI]);
+                                                        cTimer *t = Timers.GetTimer(timer);
+                                                        if (t)
+                                                        {
+                                                                delete timer;
+                                                                timer = t;
+                                                        }
+                                                        met=new cMenuEditTimer(timer, !t);
 						}
-						met=new cMenuEditTimer(timer, !t);
 					}
 					break;
 					default: