diff options
| author | 2025-08-31 18:58:57 -0500 | |
|---|---|---|
| committer | 2025-09-01 01:58:57 +0200 | |
| commit | c346566cd8d85e3cf070674cc2839aecc7fff3e3 (patch) | |
| tree | 5ba1fcfbbfed1ac5095115bf5e847e882db2dcf9 | |
| parent | 5514fe64de1b01ae5c2c476abacf57e594aa0335 (diff) | |
diserial.cpp: Avoid updating data frame if nothing changed (#14105)
| -rw-r--r-- | src/emu/diserial.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
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; |
