diff options
Diffstat (limited to 'apps/recorder/radio.c')
-rw-r--r-- | apps/recorder/radio.c | 303 |
1 files changed, 127 insertions, 176 deletions
diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c index 5841664742..e8a1154797 100644 --- a/apps/recorder/radio.c +++ b/apps/recorder/radio.c | |||
@@ -51,6 +51,7 @@ | |||
51 | #ifdef IPOD_ACCESSORY_PROTOCOL | 51 | #ifdef IPOD_ACCESSORY_PROTOCOL |
52 | #include "iap.h" | 52 | #include "iap.h" |
53 | #endif | 53 | #endif |
54 | #include "appevents.h" | ||
54 | #include "talk.h" | 55 | #include "talk.h" |
55 | #include "tuner.h" | 56 | #include "tuner.h" |
56 | #include "power.h" | 57 | #include "power.h" |
@@ -66,9 +67,8 @@ | |||
66 | #include "menus/exported_menus.h" | 67 | #include "menus/exported_menus.h" |
67 | #include "root_menu.h" | 68 | #include "root_menu.h" |
68 | #include "viewport.h" | 69 | #include "viewport.h" |
69 | #ifdef HAVE_QUICKSCREEN | 70 | #include "skin_engine/skin_engine.h" |
70 | #include "quickscreen.h" | 71 | #include "statusbar-skinned.h" |
71 | #endif | ||
72 | 72 | ||
73 | #if CONFIG_TUNER | 73 | #if CONFIG_TUNER |
74 | 74 | ||
@@ -100,20 +100,32 @@ | |||
100 | #elif CONFIG_KEYPAD == ONDIO_PAD | 100 | #elif CONFIG_KEYPAD == ONDIO_PAD |
101 | #define FM_RECORD_DBLPRE | 101 | #define FM_RECORD_DBLPRE |
102 | #define FM_RECORD | 102 | #define FM_RECORD |
103 | #elif (CONFIG_KEYPAD == SANSA_E200_PAD) || (CONFIG_KEYPAD == SANSA_C200_PAD) \ | 103 | #elif (CONFIG_KEYPAD == SANSA_E200_PAD) || (CONFIG_KEYPAD == SANSA_C200_PAD) |
104 | || (CONFIG_KEYPAD == SANSA_FUZE_PAD) | 104 | #define FM_MENU |
105 | #define FM_PRESET | 105 | #define FM_PRESET |
106 | #define FM_STOP | ||
106 | #define FM_MODE | 107 | #define FM_MODE |
108 | #define FM_EXIT | ||
109 | #define FM_PLAY | ||
107 | 110 | ||
108 | #elif (CONFIG_KEYPAD == GIGABEAT_S_PAD) | 111 | #elif (CONFIG_KEYPAD == GIGABEAT_S_PAD) |
109 | #define FM_PRESET | 112 | #define FM_PRESET |
110 | #define FM_MODE | 113 | #define FM_MODE |
111 | 114 | ||
112 | #elif (CONFIG_KEYPAD == COWON_D2_PAD) | 115 | #elif (CONFIG_KEYPAD == COWON_D2_PAD) |
116 | #define FM_MENU | ||
113 | #define FM_PRESET | 117 | #define FM_PRESET |
118 | #define FM_STOP | ||
119 | #define FM_MODE | ||
120 | #define FM_EXIT | ||
121 | #define FM_PLAY | ||
114 | 122 | ||
115 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) || \ | 123 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) || \ |
116 | (CONFIG_KEYPAD == IPOD_1G2G_PAD) | 124 | (CONFIG_KEYPAD == IPOD_1G2G_PAD) |
125 | #define FM_MENU | ||
126 | #define FM_STOP | ||
127 | #define FM_EXIT | ||
128 | #define FM_PLAY | ||
117 | #define FM_MODE | 129 | #define FM_MODE |
118 | 130 | ||
119 | #endif | 131 | #endif |
@@ -148,6 +160,32 @@ static int clear_preset_list(void); | |||
148 | static int scan_presets(void *viewports); | 160 | static int scan_presets(void *viewports); |
149 | static void radio_off(void); | 161 | static void radio_off(void); |
150 | 162 | ||
163 | bool radio_scan_mode(void) | ||
164 | { | ||
165 | return radio_mode == RADIO_SCAN_MODE; | ||
166 | } | ||
167 | |||
168 | bool radio_is_stereo(void) | ||
169 | { | ||
170 | return tuner_get(RADIO_STEREO) && !global_settings.fm_force_mono; | ||
171 | } | ||
172 | int radio_current_frequency(void) | ||
173 | { | ||
174 | return curr_freq; | ||
175 | } | ||
176 | |||
177 | int radio_current_preset(void) | ||
178 | { | ||
179 | return curr_preset; | ||
180 | } | ||
181 | int radio_preset_count(void) | ||
182 | { | ||
183 | return num_presets; | ||
184 | } | ||
185 | const struct fmstation *radio_get_preset(int preset) | ||
186 | { | ||
187 | return &presets[preset]; | ||
188 | } | ||
151 | /* Function to manipulate all yesno dialogues. | 189 | /* Function to manipulate all yesno dialogues. |
152 | This function needs the output text as an argument. */ | 190 | This function needs the output text as an argument. */ |
153 | static bool yesno_pop(const char* text) | 191 | static bool yesno_pop(const char* text) |
@@ -460,30 +498,90 @@ static void talk_preset(int preset, bool fallback, bool enqueue) | |||
460 | } | 498 | } |
461 | } | 499 | } |
462 | 500 | ||
463 | static void fms_restore(struct viewport vp[NB_SCREENS]) | 501 | /* Skin stuff */ |
502 | extern struct wps_state wps_state; /* from wps.c */ | ||
503 | static struct gui_wps fms_skin[NB_SCREENS] = {{ .data = NULL }}; | ||
504 | static struct wps_data fms_skin_data[NB_SCREENS] = {{ .wps_loaded = 0 }}; | ||
505 | static struct wps_sync_data fms_skin_sync_data = { .do_full_update = false }; | ||
506 | |||
507 | |||
508 | void fms_data_load(enum screen_type screen, const char *buf, bool isfile) | ||
509 | { | ||
510 | struct wps_data *data = fms_skin[screen].data; | ||
511 | int success; | ||
512 | success = buf && skin_data_load(screen, data, buf, isfile); | ||
513 | |||
514 | if (!success ) /* load the default */ | ||
515 | { | ||
516 | const char default_fms[] = "%Sx|Station:| %tf\n" | ||
517 | "%?ts<%Sx|Stereo||%Sx|Mono|>\n" | ||
518 | "%?tm<%Sx|Mode:| %Sx|Scan||%Sx|Preset|: %Ti. %?Tn<%Tn|%Tf>>\n" | ||
519 | "%pb\n" | ||
520 | #if CONFIG_CODEC != SWCODEC && !defined(SIMULATOR) | ||
521 | "%?Rr<%Sx|Time:| %Rh:%Rn:%Rs|" | ||
522 | "%?St|prerecording time|<%Sx|Prerecord Time| %Rs|%pm>>\n" | ||
523 | #endif | ||
524 | ; | ||
525 | skin_data_load(screen, data, default_fms, false); | ||
526 | } | ||
527 | } | ||
528 | enum fms_exiting { | ||
529 | FMS_EXIT, | ||
530 | FMS_ENTER | ||
531 | }; | ||
532 | void fms_fix_displays(enum fms_exiting toggle_state) | ||
533 | { | ||
534 | int i; | ||
535 | FOR_NB_SCREENS(i) | ||
536 | { | ||
537 | if (toggle_state == FMS_ENTER) | ||
538 | { | ||
539 | viewportmanager_theme_enable(i, skin_has_sbs(i, fms_skin[i].data), NULL); | ||
540 | #if LCD_DEPTH > 1 || defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 | ||
541 | screens[i].backdrop_show(fms_skin[i].data->backdrop); | ||
542 | #endif | ||
543 | screens[i].clear_display(); | ||
544 | /* force statusbar/skin update since we just cleared the whole screen */ | ||
545 | send_event(GUI_EVENT_ACTIONUPDATE, (void*)1); | ||
546 | } | ||
547 | else | ||
548 | { | ||
549 | screens[i].stop_scroll(); | ||
550 | #if LCD_DEPTH > 1 || defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 | ||
551 | screens[i].backdrop_show(sb_get_backdrop(i)); | ||
552 | #endif | ||
553 | viewportmanager_theme_undo(i, skin_has_sbs(i, fms_skin[i].data)); | ||
554 | } | ||
555 | } | ||
556 | } | ||
557 | |||
558 | |||
559 | void fms_skin_init(void) | ||
464 | { | 560 | { |
465 | struct screen *display; | ||
466 | int i; | 561 | int i; |
467 | FOR_NB_SCREENS(i) | 562 | FOR_NB_SCREENS(i) |
468 | { | 563 | { |
469 | display = &screens[i]; | 564 | #ifdef HAVE_ALBUMART |
470 | display->set_viewport(&vp[i]); | 565 | fms_skin_data[i].albumart = NULL; |
471 | display->clear_viewport(); | 566 | fms_skin_data[i].playback_aa_slot = -1; |
472 | display->update_viewport(); | 567 | #endif |
568 | fms_skin[i].data = &fms_skin_data[i]; | ||
569 | fms_skin[i].display = &screens[i]; | ||
570 | /* Currently no seperate wps_state needed/possible | ||
571 | so use the only available ( "global" ) one */ | ||
572 | fms_skin[i].state = &wps_state; | ||
573 | fms_skin[i].sync_data = &fms_skin_sync_data; | ||
473 | } | 574 | } |
474 | } | 575 | } |
475 | 576 | ||
476 | int radio_screen(void) | 577 | int radio_screen(void) |
477 | { | 578 | { |
478 | char buf[MAX_PATH]; | ||
479 | bool done = false; | 579 | bool done = false; |
480 | int ret_val = GO_TO_ROOT; | 580 | int ret_val = GO_TO_ROOT; |
481 | int button; | 581 | int button; |
482 | int i; | 582 | int i; |
483 | bool stereo = false, last_stereo = false; | 583 | bool stereo = false, last_stereo = false; |
484 | int fh; | 584 | bool update_screen = true, restore = true; |
485 | int top_of_screen = 0; | ||
486 | bool update_screen = true; | ||
487 | bool screen_freeze = false; | 585 | bool screen_freeze = false; |
488 | bool keep_playing = false; | 586 | bool keep_playing = false; |
489 | bool talk = false; | 587 | bool talk = false; |
@@ -502,33 +600,10 @@ int radio_screen(void) | |||
502 | #ifndef HAVE_NOISY_IDLE_MODE | 600 | #ifndef HAVE_NOISY_IDLE_MODE |
503 | int button_timeout = current_tick + (2*HZ); | 601 | int button_timeout = current_tick + (2*HZ); |
504 | #endif | 602 | #endif |
505 | struct viewport vp[NB_SCREENS]; | ||
506 | #ifdef HAVE_BUTTONBAR | ||
507 | struct gui_buttonbar buttonbar; | ||
508 | gui_buttonbar_init(&buttonbar); | ||
509 | gui_buttonbar_set_display(&buttonbar, &(screens[SCREEN_MAIN]) ); | ||
510 | #endif | ||
511 | 603 | ||
512 | /* change status to "in screen" */ | 604 | /* change status to "in screen" */ |
513 | in_screen = true; | 605 | in_screen = true; |
514 | 606 | ||
515 | /* always display status bar in radio screen for now */ | ||
516 | FOR_NB_SCREENS(i) | ||
517 | { | ||
518 | viewport_set_defaults(&vp[i], i); | ||
519 | #ifdef HAVE_BUTTONBAR | ||
520 | if (global_settings.buttonbar) | ||
521 | vp[i].height -= BUTTONBAR_HEIGHT; | ||
522 | #endif | ||
523 | } | ||
524 | fms_restore(vp); | ||
525 | |||
526 | fh = font_get(FONT_UI)->height; | ||
527 | |||
528 | /* Adjust for font size, trying to center the information vertically */ | ||
529 | if(fh < 10) | ||
530 | top_of_screen = 1; | ||
531 | |||
532 | if(num_presets <= 0) | 607 | if(num_presets <= 0) |
533 | { | 608 | { |
534 | radio_load_presets(global_settings.fmr_file); | 609 | radio_load_presets(global_settings.fmr_file); |
@@ -571,17 +646,12 @@ int radio_screen(void) | |||
571 | #endif | 646 | #endif |
572 | 647 | ||
573 | if(num_presets < 1 && yesno_pop(ID2P(LANG_FM_FIRST_AUTOSCAN))) | 648 | if(num_presets < 1 && yesno_pop(ID2P(LANG_FM_FIRST_AUTOSCAN))) |
574 | scan_presets(vp); | 649 | scan_presets(NULL); |
575 | 650 | ||
576 | curr_preset = find_preset(curr_freq); | 651 | curr_preset = find_preset(curr_freq); |
577 | if(curr_preset != -1) | 652 | if(curr_preset != -1) |
578 | radio_mode = RADIO_PRESET_MODE; | 653 | radio_mode = RADIO_PRESET_MODE; |
579 | 654 | ||
580 | #ifdef HAVE_BUTTONBAR | ||
581 | gui_buttonbar_set(&buttonbar, str(LANG_BUTTONBAR_MENU), | ||
582 | str(LANG_PRESET), str(LANG_FM_BUTTONBAR_RECORD)); | ||
583 | #endif | ||
584 | |||
585 | #ifndef HAVE_NOISY_IDLE_MODE | 655 | #ifndef HAVE_NOISY_IDLE_MODE |
586 | cpu_idle_mode(true); | 656 | cpu_idle_mode(true); |
587 | #endif | 657 | #endif |
@@ -608,15 +678,8 @@ int radio_screen(void) | |||
608 | cancel_cpu_boost(); | 678 | cancel_cpu_boost(); |
609 | } | 679 | } |
610 | 680 | ||
611 | #if CONFIG_CODEC != SWCODEC | 681 | button = skin_wait_for_action(fms_skin, CONTEXT_FM, |
612 | /* TODO: Can we timeout at HZ when recording since peaks aren't | 682 | update_screen ? TIMEOUT_NOBLOCK : HZ); |
613 | displayed? This should quiet recordings too. */ | ||
614 | button = get_action(CONTEXT_FM, | ||
615 | update_screen ? TIMEOUT_NOBLOCK : HZ / PEAK_METER_FPS); | ||
616 | #else | ||
617 | button = get_action(CONTEXT_FM, | ||
618 | update_screen ? TIMEOUT_NOBLOCK : HZ); | ||
619 | #endif | ||
620 | 683 | ||
621 | #ifndef HAVE_NOISY_IDLE_MODE | 684 | #ifndef HAVE_NOISY_IDLE_MODE |
622 | if (button != ACTION_NONE) | 685 | if (button != ACTION_NONE) |
@@ -763,19 +826,11 @@ int radio_screen(void) | |||
763 | break; | 826 | break; |
764 | 827 | ||
765 | case ACTION_FM_MENU: | 828 | case ACTION_FM_MENU: |
766 | FOR_NB_SCREENS(i) | 829 | fms_fix_displays(FMS_EXIT); |
767 | { | ||
768 | screens[i].scroll_stop(&vp[i]); | ||
769 | } | ||
770 | radio_menu(); | 830 | radio_menu(); |
771 | curr_preset = find_preset(curr_freq); | 831 | curr_preset = find_preset(curr_freq); |
772 | fms_restore(vp); | ||
773 | #ifdef HAVE_BUTTONBAR | ||
774 | gui_buttonbar_set(&buttonbar, str(LANG_BUTTONBAR_MENU), | ||
775 | str(LANG_PRESET), | ||
776 | str(LANG_FM_BUTTONBAR_RECORD)); | ||
777 | #endif | ||
778 | update_screen = true; | 832 | update_screen = true; |
833 | restore = true; | ||
779 | break; | 834 | break; |
780 | 835 | ||
781 | #ifdef FM_PRESET | 836 | #ifdef FM_PRESET |
@@ -784,37 +839,15 @@ int radio_screen(void) | |||
784 | { | 839 | { |
785 | splash(HZ, ID2P(LANG_FM_NO_PRESETS)); | 840 | splash(HZ, ID2P(LANG_FM_NO_PRESETS)); |
786 | update_screen = true; | 841 | update_screen = true; |
787 | fms_restore(vp); | ||
788 | |||
789 | break; | 842 | break; |
790 | } | 843 | } |
791 | FOR_NB_SCREENS(i) | 844 | fms_fix_displays(FMS_EXIT); |
792 | screens[i].scroll_stop(&vp[i]); | ||
793 | handle_radio_presets(); | 845 | handle_radio_presets(); |
794 | fms_restore(vp); | ||
795 | #ifdef HAVE_BUTTONBAR | ||
796 | gui_buttonbar_set(&buttonbar, | ||
797 | str(LANG_BUTTONBAR_MENU), | ||
798 | str(LANG_PRESET), | ||
799 | str(LANG_FM_BUTTONBAR_RECORD)); | ||
800 | #endif | ||
801 | update_screen = true; | 846 | update_screen = true; |
847 | restore = true; | ||
802 | break; | 848 | break; |
803 | #endif /* FM_PRESET */ | 849 | #endif /* FM_PRESET */ |
804 | 850 | ||
805 | #ifdef HAVE_QUICKSCREEN | ||
806 | case ACTION_FM_QUICKSCREEN: | ||
807 | { | ||
808 | if (quick_screen_quick(button)) | ||
809 | { | ||
810 | done = true; | ||
811 | break; | ||
812 | } | ||
813 | fms_restore(vp); | ||
814 | update_screen = true; | ||
815 | } | ||
816 | break; | ||
817 | #endif | ||
818 | #ifdef FM_FREEZE | 851 | #ifdef FM_FREEZE |
819 | case ACTION_FM_FREEZE: | 852 | case ACTION_FM_FREEZE: |
820 | if(!screen_freeze) | 853 | if(!screen_freeze) |
@@ -923,17 +956,6 @@ int radio_screen(void) | |||
923 | { | 956 | { |
924 | /* Only display the peak meter when not recording */ | 957 | /* Only display the peak meter when not recording */ |
925 | #if CONFIG_CODEC != SWCODEC | 958 | #if CONFIG_CODEC != SWCODEC |
926 | if(!audio_status()) | ||
927 | { | ||
928 | FOR_NB_SCREENS(i) | ||
929 | { | ||
930 | screens[i].set_viewport(&vp[i]); | ||
931 | peak_meter_screen(&screens[i],0, fh*(top_of_screen + 4),fh); | ||
932 | screens[i].update_rect(0, fh*(top_of_screen + 4), | ||
933 | screens[i].getwidth(), fh); | ||
934 | } | ||
935 | } | ||
936 | |||
937 | if(TIME_AFTER(current_tick, timeout)) | 959 | if(TIME_AFTER(current_tick, timeout)) |
938 | { | 960 | { |
939 | timeout = current_tick + HZ; | 961 | timeout = current_tick + HZ; |
@@ -957,85 +979,20 @@ int radio_screen(void) | |||
957 | 979 | ||
958 | #if CONFIG_CODEC != SWCODEC && !defined(SIMULATOR) | 980 | #if CONFIG_CODEC != SWCODEC && !defined(SIMULATOR) |
959 | seconds = audio_recorded_time() / HZ; | 981 | seconds = audio_recorded_time() / HZ; |
960 | if (update_screen || seconds > last_seconds) | 982 | if (update_screen || seconds > last_seconds || restore) |
961 | { | 983 | { |
962 | last_seconds = seconds; | 984 | last_seconds = seconds; |
963 | #else | 985 | #else |
964 | if (update_screen) | 986 | if (update_screen || restore) |
965 | { | 987 | { |
966 | #endif | 988 | #endif |
967 | int freq; | 989 | if (restore) |
968 | 990 | fms_fix_displays(FMS_ENTER); | |
969 | FOR_NB_SCREENS(i) | ||
970 | { | ||
971 | screens[i].set_viewport(&vp[i]); | ||
972 | } | ||
973 | |||
974 | snprintf(buf, 128, curr_preset >= 0 ? "%d. %s" : " ", | ||
975 | curr_preset + 1, presets[curr_preset].name); | ||
976 | |||
977 | FOR_NB_SCREENS(i) | ||
978 | screens[i].puts_scroll(0, top_of_screen, buf); | ||
979 | |||
980 | freq = curr_freq / 10000; | ||
981 | snprintf(buf, 128, str(LANG_FM_STATION), | ||
982 | freq / 100, freq % 100); | ||
983 | FOR_NB_SCREENS(i) | ||
984 | screens[i].puts_scroll(0, top_of_screen + 1, buf); | ||
985 | |||
986 | FOR_NB_SCREENS(i) | ||
987 | screens[i].puts_scroll(0, top_of_screen + 2, | ||
988 | stereo ? str(LANG_CHANNEL_STEREO) : | ||
989 | str(LANG_CHANNEL_MONO)); | ||
990 | |||
991 | snprintf(buf, 128, "%s %s", str(LANG_MODE), | ||
992 | radio_mode ? str(LANG_PRESET) : | ||
993 | str(LANG_RADIO_SCAN_MODE)); | ||
994 | FOR_NB_SCREENS(i) | ||
995 | screens[i].puts_scroll(0, top_of_screen + 3, buf); | ||
996 | #ifndef SIMULATOR | ||
997 | #ifdef HAVE_RDS_CAP | ||
998 | snprintf(buf, 128, "%s",tuner_get_rds_info(RADIO_RDS_NAME)); | ||
999 | FOR_NB_SCREENS(i) | ||
1000 | screens[i].puts_scroll(0, top_of_screen + 4, buf); | ||
1001 | |||
1002 | snprintf(buf, 128, "%s",tuner_get_rds_info(RADIO_RDS_TEXT)); | ||
1003 | FOR_NB_SCREENS(i) | ||
1004 | screens[i].puts_scroll(0, top_of_screen + 5, buf); | ||
1005 | #endif | ||
1006 | #endif /* SIMULATOR */ | ||
1007 | |||
1008 | #if CONFIG_CODEC != SWCODEC | ||
1009 | if(audio_status() == AUDIO_STATUS_RECORD) | ||
1010 | { | ||
1011 | hours = seconds / 3600; | ||
1012 | minutes = (seconds - (hours * 3600)) / 60; | ||
1013 | snprintf(buf, 32, "%s %02d:%02d:%02d", | ||
1014 | str(LANG_RECORDING_TIME), | ||
1015 | hours, minutes, seconds%60); | ||
1016 | FOR_NB_SCREENS(i) | ||
1017 | screens[i].puts_scroll(0, top_of_screen + 4, buf); | ||
1018 | } | ||
1019 | else | ||
1020 | { | ||
1021 | if(rec_options.rec_prerecord_time) | ||
1022 | { | ||
1023 | snprintf(buf, 32, "%s %02d", | ||
1024 | str(LANG_RECORD_PRERECORD), seconds%60); | ||
1025 | FOR_NB_SCREENS(i) | ||
1026 | screens[i].puts_scroll(0, top_of_screen + 4, buf); | ||
1027 | } | ||
1028 | } | ||
1029 | #endif /* CONFIG_CODEC != SWCODEC */ | ||
1030 | |||
1031 | FOR_NB_SCREENS(i) | 991 | FOR_NB_SCREENS(i) |
1032 | screens[i].update_viewport(); | 992 | skin_update(&fms_skin[i], WPS_REFRESH_ALL); |
1033 | #ifdef HAVE_BUTTONBAR | 993 | restore = false; |
1034 | gui_buttonbar_draw(&buttonbar); | ||
1035 | #endif | ||
1036 | } | 994 | } |
1037 | } | 995 | } |
1038 | |||
1039 | update_screen = false; | 996 | update_screen = false; |
1040 | 997 | ||
1041 | if (global_settings.talk_file && talk | 998 | if (global_settings.talk_file && talk |
@@ -1073,7 +1030,6 @@ int radio_screen(void) | |||
1073 | if(audio_status() & AUDIO_STATUS_ERROR) | 1030 | if(audio_status() & AUDIO_STATUS_ERROR) |
1074 | { | 1031 | { |
1075 | splash(0, str(LANG_DISK_FULL)); | 1032 | splash(0, str(LANG_DISK_FULL)); |
1076 | fms_restore(vp); | ||
1077 | audio_error_clear(); | 1033 | audio_error_clear(); |
1078 | 1034 | ||
1079 | while(1) | 1035 | while(1) |
@@ -1116,11 +1072,7 @@ int radio_screen(void) | |||
1116 | #ifndef HAVE_NOISY_IDLE_MODE | 1072 | #ifndef HAVE_NOISY_IDLE_MODE |
1117 | cpu_idle_mode(false); | 1073 | cpu_idle_mode(false); |
1118 | #endif | 1074 | #endif |
1119 | FOR_NB_SCREENS(i) | 1075 | fms_fix_displays(FMS_EXIT); |
1120 | { | ||
1121 | screens[i].scroll_stop(&vp[i]); | ||
1122 | screens[i].set_viewport(NULL); | ||
1123 | } | ||
1124 | in_screen = false; | 1076 | in_screen = false; |
1125 | #if CONFIG_CODEC != SWCODEC | 1077 | #if CONFIG_CODEC != SWCODEC |
1126 | return have_recorded; | 1078 | return have_recorded; |
@@ -1471,7 +1423,6 @@ static int handle_radio_presets(void) | |||
1471 | result = 2; | 1423 | result = 2; |
1472 | } | 1424 | } |
1473 | } | 1425 | } |
1474 | gui_synclist_scroll_stop(&lists); | ||
1475 | return result - 1; | 1426 | return result - 1; |
1476 | } | 1427 | } |
1477 | 1428 | ||