summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/plugins/mpegplayer/mpeg_misc.h20
-rw-r--r--apps/plugins/mpegplayer/mpeg_parser.c22
-rw-r--r--apps/plugins/mpegplayer/mpeg_settings.c203
-rw-r--r--apps/plugins/mpegplayer/mpegplayer.c31
4 files changed, 115 insertions, 161 deletions
diff --git a/apps/plugins/mpegplayer/mpeg_misc.h b/apps/plugins/mpegplayer/mpeg_misc.h
index aeaba56d44..7bac7eb255 100644
--- a/apps/plugins/mpegplayer/mpeg_misc.h
+++ b/apps/plugins/mpegplayer/mpeg_misc.h
@@ -31,16 +31,16 @@
31/* Generic states for when things are too simple to care about naming them */ 31/* Generic states for when things are too simple to care about naming them */
32enum state_enum 32enum state_enum
33{ 33{
34 state0 = 0, 34 STATE0 = 0,
35 state1, 35 STATE1,
36 state2, 36 STATE2,
37 state3, 37 STATE3,
38 state4, 38 STATE4,
39 state5, 39 STATE5,
40 state6, 40 STATE6,
41 state7, 41 STATE7,
42 state8, 42 STATE8,
43 state9, 43 STATE9,
44}; 44};
45 45
46/* Macros for comparing memory bytes to a series of constant bytes in an 46/* Macros for comparing memory bytes to a series of constant bytes in an
diff --git a/apps/plugins/mpegplayer/mpeg_parser.c b/apps/plugins/mpegplayer/mpeg_parser.c
index 30793e0350..e14c51337f 100644
--- a/apps/plugins/mpegplayer/mpeg_parser.c
+++ b/apps/plugins/mpegplayer/mpeg_parser.c
@@ -354,7 +354,7 @@ static off_t mpeg_parser_seek_PTS(uint32_t time, unsigned id)
354 uint32_t time_right = str_parser.end_pts; 354 uint32_t time_right = str_parser.end_pts;
355 uint32_t pts = 0; 355 uint32_t pts = 0;
356 uint32_t prevpts = 0; 356 uint32_t prevpts = 0;
357 enum state_enum state = state0; 357 enum state_enum state = STATE0;
358 struct stream_scan sk; 358 struct stream_scan sk;
359 359
360 /* Initial estimate taken from average bitrate - later interpolations are 360 /* Initial estimate taken from average bitrate - later interpolations are
@@ -372,7 +372,7 @@ static off_t mpeg_parser_seek_PTS(uint32_t time, unsigned id)
372 372
373 sk.dir = SSCAN_REVERSE; 373 sk.dir = SSCAN_REVERSE;
374 374
375 while (state < state9) 375 while (state < STATE9)
376 { 376 {
377 uint32_t currpts; 377 uint32_t currpts;
378 sk.pos = pos_new; 378 sk.pos = pos_new;
@@ -422,7 +422,7 @@ static off_t mpeg_parser_seek_PTS(uint32_t time, unsigned id)
422 pos_new = pos_right; 422 pos_new = pos_right;
423 } 423 }
424 424
425 state = state2; /* Last scan was early */ 425 state = STATE2; /* Last scan was early */
426 sk.dir = SSCAN_REVERSE; 426 sk.dir = SSCAN_REVERSE;
427 427
428 DEBUGF(">> tl:%u t:%u ct:%u tr:%u\n pl:%ld pn:%ld pr:%ld\n", 428 DEBUGF(">> tl:%u t:%u ct:%u tr:%u\n pl:%ld pn:%ld pr:%ld\n",
@@ -450,7 +450,7 @@ static off_t mpeg_parser_seek_PTS(uint32_t time, unsigned id)
450 450
451 pos_new += pos_left - pos_adj; 451 pos_new += pos_left - pos_adj;
452 452
453 state = state3; /* Last scan was late */ 453 state = STATE3; /* Last scan was late */
454 sk.dir = SSCAN_REVERSE; 454 sk.dir = SSCAN_REVERSE;
455 455
456 DEBUGF("<< tl:%u t:%u ct:%u tr:%u\n pl:%ld pn:%ld pr:%ld\n", 456 DEBUGF("<< tl:%u t:%u ct:%u tr:%u\n pl:%ld pn:%ld pr:%ld\n",
@@ -465,7 +465,7 @@ static off_t mpeg_parser_seek_PTS(uint32_t time, unsigned id)
465 (unsigned)time_right, pos_left, pos_new, pos_right); 465 (unsigned)time_right, pos_left, pos_new, pos_right);
466 pts = currpts; 466 pts = currpts;
467 pos = sk.pos; 467 pos = sk.pos;
468 state = state9; 468 state = STATE9;
469 } 469 }
470 } 470 }
471 else 471 else
@@ -474,17 +474,17 @@ static off_t mpeg_parser_seek_PTS(uint32_t time, unsigned id)
474 474
475 switch (state) 475 switch (state)
476 { 476 {
477 case state1: 477 case STATE1:
478 /* We already tried the bruteforce scan and failed again - no 478 /* We already tried the bruteforce scan and failed again - no
479 * more stamps could possibly exist in the interval */ 479 * more stamps could possibly exist in the interval */
480 DEBUGF("!! no timestamp 2x\n"); 480 DEBUGF("!! no timestamp 2x\n");
481 break; 481 break;
482 case state0: 482 case STATE0:
483 /* Hardly likely except at very beginning - just do L->R scan 483 /* Hardly likely except at very beginning - just do L->R scan
484 * to find something */ 484 * to find something */
485 DEBUGF("!! no timestamp on first probe: %ld\n", sk.pos); 485 DEBUGF("!! no timestamp on first probe: %ld\n", sk.pos);
486 case state2: 486 case STATE2:
487 case state3: 487 case STATE3:
488 /* Could just be missing timestamps because the interval is 488 /* Could just be missing timestamps because the interval is
489 * narrowing down. A large block of data from another stream 489 * narrowing down. A large block of data from another stream
490 * may also be in the midst of our chosen points which could 490 * may also be in the midst of our chosen points which could
@@ -495,7 +495,7 @@ static off_t mpeg_parser_seek_PTS(uint32_t time, unsigned id)
495 DEBUGF("?? tl:%u t:%u ct:%u tr:%u\n pl:%ld pn:%ld pr:%ld\n", 495 DEBUGF("?? tl:%u t:%u ct:%u tr:%u\n pl:%ld pn:%ld pr:%ld\n",
496 (unsigned)time_left, (unsigned)time, (unsigned)currpts, 496 (unsigned)time_left, (unsigned)time, (unsigned)currpts,
497 (unsigned)time_right, pos_left, pos_new, pos_right); 497 (unsigned)time_right, pos_left, pos_new, pos_right);
498 state = state1; 498 state = STATE1;
499 break; 499 break;
500 default: 500 default:
501 DEBUGF("?? Invalid state: %d\n", state); 501 DEBUGF("?? Invalid state: %d\n", state);
@@ -506,7 +506,7 @@ static off_t mpeg_parser_seek_PTS(uint32_t time, unsigned id)
506 if (currpts == prevpts) 506 if (currpts == prevpts)
507 { 507 {
508 DEBUGF("!! currpts == prevpts (stop)\n"); 508 DEBUGF("!! currpts == prevpts (stop)\n");
509 state = state9; 509 state = STATE9;
510 } 510 }
511 511
512 prevpts = currpts; 512 prevpts = currpts;
diff --git a/apps/plugins/mpegplayer/mpeg_settings.c b/apps/plugins/mpegplayer/mpeg_settings.c
index 1ad1503d3f..9bf0c37a8d 100644
--- a/apps/plugins/mpegplayer/mpeg_settings.c
+++ b/apps/plugins/mpegplayer/mpeg_settings.c
@@ -13,16 +13,16 @@ struct mpeg_settings settings;
13#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ 13#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
14 (CONFIG_KEYPAD == IRIVER_H300_PAD) 14 (CONFIG_KEYPAD == IRIVER_H300_PAD)
15#define MPEG_START_TIME_SELECT BUTTON_ON 15#define MPEG_START_TIME_SELECT BUTTON_ON
16#define MPEG_START_TIME_RIGHT BUTTON_RIGHT
17#define MPEG_START_TIME_LEFT BUTTON_LEFT 16#define MPEG_START_TIME_LEFT BUTTON_LEFT
17#define MPEG_START_TIME_RIGHT BUTTON_RIGHT
18#define MPEG_START_TIME_UP BUTTON_UP 18#define MPEG_START_TIME_UP BUTTON_UP
19#define MPEG_START_TIME_DOWN BUTTON_DOWN 19#define MPEG_START_TIME_DOWN BUTTON_DOWN
20#define MPEG_START_TIME_EXIT BUTTON_OFF 20#define MPEG_START_TIME_EXIT BUTTON_OFF
21 21
22#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) 22#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD)
23#define MPEG_START_TIME_SELECT BUTTON_PLAY 23#define MPEG_START_TIME_SELECT BUTTON_PLAY
24#define MPEG_START_TIME_RIGHT BUTTON_RIGHT
25#define MPEG_START_TIME_LEFT BUTTON_LEFT 24#define MPEG_START_TIME_LEFT BUTTON_LEFT
25#define MPEG_START_TIME_RIGHT BUTTON_RIGHT
26#define MPEG_START_TIME_UP BUTTON_UP 26#define MPEG_START_TIME_UP BUTTON_UP
27#define MPEG_START_TIME_DOWN BUTTON_DOWN 27#define MPEG_START_TIME_DOWN BUTTON_DOWN
28#define MPEG_START_TIME_EXIT BUTTON_POWER 28#define MPEG_START_TIME_EXIT BUTTON_POWER
@@ -31,8 +31,8 @@ struct mpeg_settings settings;
31 (CONFIG_KEYPAD == IPOD_3G_PAD) || \ 31 (CONFIG_KEYPAD == IPOD_3G_PAD) || \
32 (CONFIG_KEYPAD == IPOD_1G2G_PAD) 32 (CONFIG_KEYPAD == IPOD_1G2G_PAD)
33#define MPEG_START_TIME_SELECT BUTTON_SELECT 33#define MPEG_START_TIME_SELECT BUTTON_SELECT
34#define MPEG_START_TIME_RIGHT BUTTON_RIGHT
35#define MPEG_START_TIME_LEFT BUTTON_LEFT 34#define MPEG_START_TIME_LEFT BUTTON_LEFT
35#define MPEG_START_TIME_RIGHT BUTTON_RIGHT
36#define MPEG_START_TIME_UP BUTTON_SCROLL_FWD 36#define MPEG_START_TIME_UP BUTTON_SCROLL_FWD
37#define MPEG_START_TIME_DOWN BUTTON_SCROLL_BACK 37#define MPEG_START_TIME_DOWN BUTTON_SCROLL_BACK
38#define MPEG_START_TIME_EXIT BUTTON_MENU 38#define MPEG_START_TIME_EXIT BUTTON_MENU
@@ -43,16 +43,16 @@ struct mpeg_settings settings;
43#define MPEG_START_TIME_RIGHT BUTTON_RIGHT 43#define MPEG_START_TIME_RIGHT BUTTON_RIGHT
44#define MPEG_START_TIME_UP BUTTON_UP 44#define MPEG_START_TIME_UP BUTTON_UP
45#define MPEG_START_TIME_DOWN BUTTON_DOWN 45#define MPEG_START_TIME_DOWN BUTTON_DOWN
46#define MPEG_START_TIME_SCROLL_DOWN BUTTON_VOL_DOWN 46#define MPEG_START_TIME_LEFT2 BUTTON_VOL_UP
47#define MPEG_START_TIME_SCROLL_UP BUTTON_VOL_UP 47#define MPEG_START_TIME_RIGHT2 BUTTON_VOL_DOWN
48#define MPEG_START_TIME_EXIT BUTTON_POWER 48#define MPEG_START_TIME_EXIT BUTTON_POWER
49 49
50#define MPEG_START_TIME_RC_SELECT (BUTTON_RC_PLAY | BUTTON_REL) 50#define MPEG_START_TIME_RC_SELECT (BUTTON_RC_PLAY | BUTTON_REL)
51#define MPEG_START_TIME_RC_LEFT BUTTON_RC_REW 51#define MPEG_START_TIME_RC_LEFT BUTTON_RC_REW
52#define MPEG_START_TIME_RC_RIGHT BUTTON_RC_FF 52#define MPEG_START_TIME_RC_RIGHT BUTTON_RC_FF
53#define MPEG_START_TIME_RC_UP BUTTON_RC_VOL_UP 53#define MPEG_START_TIME_RC_UP BUTTON_RC_VOL_UP
54#define MPEG_START_TIME_RC_DOWN BUTTON_RC_VOL_DOWN 54#define MPEG_START_TIME_RC_DOWN BUTTON_RC_VOL_DOWN
55#define MPEG_START_TIME_RC_EXIT (BUTTON_RC_PLAY | BUTTON_REPEAT) 55#define MPEG_START_TIME_RC_EXIT (BUTTON_RC_PLAY | BUTTON_REPEAT)
56 56
57#elif CONFIG_KEYPAD == GIGABEAT_S_PAD 57#elif CONFIG_KEYPAD == GIGABEAT_S_PAD
58#define MPEG_START_TIME_SELECT BUTTON_SELECT 58#define MPEG_START_TIME_SELECT BUTTON_SELECT
@@ -60,16 +60,16 @@ struct mpeg_settings settings;
60#define MPEG_START_TIME_RIGHT BUTTON_RIGHT 60#define MPEG_START_TIME_RIGHT BUTTON_RIGHT
61#define MPEG_START_TIME_UP BUTTON_UP 61#define MPEG_START_TIME_UP BUTTON_UP
62#define MPEG_START_TIME_DOWN BUTTON_DOWN 62#define MPEG_START_TIME_DOWN BUTTON_DOWN
63#define MPEG_START_TIME_SCROLL_DOWN BUTTON_VOL_DOWN 63#define MPEG_START_TIME_LEFT2 BUTTON_VOL_UP
64#define MPEG_START_TIME_SCROLL_UP BUTTON_VOL_UP 64#define MPEG_START_TIME_RIGHT2 BUTTON_VOL_DOWN
65#define MPEG_START_TIME_EXIT BUTTON_POWER 65#define MPEG_START_TIME_EXIT BUTTON_POWER
66 66
67#define MPEG_START_TIME_RC_SELECT (BUTTON_RC_PLAY | BUTTON_REL) 67#define MPEG_START_TIME_RC_SELECT (BUTTON_RC_PLAY | BUTTON_REL)
68#define MPEG_START_TIME_RC_LEFT BUTTON_RC_REW 68#define MPEG_START_TIME_RC_LEFT BUTTON_RC_REW
69#define MPEG_START_TIME_RC_RIGHT BUTTON_RC_FF 69#define MPEG_START_TIME_RC_RIGHT BUTTON_RC_FF
70#define MPEG_START_TIME_RC_UP BUTTON_RC_VOL_UP 70#define MPEG_START_TIME_RC_UP BUTTON_RC_VOL_UP
71#define MPEG_START_TIME_RC_DOWN BUTTON_RC_VOL_DOWN 71#define MPEG_START_TIME_RC_DOWN BUTTON_RC_VOL_DOWN
72#define MPEG_START_TIME_RC_EXIT (BUTTON_RC_PLAY | BUTTON_REPEAT) 72#define MPEG_START_TIME_RC_EXIT (BUTTON_RC_PLAY | BUTTON_REPEAT)
73 73
74#elif CONFIG_KEYPAD == IRIVER_H10_PAD 74#elif CONFIG_KEYPAD == IRIVER_H10_PAD
75#define MPEG_START_TIME_SELECT BUTTON_PLAY 75#define MPEG_START_TIME_SELECT BUTTON_PLAY
@@ -81,44 +81,44 @@ struct mpeg_settings settings;
81 81
82#elif (CONFIG_KEYPAD == SANSA_E200_PAD) 82#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
83#define MPEG_START_TIME_SELECT BUTTON_SELECT 83#define MPEG_START_TIME_SELECT BUTTON_SELECT
84#define MPEG_START_TIME_SCROLL_UP BUTTON_SCROLL_BACK
85#define MPEG_START_TIME_SCROLL_DOWN BUTTON_SCROLL_FWD
86#define MPEG_START_TIME_LEFT BUTTON_LEFT 84#define MPEG_START_TIME_LEFT BUTTON_LEFT
87#define MPEG_START_TIME_RIGHT BUTTON_RIGHT 85#define MPEG_START_TIME_RIGHT BUTTON_RIGHT
88#define MPEG_START_TIME_UP BUTTON_UP 86#define MPEG_START_TIME_UP BUTTON_UP
89#define MPEG_START_TIME_DOWN BUTTON_DOWN 87#define MPEG_START_TIME_DOWN BUTTON_DOWN
88#define MPEG_START_TIME_LEFT2 BUTTON_SCROLL_BACK
89#define MPEG_START_TIME_RIGHT2 BUTTON_SCROLL_FWD
90#define MPEG_START_TIME_EXIT BUTTON_POWER 90#define MPEG_START_TIME_EXIT BUTTON_POWER
91 91
92#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD) 92#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
93#define MPEG_START_TIME_SELECT BUTTON_SELECT 93#define MPEG_START_TIME_SELECT BUTTON_SELECT
94#define MPEG_START_TIME_SCROLL_UP BUTTON_SCROLL_BACK
95#define MPEG_START_TIME_SCROLL_DOWN BUTTON_SCROLL_FWD
96#define MPEG_START_TIME_LEFT BUTTON_LEFT 94#define MPEG_START_TIME_LEFT BUTTON_LEFT
97#define MPEG_START_TIME_RIGHT BUTTON_RIGHT 95#define MPEG_START_TIME_RIGHT BUTTON_RIGHT
98#define MPEG_START_TIME_UP BUTTON_UP 96#define MPEG_START_TIME_UP BUTTON_UP
99#define MPEG_START_TIME_DOWN BUTTON_DOWN 97#define MPEG_START_TIME_DOWN BUTTON_DOWN
98#define MPEG_START_TIME_LEFT2 BUTTON_SCROLL_BACK
99#define MPEG_START_TIME_RIGHT2 BUTTON_SCROLL_FWD
100#define MPEG_START_TIME_EXIT (BUTTON_HOME|BUTTON_REPEAT) 100#define MPEG_START_TIME_EXIT (BUTTON_HOME|BUTTON_REPEAT)
101 101
102#elif (CONFIG_KEYPAD == SANSA_C200_PAD) || \ 102#elif (CONFIG_KEYPAD == SANSA_C200_PAD) || \
103(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \ 103(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
104(CONFIG_KEYPAD == SANSA_M200_PAD) 104(CONFIG_KEYPAD == SANSA_M200_PAD)
105#define MPEG_START_TIME_SELECT BUTTON_SELECT 105#define MPEG_START_TIME_SELECT BUTTON_SELECT
106#define MPEG_START_TIME_SCROLL_UP BUTTON_VOL_UP
107#define MPEG_START_TIME_SCROLL_DOWN BUTTON_VOL_DOWN
108#define MPEG_START_TIME_LEFT BUTTON_LEFT 106#define MPEG_START_TIME_LEFT BUTTON_LEFT
109#define MPEG_START_TIME_RIGHT BUTTON_RIGHT 107#define MPEG_START_TIME_RIGHT BUTTON_RIGHT
110#define MPEG_START_TIME_UP BUTTON_UP 108#define MPEG_START_TIME_UP BUTTON_UP
111#define MPEG_START_TIME_DOWN BUTTON_DOWN 109#define MPEG_START_TIME_DOWN BUTTON_DOWN
110#define MPEG_START_TIME_LEFT2 BUTTON_VOL_UP
111#define MPEG_START_TIME_RIGHT2 BUTTON_VOL_DOWN
112#define MPEG_START_TIME_EXIT BUTTON_POWER 112#define MPEG_START_TIME_EXIT BUTTON_POWER
113 113
114#elif CONFIG_KEYPAD == MROBE500_PAD 114#elif CONFIG_KEYPAD == MROBE500_PAD
115#define MPEG_START_TIME_SELECT BUTTON_RC_HEART 115#define MPEG_START_TIME_SELECT BUTTON_RC_HEART
116#define MPEG_START_TIME_SCROLL_UP BUTTON_RC_VOL_UP
117#define MPEG_START_TIME_SCROLL_DOWN BUTTON_RC_VOL_DOWN
118#define MPEG_START_TIME_LEFT BUTTON_LEFT 116#define MPEG_START_TIME_LEFT BUTTON_LEFT
119#define MPEG_START_TIME_RIGHT BUTTON_RIGHT 117#define MPEG_START_TIME_RIGHT BUTTON_RIGHT
120#define MPEG_START_TIME_UP BUTTON_RC_PLAY 118#define MPEG_START_TIME_UP BUTTON_RC_PLAY
121#define MPEG_START_TIME_DOWN BUTTON_RC_DOWN 119#define MPEG_START_TIME_DOWN BUTTON_RC_DOWN
120#define MPEG_START_TIME_LEFT2 BUTTON_RC_VOL_UP
121#define MPEG_START_TIME_RIGHT2 BUTTON_RC_VOL_DOWN
122#define MPEG_START_TIME_EXIT BUTTON_POWER 122#define MPEG_START_TIME_EXIT BUTTON_POWER
123 123
124#elif CONFIG_KEYPAD == MROBE100_PAD 124#elif CONFIG_KEYPAD == MROBE100_PAD
@@ -127,8 +127,8 @@ struct mpeg_settings settings;
127#define MPEG_START_TIME_RIGHT BUTTON_RIGHT 127#define MPEG_START_TIME_RIGHT BUTTON_RIGHT
128#define MPEG_START_TIME_UP BUTTON_UP 128#define MPEG_START_TIME_UP BUTTON_UP
129#define MPEG_START_TIME_DOWN BUTTON_DOWN 129#define MPEG_START_TIME_DOWN BUTTON_DOWN
130#define MPEG_START_TIME_SCROLL_DOWN BUTTON_MENU 130#define MPEG_START_TIME_LEFT2 BUTTON_PLAY
131#define MPEG_START_TIME_SCROLL_UP BUTTON_PLAY 131#define MPEG_START_TIME_RIGHT2 BUTTON_MENU
132#define MPEG_START_TIME_EXIT BUTTON_POWER 132#define MPEG_START_TIME_EXIT BUTTON_POWER
133 133
134#elif CONFIG_KEYPAD == IAUDIO_M3_PAD 134#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
@@ -152,12 +152,12 @@ struct mpeg_settings settings;
152 152
153#elif CONFIG_KEYPAD == CREATIVEZVM_PAD 153#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
154#define MPEG_START_TIME_SELECT BUTTON_SELECT 154#define MPEG_START_TIME_SELECT BUTTON_SELECT
155#define MPEG_START_TIME_SCROLL_UP BUTTON_PLAY
156#define MPEG_START_TIME_SCROLL_DOWN BUTTON_MENU
157#define MPEG_START_TIME_LEFT BUTTON_LEFT 155#define MPEG_START_TIME_LEFT BUTTON_LEFT
158#define MPEG_START_TIME_RIGHT BUTTON_RIGHT 156#define MPEG_START_TIME_RIGHT BUTTON_RIGHT
159#define MPEG_START_TIME_UP BUTTON_UP 157#define MPEG_START_TIME_UP BUTTON_UP
160#define MPEG_START_TIME_DOWN BUTTON_DOWN 158#define MPEG_START_TIME_DOWN BUTTON_DOWN
159#define MPEG_START_TIME_LEFT2 BUTTON_PLAY
160#define MPEG_START_TIME_RIGHT2 BUTTON_MENU
161#define MPEG_START_TIME_EXIT BUTTON_BACK 161#define MPEG_START_TIME_EXIT BUTTON_BACK
162 162
163#elif CONFIG_KEYPAD == PHILIPS_HDD1630_PAD 163#elif CONFIG_KEYPAD == PHILIPS_HDD1630_PAD
@@ -166,8 +166,8 @@ struct mpeg_settings settings;
166#define MPEG_START_TIME_RIGHT BUTTON_RIGHT 166#define MPEG_START_TIME_RIGHT BUTTON_RIGHT
167#define MPEG_START_TIME_UP BUTTON_UP 167#define MPEG_START_TIME_UP BUTTON_UP
168#define MPEG_START_TIME_DOWN BUTTON_DOWN 168#define MPEG_START_TIME_DOWN BUTTON_DOWN
169#define MPEG_START_TIME_SCROLL_DOWN BUTTON_VOL_DOWN 169#define MPEG_START_TIME_LEFT2 BUTTON_VOL_UP
170#define MPEG_START_TIME_SCROLL_UP BUTTON_VOL_UP 170#define MPEG_START_TIME_RIGHT2 BUTTON_VOL_DOWN
171#define MPEG_START_TIME_EXIT BUTTON_POWER 171#define MPEG_START_TIME_EXIT BUTTON_POWER
172 172
173#elif CONFIG_KEYPAD == PHILIPS_SA9200_PAD 173#elif CONFIG_KEYPAD == PHILIPS_SA9200_PAD
@@ -176,8 +176,8 @@ struct mpeg_settings settings;
176#define MPEG_START_TIME_RIGHT BUTTON_NEXT 176#define MPEG_START_TIME_RIGHT BUTTON_NEXT
177#define MPEG_START_TIME_UP BUTTON_UP 177#define MPEG_START_TIME_UP BUTTON_UP
178#define MPEG_START_TIME_DOWN BUTTON_DOWN 178#define MPEG_START_TIME_DOWN BUTTON_DOWN
179#define MPEG_START_TIME_SCROLL_DOWN BUTTON_VOL_DOWN 179#define MPEG_START_TIME_LEFT2 BUTTON_VOL_UP
180#define MPEG_START_TIME_SCROLL_UP BUTTON_VOL_UP 180#define MPEG_START_TIME_RIGHT2 BUTTON_VOL_DOWN
181#define MPEG_START_TIME_EXIT BUTTON_POWER 181#define MPEG_START_TIME_EXIT BUTTON_POWER
182 182
183#elif CONFIG_KEYPAD == ONDAVX747_PAD 183#elif CONFIG_KEYPAD == ONDAVX747_PAD
@@ -192,8 +192,8 @@ struct mpeg_settings settings;
192#define MPEG_START_TIME_RIGHT BUTTON_RIGHT 192#define MPEG_START_TIME_RIGHT BUTTON_RIGHT
193#define MPEG_START_TIME_UP BUTTON_UP 193#define MPEG_START_TIME_UP BUTTON_UP
194#define MPEG_START_TIME_DOWN BUTTON_DOWN 194#define MPEG_START_TIME_DOWN BUTTON_DOWN
195#define MPEG_START_TIME_SCROLL_DOWN BUTTON_FFWD 195#define MPEG_START_TIME_LEFT2 BUTTON_REW
196#define MPEG_START_TIME_SCROLL_UP BUTTON_REW 196#define MPEG_START_TIME_RIGHT2 BUTTON_FFWD
197#define MPEG_START_TIME_EXIT BUTTON_REC 197#define MPEG_START_TIME_EXIT BUTTON_REC
198 198
199#else 199#else
@@ -204,12 +204,6 @@ struct mpeg_settings settings;
204#ifndef MPEG_START_TIME_SELECT 204#ifndef MPEG_START_TIME_SELECT
205#define MPEG_START_TIME_SELECT BUTTON_CENTER 205#define MPEG_START_TIME_SELECT BUTTON_CENTER
206#endif 206#endif
207#ifndef MPEG_START_TIME_SCROLL_UP
208#define MPEG_START_TIME_SCROLL_UP BUTTON_TOPRIGHT
209#endif
210#ifndef MPEG_START_TIME_SCROLL_DOWN
211#define MPEG_START_TIME_SCROLL_DOWN BUTTON_TOPLEFT
212#endif
213#ifndef MPEG_START_TIME_LEFT 207#ifndef MPEG_START_TIME_LEFT
214#define MPEG_START_TIME_LEFT BUTTON_MIDLEFT 208#define MPEG_START_TIME_LEFT BUTTON_MIDLEFT
215#endif 209#endif
@@ -222,6 +216,12 @@ struct mpeg_settings settings;
222#ifndef MPEG_START_TIME_DOWN 216#ifndef MPEG_START_TIME_DOWN
223#define MPEG_START_TIME_DOWN BUTTON_BOTTOMMIDDLE 217#define MPEG_START_TIME_DOWN BUTTON_BOTTOMMIDDLE
224#endif 218#endif
219#ifndef MPEG_START_TIME_LEFT2
220#define MPEG_START_TIME_LEFT2 BUTTON_TOPRIGHT
221#endif
222#ifndef MPEG_START_TIME_RIGHT2
223#define MPEG_START_TIME_RIGHT2 BUTTON_TOPLEFT
224#endif
225#ifndef MPEG_START_TIME_EXIT 225#ifndef MPEG_START_TIME_EXIT
226#define MPEG_START_TIME_EXIT BUTTON_TOPLEFT 226#define MPEG_START_TIME_EXIT BUTTON_TOPLEFT
227#endif 227#endif
@@ -236,7 +236,7 @@ static struct configdata config[] =
236 NULL}, 236 NULL},
237 {TYPE_INT, 0, MPEG_RESUME_NUM_OPTIONS, 237 {TYPE_INT, 0, MPEG_RESUME_NUM_OPTIONS,
238 { .int_p = &settings.resume_options }, "Resume options", NULL}, 238 { .int_p = &settings.resume_options }, "Resume options", NULL},
239#if defined(TOSHIBA_GIGABEAT_F) || defined(SANSA_E200) || defined(SANSA_C200) || defined(SANSA_FUZE) || defined(SANSA_E200V2) 239#if MPEG_OPTION_DITHERING_ENABLED
240 {TYPE_INT, 0, INT_MAX, { .int_p = &settings.displayoptions }, 240 {TYPE_INT, 0, INT_MAX, { .int_p = &settings.displayoptions },
241 "Display options", NULL}, 241 "Display options", NULL},
242#endif 242#endif
@@ -624,7 +624,7 @@ static int get_start_time(uint32_t duration)
624 struct vo_rect rc_vid, rc_bound; 624 struct vo_rect rc_vid, rc_bound;
625 uint32_t aspect_vid, aspect_bound; 625 uint32_t aspect_vid, aspect_bound;
626 626
627 enum state_enum slider_state = state0; 627 enum state_enum slider_state = STATE0;
628 628
629 lcd_(clear_display)(); 629 lcd_(clear_display)();
630 lcd_(update)(); 630 lcd_(update)();
@@ -699,7 +699,7 @@ static int get_start_time(uint32_t duration)
699 stream_gray_show(true); 699 stream_gray_show(true);
700#endif 700#endif
701 701
702 while (slider_state < state9) 702 while (slider_state < STATE9)
703 { 703 {
704 mpeg_menu_sysevent_clear(); 704 mpeg_menu_sysevent_clear();
705 button = tmo == TIMEOUT_BLOCK ? 705 button = tmo == TIMEOUT_BLOCK ?
@@ -720,7 +720,7 @@ static int get_start_time(uint32_t duration)
720 case MPEG_START_TIME_RC_DOWN | BUTTON_REPEAT: 720 case MPEG_START_TIME_RC_DOWN | BUTTON_REPEAT:
721#endif 721#endif
722 resume_time = increment_time(resume_time, -60*TS_SECOND, duration); 722 resume_time = increment_time(resume_time, -60*TS_SECOND, duration);
723 slider_state = state0; 723 slider_state = STATE0;
724 break; 724 break;
725 725
726 case MPEG_START_TIME_UP: 726 case MPEG_START_TIME_UP:
@@ -730,7 +730,7 @@ static int get_start_time(uint32_t duration)
730 case MPEG_START_TIME_RC_UP | BUTTON_REPEAT: 730 case MPEG_START_TIME_RC_UP | BUTTON_REPEAT:
731#endif 731#endif
732 resume_time = increment_time(resume_time, 60*TS_SECOND, duration); 732 resume_time = increment_time(resume_time, 60*TS_SECOND, duration);
733 slider_state = state0; 733 slider_state = STATE0;
734 break; 734 break;
735 735
736 /* Fine (1 second) control */ 736 /* Fine (1 second) control */
@@ -740,12 +740,12 @@ static int get_start_time(uint32_t duration)
740 case MPEG_START_TIME_RC_LEFT: 740 case MPEG_START_TIME_RC_LEFT:
741 case MPEG_START_TIME_RC_LEFT | BUTTON_REPEAT: 741 case MPEG_START_TIME_RC_LEFT | BUTTON_REPEAT:
742#endif 742#endif
743#ifdef MPEG_START_TIME_SCROLL_UP 743#ifdef MPEG_START_TIME_LEFT2
744 case MPEG_START_TIME_SCROLL_UP: 744 case MPEG_START_TIME_LEFT2:
745 case MPEG_START_TIME_SCROLL_UP | BUTTON_REPEAT: 745 case MPEG_START_TIME_LEFT2 | BUTTON_REPEAT:
746#endif 746#endif
747 resume_time = increment_time(resume_time, -TS_SECOND, duration); 747 resume_time = increment_time(resume_time, -TS_SECOND, duration);
748 slider_state = state0; 748 slider_state = STATE0;
749 break; 749 break;
750 750
751 case MPEG_START_TIME_RIGHT: 751 case MPEG_START_TIME_RIGHT:
@@ -754,12 +754,12 @@ static int get_start_time(uint32_t duration)
754 case MPEG_START_TIME_RC_RIGHT: 754 case MPEG_START_TIME_RC_RIGHT:
755 case MPEG_START_TIME_RC_RIGHT | BUTTON_REPEAT: 755 case MPEG_START_TIME_RC_RIGHT | BUTTON_REPEAT:
756#endif 756#endif
757#ifdef MPEG_START_TIME_SCROLL_DOWN 757#ifdef MPEG_START_TIME_RIGHT2
758 case MPEG_START_TIME_SCROLL_DOWN: 758 case MPEG_START_TIME_RIGHT2:
759 case MPEG_START_TIME_SCROLL_DOWN | BUTTON_REPEAT: 759 case MPEG_START_TIME_RIGHT2 | BUTTON_REPEAT:
760#endif 760#endif
761 resume_time = increment_time(resume_time, TS_SECOND, duration); 761 resume_time = increment_time(resume_time, TS_SECOND, duration);
762 slider_state = state0; 762 slider_state = STATE0;
763 break; 763 break;
764 764
765 case MPEG_START_TIME_SELECT: 765 case MPEG_START_TIME_SELECT:
@@ -768,7 +768,7 @@ static int get_start_time(uint32_t duration)
768#endif 768#endif
769 settings.resume_time = resume_time; 769 settings.resume_time = resume_time;
770 button = MPEG_START_SEEK; 770 button = MPEG_START_SEEK;
771 slider_state = state9; 771 slider_state = STATE9;
772 break; 772 break;
773 773
774 case MPEG_START_TIME_EXIT: 774 case MPEG_START_TIME_EXIT:
@@ -776,17 +776,17 @@ static int get_start_time(uint32_t duration)
776 case MPEG_START_TIME_RC_EXIT: 776 case MPEG_START_TIME_RC_EXIT:
777#endif 777#endif
778 button = MPEG_START_EXIT; 778 button = MPEG_START_EXIT;
779 slider_state = state9; 779 slider_state = STATE9;
780 break; 780 break;
781 781
782 case ACTION_STD_CANCEL: 782 case ACTION_STD_CANCEL:
783 button = MPEG_START_QUIT; 783 button = MPEG_START_QUIT;
784 slider_state = state9; 784 slider_state = STATE9;
785 break; 785 break;
786 786
787#ifdef HAVE_LCD_ENABLE 787#ifdef HAVE_LCD_ENABLE
788 case LCD_ENABLE_EVENT_0: 788 case LCD_ENABLE_EVENT_0:
789 if (slider_state == state2) 789 if (slider_state == STATE2)
790 display_thumb_image(&rc_vid); 790 display_thumb_image(&rc_vid);
791 continue; 791 continue;
792#endif 792#endif
@@ -799,18 +799,18 @@ static int get_start_time(uint32_t duration)
799 799
800 switch (slider_state) 800 switch (slider_state)
801 { 801 {
802 case state0: 802 case STATE0:
803 trigger_cpu_boost(); 803 trigger_cpu_boost();
804 stream_seek(resume_time, SEEK_SET); 804 stream_seek(resume_time, SEEK_SET);
805 show_loading(&rc_bound); 805 show_loading(&rc_bound);
806 draw_slider(duration, resume_time, NULL); 806 draw_slider(duration, resume_time, NULL);
807 slider_state = state1; 807 slider_state = STATE1;
808 tmo = THUMB_DELAY; 808 tmo = THUMB_DELAY;
809 break; 809 break;
810 case state1: 810 case STATE1:
811 display_thumb_image(&rc_vid); 811 display_thumb_image(&rc_vid);
812 slider_state = state2; 812 slider_state = STATE2;
813 case state2: 813 case STATE2:
814 cancel_cpu_boost(); 814 cancel_cpu_boost();
815 tmo = TIMEOUT_BLOCK; 815 tmo = TIMEOUT_BLOCK;
816 default: 816 default:
@@ -968,7 +968,6 @@ int mpeg_menu(void)
968 return result; 968 return result;
969} 969}
970 970
971/** MPEG Menu **/
972static void display_options(void) 971static void display_options(void)
973{ 972{
974 int selected = 0; 973 int selected = 0;
@@ -1121,13 +1120,9 @@ static void resume_options(void)
1121 1120
1122static void clear_resume_count(void) 1121static void clear_resume_count(void)
1123{ 1122{
1123 settings.resume_count = 0;
1124 configfile_save(SETTINGS_FILENAME, config, ARRAYLEN(config), 1124 configfile_save(SETTINGS_FILENAME, config, ARRAYLEN(config),
1125 SETTINGS_VERSION); 1125 SETTINGS_VERSION);
1126
1127 settings.resume_count = 0;
1128
1129 /* add this place holder so the count is above resume entries */
1130 configfile_update_entry(SETTINGS_FILENAME, "Resume count", 0);
1131} 1126}
1132 1127
1133static void mpeg_settings(void) 1128static void mpeg_settings(void)
@@ -1188,7 +1183,7 @@ void init_settings(const char* filename)
1188 settings.limitfps = 1; /* Limit FPS */ 1183 settings.limitfps = 1; /* Limit FPS */
1189 settings.skipframes = 1; /* Skip frames */ 1184 settings.skipframes = 1; /* Skip frames */
1190 settings.resume_options = MPEG_RESUME_MENU_ALWAYS; /* Enable start menu */ 1185 settings.resume_options = MPEG_RESUME_MENU_ALWAYS; /* Enable start menu */
1191 settings.resume_count = -1; 1186 settings.resume_count = 0;
1192#ifdef HAVE_BACKLIGHT_BRIGHTNESS 1187#ifdef HAVE_BACKLIGHT_BRIGHTNESS
1193 settings.backlight_brightness = -1; /* Use default setting */ 1188 settings.backlight_brightness = -1; /* Use default setting */
1194#endif 1189#endif
@@ -1201,55 +1196,39 @@ void init_settings(const char* filename)
1201 settings.equalizer = false; 1196 settings.equalizer = false;
1202 settings.dithering = false; 1197 settings.dithering = false;
1203 1198
1204 if (configfile_load(SETTINGS_FILENAME, config, 1199 if (configfile_load(SETTINGS_FILENAME, config, ARRAYLEN(config),
1205 sizeof(config)/sizeof(*config),
1206 SETTINGS_MIN_VERSION) < 0) 1200 SETTINGS_MIN_VERSION) < 0)
1207 { 1201 {
1208 /* Generate a new config file with default values */ 1202 /* Generate a new config file with default values */
1209 configfile_save(SETTINGS_FILENAME, config, 1203 configfile_save(SETTINGS_FILENAME, config, ARRAYLEN(config),
1210 sizeof(config)/sizeof(*config),
1211 SETTINGS_VERSION); 1204 SETTINGS_VERSION);
1212 } 1205 }
1213 1206
1214#if MPEG_OPTION_DITHERING_ENABLED 1207 rb->strlcpy(settings.resume_filename, filename, MAX_PATH);
1215 if ((settings.displayoptions =
1216 configfile_get_value(SETTINGS_FILENAME, "Display options")) < 0)
1217 {
1218 configfile_update_entry(SETTINGS_FILENAME, "Display options",
1219 (settings.displayoptions=0));
1220 }
1221 rb->lcd_yuv_set_options(settings.displayoptions);
1222#endif
1223
1224 if (settings.resume_count < 0)
1225 {
1226 settings.resume_count = 0;
1227 configfile_update_entry(SETTINGS_FILENAME, "Resume count", 0);
1228 }
1229
1230 rb->snprintf(settings.resume_filename, MAX_PATH, "%s", filename);
1231 1208
1232 /* get the resume time for the current mpeg if it exist */ 1209 /* get the resume time for the current mpeg if it exists */
1233 if ((settings.resume_time = configfile_get_value 1210 if ((settings.resume_time = configfile_get_value
1234 (SETTINGS_FILENAME, filename)) < 0) 1211 (SETTINGS_FILENAME, filename)) < 0)
1235 { 1212 {
1236 settings.resume_time = 0; 1213 settings.resume_time = 0;
1237 } 1214 }
1238 1215
1216#if MPEG_OPTION_DITHERING_ENABLED
1217 rb->lcd_yuv_set_options(settings.displayoptions);
1218#endif
1219
1239 /* Set our audio options */ 1220 /* Set our audio options */
1240 sync_audio_settings(false); 1221 sync_audio_settings(false);
1241} 1222}
1242 1223
1243void save_settings(void) 1224void save_settings(void)
1244{ 1225{
1245 configfile_update_entry(SETTINGS_FILENAME, "Show FPS", 1226 unsigned i;
1246 settings.showfps); 1227 for (i = 0; i < ARRAYLEN(config); i++)
1247 configfile_update_entry(SETTINGS_FILENAME, "Limit FPS", 1228 {
1248 settings.limitfps); 1229 configfile_update_entry(SETTINGS_FILENAME, config[i].name,
1249 configfile_update_entry(SETTINGS_FILENAME, "Skip frames", 1230 *(config[i].int_p));
1250 settings.skipframes); 1231 }
1251 configfile_update_entry(SETTINGS_FILENAME, "Resume options",
1252 settings.resume_options);
1253 1232
1254 /* If this was a new resume entry then update the total resume count */ 1233 /* If this was a new resume entry then update the total resume count */
1255 if (configfile_update_entry(SETTINGS_FILENAME, settings.resume_filename, 1234 if (configfile_update_entry(SETTINGS_FILENAME, settings.resume_filename,
@@ -1259,26 +1238,6 @@ void save_settings(void)
1259 ++settings.resume_count); 1238 ++settings.resume_count);
1260 } 1239 }
1261 1240
1262#ifdef HAVE_BACKLIGHT_BRIGHTNESS
1263 configfile_update_entry(SETTINGS_FILENAME, "Backlight brightness",
1264 settings.backlight_brightness);
1265#endif
1266
1267#if MPEG_OPTION_DITHERING_ENABLED
1268 configfile_update_entry(SETTINGS_FILENAME, "Display options",
1269 settings.displayoptions);
1270#endif
1271 configfile_update_entry(SETTINGS_FILENAME, "Tone controls",
1272 settings.tone_controls);
1273 configfile_update_entry(SETTINGS_FILENAME, "Channel modes",
1274 settings.channel_modes);
1275 configfile_update_entry(SETTINGS_FILENAME, "Crossfeed",
1276 settings.crossfeed);
1277 configfile_update_entry(SETTINGS_FILENAME, "Equalizer",
1278 settings.equalizer);
1279 configfile_update_entry(SETTINGS_FILENAME, "Dithering",
1280 settings.dithering);
1281
1282 /* Restore audio options */ 1241 /* Restore audio options */
1283 sync_audio_settings(true); 1242 sync_audio_settings(true);
1284} 1243}
diff --git a/apps/plugins/mpegplayer/mpegplayer.c b/apps/plugins/mpegplayer/mpegplayer.c
index 7a2578506d..155c601762 100644
--- a/apps/plugins/mpegplayer/mpegplayer.c
+++ b/apps/plugins/mpegplayer/mpegplayer.c
@@ -151,6 +151,7 @@ PLUGIN_IRAM_DECLARE
151#define MPEG_VOLUP2 BUTTON_VOL_UP 151#define MPEG_VOLUP2 BUTTON_VOL_UP
152#define MPEG_RW BUTTON_UP 152#define MPEG_RW BUTTON_UP
153#define MPEG_FF BUTTON_DOWN 153#define MPEG_FF BUTTON_DOWN
154
154#define MPEG_RC_MENU BUTTON_RC_DSP 155#define MPEG_RC_MENU BUTTON_RC_DSP
155#define MPEG_RC_STOP (BUTTON_RC_PLAY | BUTTON_REPEAT) 156#define MPEG_RC_STOP (BUTTON_RC_PLAY | BUTTON_REPEAT)
156#define MPEG_RC_PAUSE (BUTTON_RC_PLAY | BUTTON_REL) 157#define MPEG_RC_PAUSE (BUTTON_RC_PLAY | BUTTON_REL)
@@ -170,6 +171,7 @@ PLUGIN_IRAM_DECLARE
170#define MPEG_VOLUP2 BUTTON_VOL_UP 171#define MPEG_VOLUP2 BUTTON_VOL_UP
171#define MPEG_RW BUTTON_UP 172#define MPEG_RW BUTTON_UP
172#define MPEG_FF BUTTON_DOWN 173#define MPEG_FF BUTTON_DOWN
174
173#define MPEG_RC_MENU BUTTON_RC_DSP 175#define MPEG_RC_MENU BUTTON_RC_DSP
174#define MPEG_RC_STOP (BUTTON_RC_PLAY | BUTTON_REPEAT) 176#define MPEG_RC_STOP (BUTTON_RC_PLAY | BUTTON_REPEAT)
175#define MPEG_RC_PAUSE (BUTTON_RC_PLAY | BUTTON_REL) 177#define MPEG_RC_PAUSE (BUTTON_RC_PLAY | BUTTON_REL)
@@ -337,7 +339,7 @@ CONFIG_KEYPAD == SANSA_M200_PAD
337/* One thing we can do here for targets with remotes is having a display 339/* One thing we can do here for targets with remotes is having a display
338 * always on the remote instead of always forcing a popup on the main display */ 340 * always on the remote instead of always forcing a popup on the main display */
339 341
340#define FF_REWIND_MAX_PERCENT 3 /* cap ff/rewind step size at max % of file */ 342#define FF_REWIND_MAX_PERCENT 3 /* cap ff/rewind step size at max % of file */
341 /* 3% of 30min file == 54s step size */ 343 /* 3% of 30min file == 54s step size */
342#define MIN_FF_REWIND_STEP (TS_SECOND/2) 344#define MIN_FF_REWIND_STEP (TS_SECOND/2)
343#define WVS_MIN_UPDATE_INTERVAL (HZ/2) 345#define WVS_MIN_UPDATE_INTERVAL (HZ/2)
@@ -467,18 +469,7 @@ static void draw_clear_area(int x, int y, int width, int height)
467 469
468static void draw_clear_area_rect(const struct vo_rect *rc) 470static void draw_clear_area_rect(const struct vo_rect *rc)
469{ 471{
470 int x = rc->l; 472 draw_clear_area(rc->l, rc->t, rc->r - rc->l, rc->b - rc->t);
471 int y = rc->t;
472 int width = rc->r - rc->l;
473 int height = rc->b - rc->t;
474#ifdef HAVE_LCD_COLOR
475 rb->screen_clear_area(rb->screens[SCREEN_MAIN], _X, _Y, _W, _H);
476#else
477 int oldmode = grey_get_drawmode();
478 grey_set_drawmode(DRMODE_SOLID | DRMODE_INVERSEVID);
479 grey_fillrect(_X, _Y, _W, _H);
480 grey_set_drawmode(oldmode);
481#endif
482} 473}
483 474
484static void draw_fillrect(int x, int y, int width, int height) 475static void draw_fillrect(int x, int y, int width, int height)
@@ -572,7 +563,7 @@ static void draw_oriented_mono_bitmap_part(const unsigned char *src,
572 src_end = src + width; 563 src_end = src + width;
573 564
574 dst = rb->lcd_framebuffer + (LCD_WIDTH - y) + x*LCD_WIDTH; 565 dst = rb->lcd_framebuffer + (LCD_WIDTH - y) + x*LCD_WIDTH;
575 do 566 do
576 { 567 {
577 const unsigned char *src_col = src++; 568 const unsigned char *src_col = src++;
578 unsigned data = *src_col >> src_y; 569 unsigned data = *src_col >> src_y;
@@ -582,7 +573,7 @@ static void draw_oriented_mono_bitmap_part(const unsigned char *src,
582 dst_end = dst_col - height; 573 dst_end = dst_col - height;
583 dst += LCD_WIDTH; 574 dst += LCD_WIDTH;
584 575
585 do 576 do
586 { 577 {
587 dst_col--; 578 dst_col--;
588 579
@@ -882,7 +873,7 @@ static void wvs_refresh_time(void)
882 hms_format(buf, sizeof (buf), &hms); 873 hms_format(buf, sizeof (buf), &hms);
883 874
884 draw_clear_area_rect(&wvs.time_rect); 875 draw_clear_area_rect(&wvs.time_rect);
885 draw_putsxy_oriented(wvs.time_rect.l, wvs.time_rect.t, buf); 876 draw_putsxy_oriented(wvs.time_rect.l, wvs.time_rect.t, buf);
886 877
887 vo_rect_union(&wvs.update_rect, &wvs.update_rect, 878 vo_rect_union(&wvs.update_rect, &wvs.update_rect,
888 &wvs.prog_rect); 879 &wvs.prog_rect);
@@ -1588,6 +1579,10 @@ static void button_loop(void)
1588 1579
1589 /* The menu can change the font, so restore */ 1580 /* The menu can change the font, so restore */
1590 rb->lcd_setfont(FONT_SYSFIXED); 1581 rb->lcd_setfont(FONT_SYSFIXED);
1582#ifdef HAVE_LCD_COLOR
1583 rb->lcd_set_foreground(LCD_WHITE);
1584 rb->lcd_set_background(LCD_BLACK);
1585#endif
1591 1586
1592 switch (result) 1587 switch (result)
1593 { 1588 {
@@ -1739,7 +1734,7 @@ enum plugin_status plugin_start(const void* parameter)
1739 rb->lcd_clear_display(); 1734 rb->lcd_clear_display();
1740 rb->lcd_update(); 1735 rb->lcd_update();
1741 1736
1742 save_settings(); /* Save settings (if they have changed) */ 1737 save_settings();
1743 status = PLUGIN_OK; 1738 status = PLUGIN_OK;
1744 1739
1745 mpeg_menu_sysevent_handle(); 1740 mpeg_menu_sysevent_handle();
@@ -1757,7 +1752,7 @@ enum plugin_status plugin_start(const void* parameter)
1757 rb->splashf(HZ*2, errstring, err); 1752 rb->splashf(HZ*2, errstring, err);
1758 } 1753 }
1759 } 1754 }
1760 1755
1761#if defined(HAVE_LCD_MODES) && (HAVE_LCD_MODES & LCD_MODE_YUV) 1756#if defined(HAVE_LCD_MODES) && (HAVE_LCD_MODES & LCD_MODE_YUV)
1762 rb->lcd_set_mode(LCD_MODE_RGB565); 1757 rb->lcd_set_mode(LCD_MODE_RGB565);
1763#endif 1758#endif