mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-29 22:20:48 +00:00
cellGem: move some locks around wait loops
This commit is contained in:
parent
fcac6a9322
commit
fbc7ad6788
@ -2440,7 +2440,7 @@ error_code cellGemEnd(ppu_thread& ppu)
|
|||||||
|
|
||||||
auto& gem = g_fxo->get<gem_config>();
|
auto& gem = g_fxo->get<gem_config>();
|
||||||
|
|
||||||
std::scoped_lock lock(gem.mtx);
|
std::unique_lock lock(gem.mtx);
|
||||||
|
|
||||||
if (gem.state.compare_and_swap_test(1, 0))
|
if (gem.state.compare_and_swap_test(1, 0))
|
||||||
{
|
{
|
||||||
@ -2452,6 +2452,8 @@ error_code cellGemEnd(ppu_thread& ppu)
|
|||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lock.unlock();
|
||||||
|
|
||||||
auto& tracker = g_fxo->get<named_thread<gem_tracker>>();
|
auto& tracker = g_fxo->get<named_thread<gem_tracker>>();
|
||||||
if (!tracker.wait_for_tracker_result(ppu))
|
if (!tracker.wait_for_tracker_result(ppu))
|
||||||
{
|
{
|
||||||
@ -2488,7 +2490,7 @@ error_code cellGemFilterState(u32 gem_num, u32 enable)
|
|||||||
|
|
||||||
error_code cellGemForceRGB(u32 gem_num, f32 r, f32 g, f32 b)
|
error_code cellGemForceRGB(u32 gem_num, f32 r, f32 g, f32 b)
|
||||||
{
|
{
|
||||||
cellGem.todo("cellGemForceRGB(gem_num=%d, r=%f, g=%f, b=%f)", gem_num, r, g, b);
|
cellGem.warning("cellGemForceRGB(gem_num=%d, r=%f, g=%f, b=%f)", gem_num, r, g, b);
|
||||||
|
|
||||||
auto& gem = g_fxo->get<gem_config>();
|
auto& gem = g_fxo->get<gem_config>();
|
||||||
|
|
||||||
@ -3557,8 +3559,6 @@ error_code cellGemUpdateFinish(ppu_thread& ppu)
|
|||||||
return CELL_GEM_ERROR_UNINITIALIZED;
|
return CELL_GEM_ERROR_UNINITIALIZED;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::scoped_lock lock(gem.mtx);
|
|
||||||
|
|
||||||
if (!gem.updating)
|
if (!gem.updating)
|
||||||
{
|
{
|
||||||
return CELL_GEM_ERROR_UPDATE_NOT_STARTED;
|
return CELL_GEM_ERROR_UPDATE_NOT_STARTED;
|
||||||
@ -3570,6 +3570,8 @@ error_code cellGemUpdateFinish(ppu_thread& ppu)
|
|||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::scoped_lock lock(gem.mtx);
|
||||||
|
|
||||||
gem.updating = false;
|
gem.updating = false;
|
||||||
|
|
||||||
if (!gem.camera_frame)
|
if (!gem.camera_frame)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user