mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-12-06 07:12:28 +01:00
cellGam/celCamera: Add more wait flags
This commit is contained in:
parent
e6dc0d98f5
commit
f992ccdcad
|
|
@ -1139,8 +1139,10 @@ error_code cellCameraGetBufferInfo(s32 dev_num, vm::ptr<CellCameraInfo> info)
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
error_code cellCameraGetBufferInfoEx(s32 dev_num, vm::ptr<CellCameraInfoEx> info)
|
||||
error_code cellCameraGetBufferInfoEx(ppu_thread& ppu, s32 dev_num, vm::ptr<CellCameraInfoEx> info)
|
||||
{
|
||||
ppu.state += cpu_flag::wait;
|
||||
|
||||
cellCamera.notice("cellCameraGetBufferInfoEx(dev_num=%d, info=0x%x)", dev_num, info);
|
||||
|
||||
// calls cellCameraGetBufferInfo
|
||||
|
|
@ -1151,10 +1153,16 @@ error_code cellCameraGetBufferInfoEx(s32 dev_num, vm::ptr<CellCameraInfoEx> info
|
|||
}
|
||||
|
||||
auto& g_camera = g_fxo->get<camera_thread>();
|
||||
std::lock_guard lock(g_camera.mutex);
|
||||
|
||||
*info = g_camera.info;
|
||||
CellCameraInfoEx info_out;
|
||||
|
||||
{
|
||||
std::lock_guard lock(g_camera.mutex);
|
||||
|
||||
info_out = g_camera.info;
|
||||
}
|
||||
|
||||
*info = info_out;
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2308,8 +2308,10 @@ error_code cellGemConvertVideoFinish(ppu_thread& ppu)
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
error_code cellGemConvertVideoStart(vm::cptr<void> video_frame)
|
||||
error_code cellGemConvertVideoStart(ppu_thread& ppu, vm::cptr<void> video_frame)
|
||||
{
|
||||
ppu.state += cpu_flag::wait;
|
||||
|
||||
cellGem.warning("cellGemConvertVideoStart(video_frame=*0x%x)", video_frame);
|
||||
|
||||
auto& gem = g_fxo->get<gem_config>();
|
||||
|
|
@ -2461,6 +2463,8 @@ error_code cellGemEnableMagnetometer2(u32 gem_num, u32 enable)
|
|||
|
||||
error_code cellGemEnd(ppu_thread& ppu)
|
||||
{
|
||||
ppu.state += cpu_flag::wait;
|
||||
|
||||
cellGem.warning("cellGemEnd()");
|
||||
|
||||
auto& gem = g_fxo->get<gem_config>();
|
||||
|
|
@ -3265,7 +3269,7 @@ error_code cellGemPrepareCamera(s32 max_exposure, f32 image_quality)
|
|||
|
||||
extern error_code cellCameraGetAttribute(s32 dev_num, s32 attrib, vm::ptr<u32> arg1, vm::ptr<u32> arg2);
|
||||
extern error_code cellCameraSetAttribute(s32 dev_num, s32 attrib, u32 arg1, u32 arg2);
|
||||
extern error_code cellCameraGetBufferInfoEx(s32 dev_num, vm::ptr<CellCameraInfoEx> info);
|
||||
extern error_code cellCameraGetBufferInfoEx(ppu_thread&, s32 dev_num, vm::ptr<CellCameraInfoEx> info);
|
||||
|
||||
vm::var<CellCameraInfoEx> info = vm::make_var<CellCameraInfoEx>({});
|
||||
vm::var<u32> arg1 = vm::make_var<u32>({});
|
||||
|
|
@ -3273,7 +3277,7 @@ error_code cellGemPrepareCamera(s32 max_exposure, f32 image_quality)
|
|||
|
||||
cellCameraGetAttribute(0, 0x3e6, arg1, arg2);
|
||||
cellCameraSetAttribute(0, 0x3e6, 0x3e, *arg2 | 0x80);
|
||||
cellCameraGetBufferInfoEx(0, info);
|
||||
cellCameraGetBufferInfoEx(*cpu_thread::get_current<ppu_thread>(), 0, info);
|
||||
|
||||
if (info->width == 640)
|
||||
{
|
||||
|
|
@ -3605,6 +3609,8 @@ error_code cellGemTrackHues(vm::cptr<u32> req_hues, vm::ptr<u32> res_hues)
|
|||
|
||||
error_code cellGemUpdateFinish(ppu_thread& ppu)
|
||||
{
|
||||
ppu.state += cpu_flag::wait;
|
||||
|
||||
cellGem.warning("cellGemUpdateFinish()");
|
||||
|
||||
auto& gem = g_fxo->get<gem_config>();
|
||||
|
|
|
|||
Loading…
Reference in a new issue