From c346566cd8d85e3cf070674cc2839aecc7fff3e3 Mon Sep 17 00:00:00 2001 From: Mark Garlanger Date: Sun, 31 Aug 2025 18:58:57 -0500 Subject: diserial.cpp: Avoid updating data frame if nothing changed (#14105) --- src/emu/diserial.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/emu/diserial.cpp b/src/emu/diserial.cpp index 839417a8188..eb50741eb5a 100644 --- a/src/emu/diserial.cpp +++ b/src/emu/diserial.cpp @@ -154,6 +154,10 @@ void device_serial_interface::set_data_frame(int start_bit_count, int data_bit_c { LOGMASKED(LOG_SETUP, "Start bits: %d; Data bits: %d; Parity: %s; Stop bits: %s\n", start_bit_count, data_bit_count, parity_tostring(parity), stop_bits_tostring(stop_bits)); + bool df_changed = (start_bit_count != m_df_start_bit_count) || (data_bit_count != m_df_word_length) || (parity != m_df_parity); + u8 orig_stop_bit_count = m_df_stop_bit_count; + u8 orig_min_rx_stop_bit_count = m_df_min_rx_stop_bit_count; + m_df_word_length = data_bit_count; switch (stop_bits) @@ -180,6 +184,15 @@ void device_serial_interface::set_data_frame(int start_bit_count, int data_bit_c break; } + df_changed |= (m_df_stop_bit_count != orig_stop_bit_count) || (m_df_min_rx_stop_bit_count != orig_min_rx_stop_bit_count); + + if (!df_changed) + { + LOGMASKED(LOG_SETUP, "No change to data frame, skipping\n"); + + return; + } + m_df_parity = parity; m_df_start_bit_count = start_bit_count; -- cgit v1.2.3