Make exiting worker thread possible

This commit is contained in:
capitalistspz 2025-03-24 11:31:20 +00:00
parent 062ac500e4
commit 0f13272977

View file

@ -154,7 +154,7 @@ namespace camera
coreinit::OSSleepTicks(Espresso::TIMER_CLOCK / (s_instance.fps - 1)); coreinit::OSSleepTicks(Espresso::TIMER_CLOCK / (s_instance.fps - 1));
} }
} }
cemuLog_logDebug(LogType::Force, "Camera Worker Thread Exited"); coreinit::OSExitThread(0);
} }
sint32 CAMGetMemReq(CAMImageInfo*) sint32 CAMGetMemReq(CAMImageInfo*)
@ -191,7 +191,7 @@ namespace camera
cemu_assert_debug(initInfo->forceDisplay != CAMForceDisplay::DRC); cemu_assert_debug(initInfo->forceDisplay != CAMForceDisplay::DRC);
cemu_assert_debug(initInfo->workMemorySize != 0); cemu_assert_debug(initInfo->workMemorySize != 0);
cemu_assert_debug(initInfo->imageInfo.type == CAMImageType::Default); cemu_assert_debug(initInfo->imageInfo.type == CAMImageType::Default);
s_instance.isExiting = false;
s_instance.fps = initInfo->fps == CAMFps::_15 ? 15 : 30; s_instance.fps = initInfo->fps == CAMFps::_15 ? 15 : 30;
s_instance.initialized = true; s_instance.initialized = true;
s_instance.eventCallback = initInfo->callback; s_instance.eventCallback = initInfo->callback;
@ -261,6 +261,7 @@ namespace camera
if (s_instance.isOpen) if (s_instance.isOpen)
CAMClose(camHandle); CAMClose(camHandle);
coreinit::OSSignalEvent(s_cameraOpenEvent.GetPtr()); coreinit::OSSignalEvent(s_cameraOpenEvent.GetPtr());
coreinit::OSJoinThread(s_cameraWorkerThread, nullptr);
s_instance.initialized = false; s_instance.initialized = false;
} }