18 #ifndef MIR_COMPOSITOR_MULTI_MONITOR_ARBITER_H_
19 #define MIR_COMPOSITOR_MULTI_MONITOR_ARBITER_H_
31 namespace graphics {
class Buffer; }
32 namespace frontend {
class ClientBuffers; }
48 std::shared_ptr<frontend::ClientBuffers>
const& map,
49 std::shared_ptr<Schedule>
const& schedule);
55 void set_schedule(std::shared_ptr<Schedule>
const& schedule);
61 void clean_onscreen_buffers(std::lock_guard<std::mutex>
const&);
63 std::mutex
mutable mutex;
65 std::shared_ptr<frontend::ClientBuffers>
const map;
68 ScheduleEntry(std::shared_ptr<graphics::Buffer>
const& buffer,
unsigned int use_count) :
73 std::shared_ptr<graphics::Buffer> buffer;
74 unsigned int use_count;
76 std::deque<ScheduleEntry> onscreen_buffers;
77 std::set<compositor::CompositorID> current_buffer_users;
78 std::shared_ptr<Schedule> schedule;
All things Mir.
Definition: atomic_callback.h:25
void set_schedule(std::shared_ptr< Schedule > const &schedule)
Definition: multi_monitor_arbiter.cpp:125
MultiMonitorMode
Definition: multi_monitor_arbiter.h:37
MultiMonitorArbiter(MultiMonitorMode mode, std::shared_ptr< frontend::ClientBuffers > const &map, std::shared_ptr< Schedule > const &schedule)
Definition: multi_monitor_arbiter.cpp:32
void snapshot_release(std::shared_ptr< graphics::Buffer > const &) override
Definition: multi_monitor_arbiter.cpp:118
Definition: multi_monitor_arbiter.h:43
void compositor_release(std::shared_ptr< graphics::Buffer > const &) override
Definition: multi_monitor_arbiter.cpp:64
void const * CompositorID
Definition: compositor_id.h:27
Definition: buffer_bundle.h:33
std::shared_ptr< graphics::Buffer > snapshot_acquire() override
Definition: multi_monitor_arbiter.cpp:100
std::shared_ptr< graphics::Buffer > compositor_acquire(compositor::CompositorID id) override
Definition: multi_monitor_arbiter.cpp:42
void set_mode(MultiMonitorMode mode)
Definition: multi_monitor_arbiter.cpp:131
bool buffer_ready_for(compositor::CompositorID id)
Definition: multi_monitor_arbiter.cpp:137