From: Toni Wilen Date: Sat, 1 Nov 2025 13:50:20 +0000 (+0200) Subject: Clear chipset frame when entering genlock no sync state. X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=a7a5613944f7842a7302d40c592d1927c25bcce8;p=francis%2Fwinuae.git Clear chipset frame when entering genlock no sync state. --- diff --git a/custom.cpp b/custom.cpp index 2e50b0c9..b2b8ca9f 100644 --- a/custom.cpp +++ b/custom.cpp @@ -11265,6 +11265,9 @@ static void start_sync_imm_handler(void) static void vsync_nosync(void) { + if (!nosignal_trigger) { + denise_clearbuffers(); + } nosignal_trigger = true; linear_vpos = 0; vsync_handler_post(); diff --git a/drawing.cpp b/drawing.cpp index 533c16d3..6c185acb 100644 --- a/drawing.cpp +++ b/drawing.cpp @@ -2321,6 +2321,21 @@ void freevidbuffer(int monid, struct vidbuffer *buf) } } +void denise_clearbuffers(void) +{ + int monid = 0; + struct amigadisplay *ad = &adisplays[monid]; + struct vidbuf_description *vidinfo = &ad->gfxvidinfo; + if (vidinfo->outbuffer && vidinfo->outbuffer->locked) { + struct vidbuffer *dst = vidinfo->outbuffer; + uae_u8 *p = dst->bufmem; + for (int y = 0; y < dst->height_allocated; y++) { + memset (p, 0, dst->width_allocated * dst->pixbytes); + p += dst->rowbytes; + } + } +} + void reset_drawing(void) { custom_end_drawing(); diff --git a/include/drawing.h b/include/drawing.h index 4416be69..7b2bc3c3 100644 --- a/include/drawing.h +++ b/include/drawing.h @@ -197,5 +197,6 @@ void set_drawbuffer(void); int gethresolution(void); void denise_update_reg_queue(uae_u16 reg, uae_u16 v, uae_u32 linecnt); void denise_store_restore_registers_queue(bool store, uae_u32 linecnt); +void denise_clearbuffers(void); #endif /* UAE_DRAWING_H */