]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Clear chipset frame when entering genlock no sync state.
authorToni Wilen <twilen@winuae.net>
Sat, 1 Nov 2025 13:50:20 +0000 (15:50 +0200)
committerToni Wilen <twilen@winuae.net>
Sat, 1 Nov 2025 13:50:20 +0000 (15:50 +0200)
custom.cpp
drawing.cpp
include/drawing.h

index 2e50b0c9fc9cfb0a028f7dbafeb73ce02306af12..b2b8ca9f8955e0c501f64102a8f1d376fbe60363 100644 (file)
@@ -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();
index 533c16d3cd628a1be0e66fd82510b70d941c3d7a..6c185acb0c863ce0d3b91f589047a3f4a907d3ef 100644 (file)
@@ -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();
index 4416be6986d8177fbeb0923a4478f4110ecf639d..7b2bc3c397c3cc9ef49ceed6849bfdc2b88a84fa 100644 (file)
@@ -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 */