summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/screens.c28
1 files changed, 15 insertions, 13 deletions
diff --git a/apps/screens.c b/apps/screens.c
index 478338de55..5162cc4d14 100644
--- a/apps/screens.c
+++ b/apps/screens.c
@@ -544,10 +544,10 @@ bool set_time_screen(const char* title, struct tm *tm)
544 unsigned int statusbar_height = 0; 544 unsigned int statusbar_height = 0;
545 unsigned int separator_width, weekday_width; 545 unsigned int separator_width, weekday_width;
546 unsigned int prev_line_height; 546 unsigned int prev_line_height;
547 static unsigned char daysinmonth[] = 547 static unsigned char daysinmonth[] =
548 {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 548 {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
549 unsigned char buffer[20]; 549 unsigned char buffer[20];
550 struct viewport vp[NB_SCREENS]; 550 struct viewport viewports[NB_SCREENS];
551 int nb_lines; 551 int nb_lines;
552 552
553 /* 6 possible cursor possitions, 2 values stored for each: x, y */ 553 /* 6 possible cursor possitions, 2 values stored for each: x, y */
@@ -602,17 +602,19 @@ bool set_time_screen(const char* title, struct tm *tm)
602 602
603 FOR_NB_SCREENS(s) 603 FOR_NB_SCREENS(s)
604 { 604 {
605 viewport_set_defaults(&vp[s], s); 605 struct viewport *vp = &viewports[s];
606 screens[s].set_viewport(&vp[s]); 606
607 nb_lines = viewport_get_nb_lines(&vp[s]); 607 viewport_set_defaults(vp, s);
608 608 screens[s].set_viewport(vp);
609 nb_lines = viewport_get_nb_lines(vp);
610
609 /* minimum lines needed is 2 + title line */ 611 /* minimum lines needed is 2 + title line */
610 if (nb_lines < 4) 612 if (nb_lines < 4)
611 { 613 {
612 vp[s].font = FONT_SYSFIXED; 614 vp->font = FONT_SYSFIXED;
613 nb_lines = viewport_get_nb_lines(&vp[s]); 615 nb_lines = viewport_get_nb_lines(vp);
614 } 616 }
615 617
616 /* recalculate the positions and offsets */ 618 /* recalculate the positions and offsets */
617 if (nb_lines >= 3) 619 if (nb_lines >= 3)
618 screens[s].getstringsize(title, NULL, &prev_line_height); 620 screens[s].getstringsize(title, NULL, &prev_line_height);
@@ -640,7 +642,7 @@ bool set_time_screen(const char* title, struct tm *tm)
640 } 642 }
641 643
642 /* draw the screen */ 644 /* draw the screen */
643 screens[s].set_viewport(&vp[s]); 645 screens[s].set_viewport(vp);
644 screens[s].clear_viewport(); 646 screens[s].clear_viewport();
645 /* display the screen title */ 647 /* display the screen title */
646 screens[s].puts_scroll(0, 0, title); 648 screens[s].puts_scroll(0, 0, title);
@@ -656,12 +658,12 @@ bool set_time_screen(const char* title, struct tm *tm)
656 for(i=0; i<6; i++) 658 for(i=0; i<6; i++)
657 { 659 {
658 if (cursorpos == (int)i) 660 if (cursorpos == (int)i)
659 vp[s].drawmode = (DRMODE_SOLID|DRMODE_INVERSEVID); 661 vp->drawmode = (DRMODE_SOLID|DRMODE_INVERSEVID);
660 662
661 screens[s].putsxy(cursor[i][INDEX_X], 663 screens[s].putsxy(cursor[i][INDEX_X],
662 cursor[i][INDEX_Y], ptr[i]); 664 cursor[i][INDEX_Y], ptr[i]);
663 665
664 vp[s].drawmode = DRMODE_SOLID; 666 vp->drawmode = DRMODE_SOLID;
665 667
666 screens[s].putsxy(cursor[i/4 +1][INDEX_X] - separator_width, 668 screens[s].putsxy(cursor[i/4 +1][INDEX_X] - separator_width,
667 cursor[0][INDEX_Y], SEPARATOR); 669 cursor[0][INDEX_Y], SEPARATOR);