19 #ifndef MIR_COMPOSITOR_MULTI_THREADED_COMPOSITOR_H_ 20 #define MIR_COMPOSITOR_MULTI_THREADED_COMPOSITOR_H_ 34 namespace geometry {
class Rectangle; }
47 class DisplayBufferCompositorFactory;
48 class DisplayListener;
49 class CompositingFunctor;
51 class CompositorReport;
65 std::shared_ptr<graphics::Display>
const& display,
66 std::shared_ptr<Scene>
const& scene,
67 std::shared_ptr<DisplayBufferCompositorFactory>
const& db_compositor_factory,
68 std::shared_ptr<DisplayListener>
const& display_listener,
69 std::shared_ptr<CompositorReport>
const& compositor_report,
70 std::chrono::milliseconds fixed_composite_delay,
71 bool compose_on_start);
78 void create_compositing_threads();
79 void destroy_compositing_threads();
81 std::shared_ptr<graphics::Display>
const display;
82 std::shared_ptr<Scene>
const scene;
83 std::shared_ptr<DisplayBufferCompositorFactory>
const display_buffer_compositor_factory;
84 std::shared_ptr<DisplayListener>
const display_listener;
85 std::shared_ptr<CompositorReport>
const report;
87 std::vector<std::unique_ptr<CompositingFunctor>> thread_functors;
88 std::vector<std::future<void>> futures;
90 std::atomic<CompositorState> state;
91 std::chrono::milliseconds fixed_composite_delay;
92 bool compose_on_start;
94 void schedule_compositing(
int number_composites);
97 std::shared_ptr<mir::scene::Observer> observer;
All things Mir.
Definition: atomic_callback.h:25
CompositorState
Definition: multi_threaded_compositor.h:53
Definition: multi_threaded_compositor.h:61
Definition: basic_thread_pool.h:34
std::promise< bool > stop
Definition: in.cpp:28
Definition: rectangle.h:33
Definition: compositor.h:27