2.1 --- a/include/vga_display.h Sun Nov 04 00:04:09 2018 +0100
2.2 +++ b/include/vga_display.h Sun Nov 04 00:46:43 2018 +0100
2.3 @@ -88,9 +88,10 @@
2.4 void vga_configure_zero_channel(int channel, int int_num, int initiating,
2.5 uint32_t output);
2.6
2.7 -/* Frame selection. */
2.8 +/* Access-related operations. */
2.9
2.10 void vga_set_frame(display_config_t *display_config);
2.11 +void vga_wait_visible(void);
2.12
2.13 /* Interrupt handlers. */
2.14
3.1 --- a/lib/vga_display.c Sun Nov 04 00:04:09 2018 +0100
3.2 +++ b/lib/vga_display.c Sun Nov 04 00:46:43 2018 +0100
3.3 @@ -251,11 +251,21 @@
3.4
3.5 void vga_set_frame(display_config_t *display_config)
3.6 {
3.7 + vga_wait_visible();
3.8 +
3.9 vga_display.screen_start = display_config->screen_start;
3.10 vga_display.screen_limit = display_config->screen_limit;
3.11 vga_display.screen_size = display_config->screen_size;
3.12 }
3.13
3.14 +/* Wait for the visible region to be completed. */
3.15 +
3.16 +void vga_wait_visible(void)
3.17 +{
3.18 + while (((volatile void (*)()) vga_display.state_handler) == visible_active)
3.19 + __asm__ __volatile__("wait");
3.20 +}
3.21 +
3.22
3.23
3.24 /* Display state machine interrupt handler. */