19 #ifndef MIR_COMPOSITOR_MULTI_THREADED_COMPOSITOR_H_
20 #define MIR_COMPOSITOR_MULTI_THREADED_COMPOSITOR_H_
44 class DisplayBufferCompositorFactory;
45 class CompositingFunctor;
47 class CompositorReport;
61 std::shared_ptr<Scene>
const& scene,
62 std::shared_ptr<DisplayBufferCompositorFactory>
const& db_compositor_factory,
63 std::shared_ptr<CompositorReport>
const& compositor_report,
64 bool compose_on_start);
71 void create_compositing_threads();
72 void destroy_compositing_threads(std::unique_lock<std::mutex>& lock);
74 std::shared_ptr<graphics::Display>
const display;
75 std::shared_ptr<Scene>
const scene;
76 std::shared_ptr<DisplayBufferCompositorFactory>
const display_buffer_compositor_factory;
77 std::shared_ptr<CompositorReport>
const report;
79 std::vector<std::unique_ptr<CompositingFunctor>> thread_functors;
80 std::vector<std::future<void>> futures;
82 std::mutex state_guard;
84 bool compose_on_start;
86 void schedule_compositing(
int number_composites);
88 std::shared_ptr<mir::scene::Observer> observer;
All things Mir.
Definition: buffer_stream.h:37
CompositorState
Definition: multi_threaded_compositor.h:49
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< CompositorReport > const &compositor_report, bool compose_on_start)
Definition: multi_threaded_compositor.cpp:207
~MultiThreadedCompositor()
Definition: multi_threaded_compositor.cpp:232
void stop()
Definition: multi_threaded_compositor.cpp:277
Definition: multi_threaded_compositor.h:57
Definition: basic_thread_pool.h:34
void start()
Definition: multi_threaded_compositor.cpp:246
Definition: compositor.h:27