mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-01-30 12:32:43 +00:00
rsxaudio: fix ensure order
This commit is contained in:
parent
f594f485a4
commit
7c9a38e0f3
@ -955,10 +955,8 @@ void rsxaudio_data_thread::update_hw_param(std::function<void(rsxaudio_hw_param_
|
||||
{
|
||||
return port_cfg[static_cast<u8>(RsxaudioAvportIdx::AVMULTI)];
|
||||
}
|
||||
else
|
||||
{
|
||||
return rsxaudio_backend_thread::port_config{static_cast<AudioFreq>(new_hw_param->spdif_freq_base / new_hw_param->spdif[spdif_idx].freq_div), AudioChannelCnt::STEREO};
|
||||
}
|
||||
|
||||
return rsxaudio_backend_thread::port_config{static_cast<AudioFreq>(new_hw_param->spdif_freq_base / new_hw_param->spdif[spdif_idx].freq_div), AudioChannelCnt::STEREO};
|
||||
};
|
||||
|
||||
port_cfg[static_cast<u8>(RsxaudioAvportIdx::SPDIF_0)] = gen_spdif_port_cfg(0);
|
||||
@ -970,10 +968,8 @@ void rsxaudio_data_thread::update_hw_param(std::function<void(rsxaudio_hw_param_
|
||||
{
|
||||
return rsxaudio_backend_thread::port_config{port_cfg[static_cast<u8>(RsxaudioAvportIdx::SPDIF_1)].freq, new_hw_param->hdmi[hdmi_idx].ch_cfg.total_ch_cnt};
|
||||
}
|
||||
else
|
||||
{
|
||||
return rsxaudio_backend_thread::port_config{port_cfg[static_cast<u8>(RsxaudioAvportIdx::AVMULTI)].freq, new_hw_param->hdmi[hdmi_idx].ch_cfg.total_ch_cnt};
|
||||
}
|
||||
|
||||
return rsxaudio_backend_thread::port_config{port_cfg[static_cast<u8>(RsxaudioAvportIdx::AVMULTI)].freq, new_hw_param->hdmi[hdmi_idx].ch_cfg.total_ch_cnt};
|
||||
};
|
||||
|
||||
port_cfg[static_cast<u8>(RsxaudioAvportIdx::HDMI_0)] = gen_hdmi_port_cfg(0);
|
||||
@ -1123,10 +1119,8 @@ rsxaudio_backend_thread::avport_bit rsxaudio_data_thread::calc_avport_mute_state
|
||||
// TODO: HW test if both serial and spdif mutes are used in serial mode for spdif
|
||||
return !serial_active || hwp.spdif[spdif_port].freq_div != hwp.serial.freq_div || hwp.serial.muted || hwp.spdif[spdif_port].muted;
|
||||
}
|
||||
else
|
||||
{
|
||||
return !spdif_active[spdif_port] || hwp.spdif[spdif_port].muted;
|
||||
}
|
||||
|
||||
return !spdif_active[spdif_port] || hwp.spdif[spdif_port].muted;
|
||||
};
|
||||
|
||||
auto hdmi_muted = [&](u8 hdmi_idx)
|
||||
@ -1137,10 +1131,8 @@ rsxaudio_backend_thread::avport_bit rsxaudio_data_thread::calc_avport_mute_state
|
||||
{
|
||||
return spdif_muted(1) || hwp.hdmi[hdmi_port].muted || hwp.hdmi[hdmi_port].force_mute || !hwp.hdmi[hdmi_port].init;
|
||||
}
|
||||
else
|
||||
{
|
||||
return !serial_active || hwp.serial.muted || hwp.hdmi[hdmi_port].muted || hwp.hdmi[hdmi_port].force_mute || !hwp.hdmi[hdmi_port].init;
|
||||
}
|
||||
|
||||
return !serial_active || hwp.serial.muted || hwp.hdmi[hdmi_port].muted || hwp.hdmi[hdmi_port].force_mute || !hwp.hdmi[hdmi_port].init;
|
||||
};
|
||||
|
||||
return { hdmi_muted(0), hdmi_muted(1), avmulti, spdif_muted(0), spdif_muted(1) };
|
||||
@ -1159,10 +1151,8 @@ bool rsxaudio_data_thread::calc_port_active_state(RsxaudioPort port, const rsxau
|
||||
{
|
||||
return gen_serial_active() && (hwp.spdif[spdif_idx].freq_div == hwp.serial.freq_div);
|
||||
}
|
||||
else
|
||||
{
|
||||
return hwp.spdif[spdif_idx].dma_en && hwp.spdif[spdif_idx].buf_empty_en && hwp.spdif[spdif_idx].en;
|
||||
}
|
||||
|
||||
return hwp.spdif[spdif_idx].dma_en && hwp.spdif[spdif_idx].buf_empty_en && hwp.spdif[spdif_idx].en;
|
||||
};
|
||||
|
||||
switch (port)
|
||||
@ -2214,21 +2204,21 @@ rsxaudio_periodic_tmr::wait_result rsxaudio_periodic_tmr::wait(const std::functi
|
||||
{
|
||||
return wait_result::TIMER_ERROR;
|
||||
}
|
||||
else if (timeout)
|
||||
|
||||
if (timeout)
|
||||
{
|
||||
return wait_result::TIMEOUT;
|
||||
}
|
||||
else if (wait_canceled)
|
||||
|
||||
if (wait_canceled)
|
||||
{
|
||||
sched_timer();
|
||||
return wait_result::TIMER_CANCELED;
|
||||
}
|
||||
else
|
||||
{
|
||||
callback();
|
||||
sched_timer();
|
||||
return wait_result::SUCCESS;
|
||||
}
|
||||
|
||||
callback();
|
||||
sched_timer();
|
||||
return wait_result::SUCCESS;
|
||||
}
|
||||
|
||||
u64 rsxaudio_periodic_tmr::get_rel_next_time()
|
||||
@ -2299,17 +2289,19 @@ void rsxaudio_periodic_tmr::disable_vtimer(u32 vtimer_id)
|
||||
|
||||
bool rsxaudio_periodic_tmr::is_vtimer_behind(u32 vtimer_id, u64 crnt_time) const
|
||||
{
|
||||
const vtimer& vtimer = vtmr_pool[vtimer_id];
|
||||
ensure(vtimer_id < VTIMER_MAX);
|
||||
|
||||
const vtimer& vtimer = vtmr_pool[vtimer_id];
|
||||
|
||||
return is_vtimer_behind(vtimer, crnt_time);
|
||||
}
|
||||
|
||||
void rsxaudio_periodic_tmr::vtimer_skip_periods(u32 vtimer_id, u64 crnt_time)
|
||||
{
|
||||
vtimer& vtimer = vtmr_pool[vtimer_id];
|
||||
ensure(vtimer_id < VTIMER_MAX);
|
||||
|
||||
vtimer& vtimer = vtmr_pool[vtimer_id];
|
||||
|
||||
if (is_vtimer_behind(vtimer, crnt_time))
|
||||
{
|
||||
vtimer.blk_cnt = get_crnt_blk(crnt_time, vtimer.blk_time);
|
||||
@ -2318,9 +2310,10 @@ void rsxaudio_periodic_tmr::vtimer_skip_periods(u32 vtimer_id, u64 crnt_time)
|
||||
|
||||
void rsxaudio_periodic_tmr::vtimer_incr(u32 vtimer_id, u64 crnt_time)
|
||||
{
|
||||
vtimer& vtimer = vtmr_pool[vtimer_id];
|
||||
ensure(vtimer_id < VTIMER_MAX);
|
||||
|
||||
vtimer& vtimer = vtmr_pool[vtimer_id];
|
||||
|
||||
if (is_vtimer_behind(vtimer, crnt_time))
|
||||
{
|
||||
vtimer.blk_cnt++;
|
||||
@ -2329,17 +2322,19 @@ void rsxaudio_periodic_tmr::vtimer_incr(u32 vtimer_id, u64 crnt_time)
|
||||
|
||||
bool rsxaudio_periodic_tmr::is_vtimer_active(u32 vtimer_id) const
|
||||
{
|
||||
const vtimer& vtimer = vtmr_pool[vtimer_id];
|
||||
ensure(vtimer_id < VTIMER_MAX);
|
||||
|
||||
const vtimer& vtimer = vtmr_pool[vtimer_id];
|
||||
|
||||
return vtimer.active;
|
||||
}
|
||||
|
||||
u64 rsxaudio_periodic_tmr::vtimer_get_sched_time(u32 vtimer_id) const
|
||||
{
|
||||
const vtimer& vtimer = vtmr_pool[vtimer_id];
|
||||
ensure(vtimer_id < VTIMER_MAX);
|
||||
|
||||
const vtimer& vtimer = vtmr_pool[vtimer_id];
|
||||
|
||||
return static_cast<u64>(vtimer.blk_cnt * vtimer.blk_time);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user