From 300ff08f23a07d9961ddc16dbfb26660990f126b Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sun, 23 Mar 2025 14:34:44 +0200 Subject: [PATCH] Restore interlace filter change detection. --- custom.cpp | 21 +++++++++++++++++ drawing.cpp | 58 ----------------------------------------------- include/drawing.h | 2 -- 3 files changed, 21 insertions(+), 60 deletions(-) diff --git a/custom.cpp b/custom.cpp index 7eac62e8..666d4f18 100644 --- a/custom.cpp +++ b/custom.cpp @@ -5169,11 +5169,32 @@ static void check_interlace(void) if (is != interlace_seen) { interlace_seen = is; init_hz(); + changed = true; } else if (nis) { interlace_seen = 0; init_hz(); } + if (changed) { + if (currprefs.gf[GF_INTERLACE].enable && memcmp(&currprefs.gf[GF_NORMAL], &currprefs.gf[GF_INTERLACE], sizeof(struct gfx_filterdata))) { + changed_prefs.gf[GF_NORMAL].changed = true; + changed_prefs.gf[GF_INTERLACE].changed = true; + if (ad->interlace_on != (interlace_seen != 0)) { + ad->interlace_on = interlace_seen != 0; + set_config_changed(); + } + } + } + if (!ad->picasso_on) { + if (ad->interlace_on) { + ad->gf_index = GF_INTERLACE; + } else { + ad->gf_index = GF_NORMAL; + } + } else { + ad->gf_index = GF_RTG; + } + prevlofs[2] = prevlofs[1]; prevlofs[1] = prevlofs[0]; prevlofs[0] = lof_display; diff --git a/drawing.cpp b/drawing.cpp index b06a1fa1..886177ff 100644 --- a/drawing.cpp +++ b/drawing.cpp @@ -2120,64 +2120,6 @@ static void gfxbuffer_reset(int monid) vidinfo->drawbuffer.unlockscr = dummy_unlock; } -void notice_resolution_seen (int res, bool lace) -{ - if (res > frame_res) - frame_res = res; - if (res > 0) - can_use_lores = 0; - if (!frame_res_lace && lace) - frame_res_lace = lace; -} - -bool notice_interlace_seen (int monid, bool lace) -{ - struct amigadisplay *ad = &adisplays[0]; - bool changed = false; - bool interlace_on = false; - - // non-lace to lace switch (non-lace active at least one frame)? - if (lace) { - if (interlace_seen == 0) { - changed = true; - interlace_on = true; - //write_log (_T("->lace PC=%x\n"), m68k_getpc ()); - } - interlace_seen = currprefs.gfx_vresolution ? 1 : -1; - } else { - if (interlace_seen) { - changed = true; - //write_log (_T("->non-lace PC=%x\n"), m68k_getpc ()); - } - interlace_seen = 0; - } - - if (changed) { - if (currprefs.gf[GF_INTERLACE].enable && memcmp(&currprefs.gf[GF_NORMAL], &currprefs.gf[GF_INTERLACE], sizeof(struct gfx_filterdata))) { - changed_prefs.gf[GF_NORMAL].changed = true; - changed_prefs.gf[GF_INTERLACE].changed = true; - if (ad->interlace_on != interlace_on) { - ad->interlace_on = interlace_on; - set_config_changed(); - } - } else { - ad->interlace_on = false; - } - } - - if (!ad->picasso_on) { - if (ad->interlace_on) { - ad->gf_index = GF_INTERLACE; - } else { - ad->gf_index = GF_NORMAL; - } - } else { - ad->gf_index = GF_RTG; - } - - return changed; -} - void allocvidbuffer(int monid, struct vidbuffer *buf, int width, int height, int depth) { memset(buf, 0, sizeof (struct vidbuffer)); diff --git a/include/drawing.h b/include/drawing.h index 7ce53836..4a5b938c 100644 --- a/include/drawing.h +++ b/include/drawing.h @@ -117,8 +117,6 @@ extern void vsync_handle_redraw (int long_field, int lof_changed, uae_u16, uae_u extern bool vsync_handle_check (void); extern void reset_drawing (void); extern void drawing_init (void); -extern bool notice_interlace_seen(int, bool); -extern void notice_resolution_seen(int, bool); extern bool frame_drawn (int monid); extern void redraw_frame(void); extern void full_redraw_all(void); -- 2.47.3