summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2010-02-20 21:32:31 +0000
committerThomas Martitz <kugel@rockbox.org>2010-02-20 21:32:31 +0000
commitd43d211a5830eceb2b667141d65d0488e7790769 (patch)
tree6d1f82be0066e2edcadc152771062d8b80a1df1f /apps
parent68169026e536c5febe8009e60edae44d50c08442 (diff)
downloadrockbox-d43d211a5830eceb2b667141d65d0488e7790769.tar.gz
rockbox-d43d211a5830eceb2b667141d65d0488e7790769.zip
Factor out some drawing code.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24796 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/recorder/radio.c68
1 files changed, 23 insertions, 45 deletions
diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c
index 7eed961202..9e891389bd 100644
--- a/apps/recorder/radio.c
+++ b/apps/recorder/radio.c
@@ -455,6 +455,19 @@ static void talk_preset(int preset, bool fallback, bool enqueue)
455 } 455 }
456} 456}
457 457
458static void fms_restore(struct viewport vp[NB_SCREENS])
459{
460 struct screen *display;
461 int i;
462 FOR_NB_SCREENS(i)
463 {
464 display = &screens[i];
465 display->set_viewport(&vp[i]);
466 display->clear_viewport();
467 display->update_viewport();
468 }
469}
470
458int radio_screen(void) 471int radio_screen(void)
459{ 472{
460 char buf[MAX_PATH]; 473 char buf[MAX_PATH];
@@ -502,11 +515,8 @@ int radio_screen(void)
502 if (global_settings.buttonbar) 515 if (global_settings.buttonbar)
503 vp[i].height -= BUTTONBAR_HEIGHT; 516 vp[i].height -= BUTTONBAR_HEIGHT;
504#endif 517#endif
505 screens[i].set_viewport(&vp[i]);
506 screens[i].stop_scroll();
507 screens[i].clear_viewport();
508 screens[i].update_viewport();
509 } 518 }
519 fms_restore(vp);
510 520
511 fh = font_get(FONT_UI)->height; 521 fh = font_get(FONT_UI)->height;
512 522
@@ -754,13 +764,7 @@ int radio_screen(void)
754 } 764 }
755 radio_menu(); 765 radio_menu();
756 curr_preset = find_preset(curr_freq); 766 curr_preset = find_preset(curr_freq);
757 FOR_NB_SCREENS(i) 767 fms_restore(vp);
758 {
759 screens[i].set_viewport(&vp[i]);
760 screens[i].clear_viewport();
761 screens[i].update_viewport();
762 screens[i].set_viewport(NULL);
763 }
764#ifdef HAVE_BUTTONBAR 768#ifdef HAVE_BUTTONBAR
765 gui_buttonbar_set(&buttonbar, str(LANG_BUTTONBAR_MENU), 769 gui_buttonbar_set(&buttonbar, str(LANG_BUTTONBAR_MENU),
766 str(LANG_PRESET), 770 str(LANG_PRESET),
@@ -775,25 +779,14 @@ int radio_screen(void)
775 { 779 {
776 splash(HZ, ID2P(LANG_FM_NO_PRESETS)); 780 splash(HZ, ID2P(LANG_FM_NO_PRESETS));
777 update_screen = true; 781 update_screen = true;
778 FOR_NB_SCREENS(i) 782 fms_restore(vp);
779 {
780 screens[i].set_viewport(&vp[i]);
781 screens[i].clear_viewport();
782 screens[i].update_viewport();
783 screens[i].set_viewport(NULL);
784 }
785 783
786 break; 784 break;
787 } 785 }
788 handle_radio_presets();
789 FOR_NB_SCREENS(i) 786 FOR_NB_SCREENS(i)
790 { 787 screens[i].scroll_stop(&vp[i]);
791 screens[i].set_viewport(&vp[i]); 788 handle_radio_presets();
792 screens[i].stop_scroll(); 789 fms_restore(vp);
793 screens[i].clear_viewport();
794 screens[i].update_viewport();
795 screens[i].set_viewport(NULL);
796 }
797#ifdef HAVE_BUTTONBAR 790#ifdef HAVE_BUTTONBAR
798 gui_buttonbar_set(&buttonbar, 791 gui_buttonbar_set(&buttonbar,
799 str(LANG_BUTTONBAR_MENU), 792 str(LANG_BUTTONBAR_MENU),
@@ -812,14 +805,7 @@ int radio_screen(void)
812 done = true; 805 done = true;
813 break; 806 break;
814 } 807 }
815 FOR_NB_SCREENS(i) 808 fms_restore(vp);
816 {
817 screens[i].set_viewport(&vp[i]);
818 screens[i].stop_scroll();
819 screens[i].clear_viewport();
820 screens[i].update_viewport();
821 screens[i].set_viewport(NULL);
822 }
823 update_screen = true; 809 update_screen = true;
824 } 810 }
825 break; 811 break;
@@ -940,7 +926,6 @@ int radio_screen(void)
940 peak_meter_screen(&screens[i],0, fh*(top_of_screen + 4),fh); 926 peak_meter_screen(&screens[i],0, fh*(top_of_screen + 4),fh);
941 screens[i].update_rect(0, fh*(top_of_screen + 4), 927 screens[i].update_rect(0, fh*(top_of_screen + 4),
942 screens[i].getwidth(), fh); 928 screens[i].getwidth(), fh);
943 screens[i].set_viewport(NULL);
944 } 929 }
945 } 930 }
946 931
@@ -1039,11 +1024,7 @@ int radio_screen(void)
1039#endif /* CONFIG_CODEC != SWCODEC */ 1024#endif /* CONFIG_CODEC != SWCODEC */
1040 1025
1041 FOR_NB_SCREENS(i) 1026 FOR_NB_SCREENS(i)
1042 {
1043 screens[i].update_viewport(); 1027 screens[i].update_viewport();
1044 screens[i].set_viewport(NULL);
1045 }
1046
1047#ifdef HAVE_BUTTONBAR 1028#ifdef HAVE_BUTTONBAR
1048 gui_buttonbar_draw(&buttonbar); 1029 gui_buttonbar_draw(&buttonbar);
1049#endif 1030#endif
@@ -1087,12 +1068,7 @@ int radio_screen(void)
1087 if(audio_status() & AUDIO_STATUS_ERROR) 1068 if(audio_status() & AUDIO_STATUS_ERROR)
1088 { 1069 {
1089 splash(0, str(LANG_DISK_FULL)); 1070 splash(0, str(LANG_DISK_FULL));
1090 FOR_NB_SCREENS(i) 1071 fms_restore(vp);
1091 {
1092 screens[i].set_viewport(&vp[i]);
1093 screens[i].update_viewport();
1094 screens[i].set_viewport(NULL);
1095 }
1096 audio_error_clear(); 1072 audio_error_clear();
1097 1073
1098 while(1) 1074 while(1)
@@ -1138,6 +1114,7 @@ int radio_screen(void)
1138 FOR_NB_SCREENS(i) 1114 FOR_NB_SCREENS(i)
1139 { 1115 {
1140 screens[i].scroll_stop(&vp[i]); 1116 screens[i].scroll_stop(&vp[i]);
1117 screens[i].set_viewport(NULL);
1141 } 1118 }
1142 in_screen = false; 1119 in_screen = false;
1143#if CONFIG_CODEC != SWCODEC 1120#if CONFIG_CODEC != SWCODEC
@@ -1489,6 +1466,7 @@ static int handle_radio_presets(void)
1489 result = 2; 1466 result = 2;
1490 } 1467 }
1491 } 1468 }
1469 gui_synclist_scroll_stop(&lists);
1492 return result - 1; 1470 return result - 1;
1493} 1471}
1494 1472