mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-08 16:01:42 +12:00
LV2_LOCK removed
This commit is contained in:
parent
eebd48e51d
commit
bf6854d121
5 changed files with 21 additions and 53 deletions
|
@ -274,7 +274,7 @@ void audio_config::on_task()
|
||||||
|
|
||||||
// send aftermix event (normal audio event)
|
// send aftermix event (normal audio event)
|
||||||
|
|
||||||
LV2_LOCK;
|
semaphore_lock lock(mutex);
|
||||||
|
|
||||||
for (u64 key : keys)
|
for (u64 key : keys)
|
||||||
{
|
{
|
||||||
|
@ -702,7 +702,7 @@ s32 cellAudioSetNotifyEventQueue(u64 key)
|
||||||
return CELL_AUDIO_ERROR_NOT_INIT;
|
return CELL_AUDIO_ERROR_NOT_INIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
LV2_LOCK;
|
semaphore_lock lock(g_audio->mutex);
|
||||||
|
|
||||||
for (auto k : g_audio->keys) // check for duplicates
|
for (auto k : g_audio->keys) // check for duplicates
|
||||||
{
|
{
|
||||||
|
@ -737,7 +737,7 @@ s32 cellAudioRemoveNotifyEventQueue(u64 key)
|
||||||
return CELL_AUDIO_ERROR_NOT_INIT;
|
return CELL_AUDIO_ERROR_NOT_INIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
LV2_LOCK;
|
semaphore_lock lock(g_audio->mutex);
|
||||||
|
|
||||||
for (auto i = g_audio->keys.begin(); i != g_audio->keys.end(); i++)
|
for (auto i = g_audio->keys.begin(); i != g_audio->keys.end(); i++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -137,6 +137,8 @@ public:
|
||||||
|
|
||||||
std::vector<u64> keys;
|
std::vector<u64> keys;
|
||||||
|
|
||||||
|
semaphore<> mutex;
|
||||||
|
|
||||||
audio_config()
|
audio_config()
|
||||||
{
|
{
|
||||||
for (u32 i = 0; i < AUDIO_PORT_COUNT; i++)
|
for (u32 i = 0; i < AUDIO_PORT_COUNT; i++)
|
||||||
|
|
|
@ -1015,5 +1015,3 @@ extern ppu_function_t ppu_get_syscall(u64 code)
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
DECLARE(lv2_lock_guard::g_sema);
|
|
||||||
|
|
|
@ -106,27 +106,3 @@ struct lv2_obj
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Temporary implementation for LV2_UNLOCK (TODO: remove it)
|
|
||||||
struct lv2_lock_guard
|
|
||||||
{
|
|
||||||
static semaphore<> g_sema;
|
|
||||||
|
|
||||||
lv2_lock_guard(const lv2_lock_guard&) = delete;
|
|
||||||
|
|
||||||
lv2_lock_guard()
|
|
||||||
{
|
|
||||||
g_sema.post();
|
|
||||||
}
|
|
||||||
|
|
||||||
~lv2_lock_guard()
|
|
||||||
{
|
|
||||||
g_sema.wait();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
using lv2_lock_t = semaphore_lock&;
|
|
||||||
|
|
||||||
#define LV2_LOCK semaphore_lock lv2_lock(lv2_lock_guard::g_sema)
|
|
||||||
|
|
||||||
#define LV2_UNLOCK lv2_lock_guard{}
|
|
||||||
|
|
|
@ -418,20 +418,16 @@ void Emulator::Resume()
|
||||||
|
|
||||||
SendDbgCommand(DID_RESUME_EMU);
|
SendDbgCommand(DID_RESUME_EMU);
|
||||||
|
|
||||||
|
auto on_select = [](u32, cpu_thread& cpu)
|
||||||
{
|
{
|
||||||
LV2_LOCK;
|
cpu.state -= cpu_flag::dbg_global_pause;
|
||||||
|
cpu.notify();
|
||||||
|
};
|
||||||
|
|
||||||
auto on_select = [](u32, cpu_thread& cpu)
|
idm::select<ppu_thread>(on_select);
|
||||||
{
|
idm::select<ARMv7Thread>(on_select);
|
||||||
cpu.state -= cpu_flag::dbg_global_pause;
|
idm::select<RawSPUThread>(on_select);
|
||||||
cpu.notify();
|
idm::select<SPUThread>(on_select);
|
||||||
};
|
|
||||||
|
|
||||||
idm::select<ppu_thread>(on_select);
|
|
||||||
idm::select<ARMv7Thread>(on_select);
|
|
||||||
idm::select<RawSPUThread>(on_select);
|
|
||||||
idm::select<SPUThread>(on_select);
|
|
||||||
}
|
|
||||||
|
|
||||||
rpcs3::on_resume()();
|
rpcs3::on_resume()();
|
||||||
|
|
||||||
|
@ -450,20 +446,16 @@ void Emulator::Stop()
|
||||||
rpcs3::on_stop()();
|
rpcs3::on_stop()();
|
||||||
SendDbgCommand(DID_STOP_EMU);
|
SendDbgCommand(DID_STOP_EMU);
|
||||||
|
|
||||||
|
auto on_select = [](u32, cpu_thread& cpu)
|
||||||
{
|
{
|
||||||
LV2_LOCK;
|
cpu.state += cpu_flag::dbg_global_stop;
|
||||||
|
cpu.get()->set_exception(std::make_exception_ptr(EmulationStopped()));
|
||||||
|
};
|
||||||
|
|
||||||
auto on_select = [](u32, cpu_thread& cpu)
|
idm::select<ppu_thread>(on_select);
|
||||||
{
|
idm::select<ARMv7Thread>(on_select);
|
||||||
cpu.state += cpu_flag::dbg_global_stop;
|
idm::select<RawSPUThread>(on_select);
|
||||||
cpu.get()->set_exception(std::make_exception_ptr(EmulationStopped()));
|
idm::select<SPUThread>(on_select);
|
||||||
};
|
|
||||||
|
|
||||||
idm::select<ppu_thread>(on_select);
|
|
||||||
idm::select<ARMv7Thread>(on_select);
|
|
||||||
idm::select<RawSPUThread>(on_select);
|
|
||||||
idm::select<SPUThread>(on_select);
|
|
||||||
}
|
|
||||||
|
|
||||||
LOG_NOTICE(GENERAL, "All threads signaled...");
|
LOG_NOTICE(GENERAL, "All threads signaled...");
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue