in CppSource/Source/System/user.cpp [57:102]
HC_RESULT XboxLiveUserSignInExecute(
_In_opt_ void* context,
_In_ HC_TASK_HANDLE taskHandle
)
{
xbox_live_result<sign_in_result> result;
auto args = reinterpret_cast<sign_in_taskargs*>(context);
if (args->coreDispatcher == nullptr)
{
if (args->signInSilently)
{
result = args->pUser->pImpl->cppUser()->signin_silently().get();
}
else
{
result = args->pUser->pImpl->cppUser()->signin().get();
}
}
else
{
if (args->signInSilently)
{
result = args->pUser->pImpl->cppUser()->signin_silently(args->coreDispatcher).get();
}
else
{
result = args->pUser->pImpl->cppUser()->signin(args->coreDispatcher).get();
}
}
args->copy_xbox_live_result(result);
if (!result.err())
{
args->completionRoutinePayload.status = static_cast<XSAPI_SIGN_IN_STATUS>(result.payload().status());
args->pUser->pImpl->Refresh();
{
auto singleton = get_xsapi_singleton();
std::lock_guard<std::mutex> lock(singleton->m_usersLock);
singleton->m_signedInUsers[args->pUser->xboxUserId] = args->pUser;
}
}
return HCTaskSetCompleted(taskHandle);
}