19 #ifndef MIR_COMPOSITOR_MULTI_THREADED_COMPOSITOR_H_
20 #define MIR_COMPOSITOR_MULTI_THREADED_COMPOSITOR_H_
46 class DisplayBufferCompositorFactory;
47 class DisplayListener;
48 class CompositingFunctor;
50 class CompositorReport;
64 std::shared_ptr<graphics::Display>
const& display,
65 std::shared_ptr<Scene>
const& scene,
66 std::shared_ptr<DisplayBufferCompositorFactory>
const& db_compositor_factory,
67 std::shared_ptr<DisplayListener>
const& display_listener,
68 std::shared_ptr<CompositorReport>
const& compositor_report,
69 std::chrono::milliseconds fixed_composite_delay,
70 bool compose_on_start);
77 void create_compositing_threads();
78 void destroy_compositing_threads();
80 std::shared_ptr<graphics::Display>
const display;
81 std::shared_ptr<Scene>
const scene;
82 std::shared_ptr<DisplayBufferCompositorFactory>
const display_buffer_compositor_factory;
83 std::shared_ptr<DisplayListener>
const display_listener;
84 std::shared_ptr<CompositorReport>
const report;
86 std::vector<std::unique_ptr<CompositingFunctor>> thread_functors;
87 std::vector<std::future<void>> futures;
89 std::atomic<CompositorState> state;
90 std::chrono::milliseconds fixed_composite_delay;
91 bool compose_on_start;
93 void schedule_compositing(
int number_composites);
95 std::shared_ptr<mir::scene::Observer> observer;
All things Mir.
Definition: atomic_callback.h:25
CompositorState
Definition: multi_threaded_compositor.h:52
~MultiThreadedCompositor()
Definition: multi_threaded_compositor.cpp:256
void stop()
Definition: multi_threaded_compositor.cpp:291
Definition: multi_threaded_compositor.h:60
Definition: basic_thread_pool.h:34
MultiThreadedCompositor(std::shared_ptr< graphics::Display > const &display, std::shared_ptr< Scene > const &scene, std::shared_ptr< DisplayBufferCompositorFactory > const &db_compositor_factory, std::shared_ptr< DisplayListener > const &display_listener, std::shared_ptr< CompositorReport > const &compositor_report, std::chrono::milliseconds fixed_composite_delay, bool compose_on_start)
Definition: multi_threaded_compositor.cpp:227
void start()
Definition: multi_threaded_compositor.cpp:268
Definition: compositor.h:27