AuroraRuntime/Source/Async/ThreadWorkerQueueShim.cpp

60 lines
1.4 KiB
C++

/***
Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved.
File: ThreadWorkerQueueShim.cpp
Date: 2022-3-9
Author: Reece
***/
#include <Source/RuntimeInternal.hpp>
#include "Async.hpp"
#include "ThreadWorkerQueueShim.hpp"
namespace Aurora::Async
{
void AsyncLoop::OnFrame()
{
if (this->commitPending_)
{
if (LoopQueue::Commit())
{
this->commitPending_ = false;
}
}
}
bool AsyncLoop::AddCallback(const AuSPtr<AuLoop::ILoopSource> &source, const AuSPtr<AuLoop::ILoopSourceSubscriber> &subscriber)
{
auto ret = LoopQueue::AddCallback(source, subscriber);
if (ret)
{
this->commitPending_ = true;
}
return ret;
}
bool AsyncLoop::AddCallbackEx(const AuSPtr<AuLoop::ILoopSource> &source, const AuSPtr<AuLoop::ILoopSourceSubscriberEx> &subscriber)
{
auto ret = LoopQueue::AddCallbackEx(source, subscriber);
if (ret)
{
this->commitPending_ = true;
}
return ret;
}
bool AsyncLoop::AddCallback(const AuSPtr<AuLoop::ILoopSourceSubscriber> &subscriber)
{
auto ret = LoopQueue::AddCallback(subscriber);
if (ret)
{
this->commitPending_ = true;
}
return ret;
}
bool AsyncLoop::Commit()
{
this->commitPending_ = true;
return true;
}
}