Sorry for the late response. This works! Thanks for helping out, maybe it's a good idea to merge this into the main build.
Thanks for testing. I definitely want to get this into the main autobuild, but I need to clean some things up.
@srsa_4c:
I think "clean overlay" may have been part of what was triggering this. Maybe you can reproduce on M10.
handle_clean_overlay calls vid_bitmap_referesh directly, where my initial fix was only in draw_restore. The last test build check in both, and used the following in core/main.c just before the main loop:
#ifdef HDMI_HPD_FLAG
if(!(physw_status[HDMI_HPD_IDX] & HDMI_HPD_FLAG)) {
DBGPRINTF("spytask hdmi");
extern int draw_restore_suspend_tick;
draw_restore_suspend_tick = get_tick_count() + 3000;
}
#endif
I'm thinking about making everything call draw_restore rather than vid_bitmap_refresh, so the check disabling drawing can be in one place rather than in every affected port's vid_bitmap_refresh.
Additionally, handle_clean_overlay is called from mode_get, which on some ports call in lib.c functions (not the current EOS M ports though). I'm be tempted to move that to the loop in main.c so more clearly defined when it gets called.