2022-06-11 23:01:27 +00:00
|
|
|
/***
|
|
|
|
Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved.
|
|
|
|
|
|
|
|
File: IOProcessorItems.hpp
|
|
|
|
Date: 2022-6-6
|
|
|
|
Author: Reece
|
|
|
|
***/
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
namespace Aurora::IO
|
|
|
|
{
|
|
|
|
struct IOProcessor;
|
|
|
|
struct IOProcessorItem;
|
|
|
|
|
|
|
|
struct IOProcessorItems
|
|
|
|
{
|
2022-06-14 01:14:51 +00:00
|
|
|
AuSPtr<AuLoop::ILSEvent> cvEvent;
|
|
|
|
|
2022-06-11 23:01:27 +00:00
|
|
|
AuList<AuSPtr<IOProcessorItem>> allItems;
|
|
|
|
AuList<AuSPtr<IOProcessorItem>> onTickReceivers;
|
|
|
|
AuList<AuSPtr<IOProcessorItem>> onOtherReceivers;
|
|
|
|
|
|
|
|
AuList<AuSPtr<IOProcessorItem>> registeredIO;
|
|
|
|
|
2023-06-28 09:33:12 +00:00
|
|
|
AuThreadPrimitives::CriticalSection mutex;
|
2022-06-11 23:01:27 +00:00
|
|
|
AuList<AuSPtr<IOProcessorItem>> workSignaled;
|
2023-06-28 09:33:12 +00:00
|
|
|
AuThreadPrimitives::CriticalSection mutex2;
|
2022-06-11 23:01:27 +00:00
|
|
|
AuList<AuSPtr<IOProcessorItem>> workSignaled2;
|
|
|
|
|
|
|
|
AuList<AuSPtr<IOProcessorItem>> finalizeQueue;
|
|
|
|
AuList<AuPair<AuSPtr<IOProcessorItem>, bool>> crossThreadAbort;
|
|
|
|
|
|
|
|
bool Init();
|
2023-12-11 20:18:36 +00:00
|
|
|
void Deinit();
|
2022-06-11 23:01:27 +00:00
|
|
|
|
|
|
|
bool AddFrameTemp(const AuSPtr<IOProcessorItem> &item);
|
|
|
|
bool AddFrameOrFallback(const AuSPtr<IOProcessorItem> &item);
|
|
|
|
|
|
|
|
bool ScheduleFinish(const AuSPtr<IOProcessorItem> &item, bool unsafe);
|
|
|
|
|
|
|
|
AuList<AuSPtr<IOProcessorItem>> GetBlockedSignals();
|
|
|
|
};
|
|
|
|
}
|