Loading...
Searching...
No Matches
GfxExecContext.hpp
1#pragma once
2#include <atomic>
3#include <Process/ExecutionAction.hpp>
4
5#include <Gfx/GfxContext.hpp>
6
7#include <ossia/detail/flat_set.hpp>
8
9#include <memory>
10
11#include <concurrentqueue.h>
12#include <score_plugin_gfx_export.h>
13
14namespace Gfx
15{
16
17class SCORE_PLUGIN_GFX_EXPORT GfxExecutionAction final
19{
20 SCORE_CONCRETE("06f48270-35a4-44d2-929a-e67b8e2904f5")
21public:
22 explicit GfxExecutionAction(GfxContext& w);
24
25 score::gfx::Message allocateMessage(int inputs);
26 void releaseMessage(score::gfx::Message&&);
27
28 void startTick(const ossia::audio_tick_state& st) override;
29 void setEdge(port_index source, port_index sink, Process::CableType t);
30 void endTick(const ossia::audio_tick_state& st) override;
31
34 std::shared_ptr<bool> alive{std::make_shared<bool>(true)};
35
36 GfxContext* ui{};
38 std::atomic<uint64_t> ticks{0};
39
40 std::vector<EdgeSpec> prev_edges;
41 std::vector<EdgeSpec> edges_cache;
42 using edge_queue = moodycamel::ConcurrentQueue<EdgeSpec>;
43 edge_queue incoming_edges;
44};
45
46}
Definition ExecutionAction.hpp:12
Definition GfxContext.hpp:74
Definition GfxExecContext.hpp:19
Binds the rendering pipeline to ossia processes.
Definition AssetTable.cpp:7
Definition score-plugin-gfx/Gfx/Graph/Node.hpp:60