20 #ifndef MIR_COMPOSITOR_STREAM_H_ 21 #define MIR_COMPOSITOR_STREAM_H_ 35 namespace frontend {
class ClientBuffers; }
39 class FrameDroppingPolicyFactory;
40 class FrameDroppingPolicy;
50 void with_most_recent_buffer_do(std::function<
void(
graphics::Buffer&)>
const& exec)
override;
52 void add_observer(std::shared_ptr<scene::SurfaceObserver>
const& observer)
override;
53 void remove_observer(std::weak_ptr<scene::SurfaceObserver>
const& observer)
override;
54 std::shared_ptr<graphics::Buffer>
55 lock_compositor_buffer(
void const* user_id)
override;
58 void allow_framedropping(
bool)
override;
59 void drop_outstanding_requests()
override;
60 int buffers_ready_for_compositor(
void const* user_id)
const override;
61 void drop_old_buffers()
override;
62 bool has_submitted_buffer()
const override;
65 void set_scale(
float scale)
override;
71 DroppingCallback(
Stream* stream);
72 void operator()()
override;
74 void unlock()
override;
76 std::unique_lock<std::mutex> guard_lock;
78 void transition_schedule(std::shared_ptr<Schedule>&& new_schedule, std::lock_guard<std::mutex>
const&);
81 std::mutex
mutable mutex;
82 std::unique_ptr<compositor::FrameDroppingPolicy> drop_policy;
84 std::shared_ptr<Schedule> schedule;
85 std::shared_ptr<frontend::ClientBuffers> buffers;
86 std::shared_ptr<MultiMonitorArbiter>
const arbiter;
89 bool first_frame_posted;
93 std::set<graphics::BufferID> associated_buffers;
94 unsigned int client_owned_buffer_count(std::lock_guard<decltype(mutex)>
const&)
const;
All things Mir.
Definition: atomic_callback.h:25
ScheduleMode
Definition: stream.cpp:35
Definition: buffer_stream.h:40
Definition: int_wrapper.h:27
Definition: surface_observers.h:30
Definition: lockable_callback.h:25
Creator of FrameDroppingPolicies.
Definition: frame_dropping_policy_factory.h:40
int const size
Definition: make_socket_rpc_channel.cpp:51