]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Unlock drawing buffer when GUI or dialogs are opened. (Fullscreen F12 crash fix)...
authorToni Wilen <twilen@winuae.net>
Wed, 9 Jul 2025 15:54:25 +0000 (18:54 +0300)
committerToni Wilen <twilen@winuae.net>
Wed, 9 Jul 2025 15:54:25 +0000 (18:54 +0300)
custom.cpp
drawing.cpp
include/drawing.h
od-win32/win32gui.cpp

index 4c63f664e89cd15efa025a877770970e95977ab3..7994837600f77cd576b68297f615edcfa18a6d0e 100644 (file)
@@ -5056,18 +5056,13 @@ static void vsync_display_render(void)
                vsyncmintimepre = read_processor_time();
 
                if (!custom_disabled) {
-                       if (!has_draw_denise()) {
-                               start_draw_denise();
-                       }
+                       start_draw_denise();
                        draw_denise_vsync_queue(display_redraw);
                        display_redraw = false;
                }
 
                draw_denise_line_queue_flush();
-
-               if (has_draw_denise()) {
-                       end_draw_denise();
-               }
+               end_draw_denise();
                vsync_handler_render();
                if (!custom_disabled) {
                        start_draw_denise();
@@ -6996,10 +6991,7 @@ void custom_reset(bool hardreset, bool keyboardreset)
        setmaxhpos();
        resetfulllinestate();
        updateprghpostable();
-
-       if (!has_draw_denise()) {
-               start_draw_denise();
-       }
+       start_draw_denise();
 
 #ifdef ACTION_REPLAY
        /* Doing this here ensures we can use the 'reset' command from within AR */
@@ -10991,9 +10983,7 @@ static void dmal_fast(void)
 
 static void do_draw_line(void)
 {
-       if (!has_draw_denise()) {
-               start_draw_denise();
-       }
+       start_draw_denise();
 
        if (custom_fastmode_exit) {
                custom_fastmode_exit = 0;
@@ -12737,8 +12727,5 @@ bool ispal(int *lines)
 void custom_end_drawing(void)
 {
        draw_denise_line_queue_flush();
-       if (has_draw_denise()) {
-               write_log("flushing denise draw queue\n");
-               end_draw_denise();
-       }
+       end_draw_denise();
 }
index 66c5510bac65dd306badd52dff827444ac3de259..e98190807f3bd294205b640f112782ca62af9ae2 100644 (file)
@@ -5031,11 +5031,6 @@ void denise_restore_registers(void)
        expand_fmode(s_fmode);
 }
 
-bool has_draw_denise(void)
-{
-       return thread_debug_lock;
-}
-
 void set_drawbuffer(void)
 {
        struct vidbuf_description *vidinfo = &adisplays[0].gfxvidinfo;
@@ -5060,12 +5055,12 @@ bool start_draw_denise(void)
        struct vidbuf_description *vidinfo = &adisplays[0].gfxvidinfo;
        struct vidbuffer *vb = &vidinfo->drawbuffer;
 
-       vidinfo->outbuffer = vb;
-
        if (thread_debug_lock) {
-               write_log("start_draw_denise: thread_debug_lock already set!");
+               return true;
        }
 
+       vidinfo->outbuffer = vb;
+
        if (!lockscr(vb, false, display_reset > 0)) {
                return false;
        }
@@ -5089,10 +5084,6 @@ void end_draw_denise(void)
        struct vidbuf_description *vidinfo = &adisplays[0].gfxvidinfo;
        struct vidbuffer *vb = &vidinfo->drawbuffer;
 
-       if (!thread_debug_lock) {
-               write_log("end_draw_denise: thread_debug_lock not set!\n");
-       }
-
        draw_denise_line_queue_flush();
 
        thread_debug_lock = false;
index 3375d638ea6afd479301b4c92f34a0807a142611..0b67eb7f4d822ca798e34ed5f0d611257dfa7538 100644 (file)
@@ -183,7 +183,6 @@ void draw_denise_border_line_fast(int gfx_ypos, enum nln_how how, struct linesta
 void draw_denise_border_line_fast_queue(int gfx_ypos, enum nln_how how, struct linestate *ls);
 bool start_draw_denise(void);
 void end_draw_denise(void);
-bool has_draw_denise(void);
 void denise_reset(bool);
 bool denise_update_reg_queued(uae_u16 reg, uae_u16 v, uae_u32 linecnt);
 void denise_store_registers(void);
index 3dfa4cb93db7d0a541f63c70821da307c1adeac6..1b6b5db66ecd209d92d839298596f87e25c13afc 100644 (file)
@@ -2309,6 +2309,7 @@ static void m(int monid)
 
 static void flipgui(int opengui)
 {
+       end_draw_denise();
        D3D_guimode(0, opengui);
        if (full_property_sheet)
                return;