19 #ifndef MIR_CLIENT_BUFFER_VAULT_H_ 20 #define MIR_CLIENT_BUFFER_VAULT_H_ 33 namespace protobuf {
class Buffer; }
38 class AsyncBufferFactory;
45 virtual void free_buffer(
int buffer_id) = 0;
46 virtual void submit_buffer(
MirBuffer&) = 0;
60 std::shared_ptr<ClientBufferFactory>
const&,
61 std::shared_ptr<AsyncBufferFactory>
const&,
62 std::shared_ptr<ServerBufferRequests>
const&,
63 std::weak_ptr<SurfaceMap>
const&,
65 unsigned int initial_nbuffers);
69 void deposit(std::shared_ptr<MirBuffer>
const& buffer);
70 void wire_transfer_inbound(
int buffer_id);
72 std::shared_ptr<MirBuffer>
const& buffer, std::function<
void()>
const&);
75 void set_scale(
float scale);
76 void increase_buffer_count();
77 void decrease_buffer_count();
81 typedef std::map<int, Owner> BufferMap;
82 BufferMap::iterator available_buffer();
83 void trigger_callback(std::unique_lock<std::mutex> lk);
86 void free_buffer(
int free_id);
88 std::shared_ptr<MirBuffer> checked_buffer_from_map(
int id);
89 void set_size(std::unique_lock<std::mutex>
const& lk,
geometry::Size new_size);
92 std::shared_ptr<ClientBufferFactory>
const platform_factory;
93 std::shared_ptr<AsyncBufferFactory>
const buffer_factory;
94 std::shared_ptr<ServerBufferRequests>
const server_requests;
95 std::weak_ptr<SurfaceMap>
const surface_map;
101 std::deque<NoTLSPromise<std::shared_ptr<MirBuffer>>> promises;
104 size_t current_buffer_count;
105 size_t needed_buffer_count;
106 size_t const initial_buffer_count;
107 int last_received_id = 0;
109 std::function<void()> deferred_cb;
Definition: mir_buffer.h:34
All things Mir.
Definition: atomic_callback.h:25
A factory for creating client-side representations of graphics buffers.
Definition: client_buffer_factory.h:38
Definition: mir_wait_handle.h:31
Definition: buffer_vault.h:56
Owner
Definition: buffer_vault.cpp:38
Definition: buffer_vault.h:41
Definition: no_tls_future-inl.h:101
int const size
Definition: make_socket_rpc_channel.cpp:51