60 lines
1.4 KiB
C++
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<Loop::ILoopSource> &source, const AuSPtr<Loop::ILoopSourceSubscriber> &subscriber)
|
||
|
{
|
||
|
auto ret = LoopQueue::AddCallback(source, subscriber);
|
||
|
if (ret)
|
||
|
{
|
||
|
this->commitPending_ = true;
|
||
|
}
|
||
|
return ret;
|
||
|
}
|
||
|
|
||
|
bool AsyncLoop::AddCallbackEx(const AuSPtr<Loop::ILoopSource> &source, const AuSPtr<Loop::ILoopSourceSubscriberEx> &subscriber)
|
||
|
{
|
||
|
auto ret = LoopQueue::AddCallbackEx(source, subscriber);
|
||
|
if (ret)
|
||
|
{
|
||
|
this->commitPending_ = true;
|
||
|
}
|
||
|
return ret;
|
||
|
}
|
||
|
|
||
|
bool AsyncLoop::AddCallback(const AuSPtr<Loop::ILoopSourceSubscriber> &subscriber)
|
||
|
{
|
||
|
auto ret = LoopQueue::AddCallback(subscriber);
|
||
|
if (ret)
|
||
|
{
|
||
|
this->commitPending_ = true;
|
||
|
}
|
||
|
return ret;
|
||
|
}
|
||
|
|
||
|
bool AsyncLoop::Commit()
|
||
|
{
|
||
|
this->commitPending_ = true;
|
||
|
return true;
|
||
|
}
|
||
|
}
|