19 #ifndef MIR_CLIENT_BUFFER_STREAM_H 20 #define MIR_CLIENT_BUFFER_STREAM_H 31 #include <EGL/eglplatform.h> 53 class BufferStreamParameters;
68 class ServerBufferSemantics;
74 std::shared_ptr<MirWaitHandle> creation_wait_handle,
76 std::shared_ptr<ClientPlatform>
const& native_window_factory,
77 mir::protobuf::BufferStream
const& protobuf_bs,
78 std::shared_ptr<PerfReport>
const& perf_report,
79 std::string
const& surface_name,
84 std::shared_ptr<MirWaitHandle> creation_wait_handle,
86 std::shared_ptr<ClientPlatform>
const& native_window_factory,
87 mir::protobuf::BufferStreamParameters
const& parameters,
88 std::shared_ptr<PerfReport>
const& perf_report,
93 MirWaitHandle* next_buffer(std::function<
void()>
const& done)
override;
94 std::shared_ptr<mir::client::ClientBuffer> get_current_buffer()
override;
96 uint32_t get_current_buffer_id()
override;
98 int swap_interval()
const override;
100 void set_buffer_cache_size(
unsigned int)
override;
103 std::shared_ptr<MemoryRegion> secure_for_cpu_write()
override;
107 void request_and_wait_for_next_buffer()
override;
116 bool valid()
const override;
118 void buffer_available(mir::protobuf::Buffer
const& buffer)
override;
119 void buffer_unavailable()
override;
122 char const* get_error_message()
const override;
130 void process_buffer(protobuf::Buffer
const& buffer);
131 void process_buffer(protobuf::Buffer
const& buffer, std::unique_lock<std::mutex>&);
132 void on_swap_interval_set(
int interval);
133 void on_scale_set(
float scale);
134 void release_cpu_region();
136 void init_swap_interval();
138 mutable std::mutex mutex;
142 std::shared_ptr<ClientPlatform>
const client_platform;
143 std::unique_ptr<mir::protobuf::BufferStream> protobuf_bs;
145 bool fixed_swap_interval;
149 std::shared_ptr<mir::client::PerfReport>
const perf_report;
150 std::shared_ptr<void> egl_native_window_;
153 std::unique_ptr<mir::protobuf::Void> protobuf_void;
155 std::shared_ptr<MemoryRegion> secured_region;
159 std::unique_ptr<ServerBufferSemantics> buffer_depository;
161 size_t const nbuffers;
162 std::string error_message;
163 std::shared_ptr<MirWaitHandle> creation_wait_handle;
169 #endif // MIR_CLIENT_BUFFER_STREAM_H
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_stream.h:69
Definition: mir_native_buffer.h:30
Definition: egl_native_surface.h:31
Definition: client_buffer.h:46
Definition: perf_report.h:27
Definition: client_buffer_stream.h:69
Definition: mir_connection.h:96
Definition: client_buffer.h:55
Definition: buffer_stream.h:37
#define EGLNativeWindowType
Definition: client_buffer_stream.h:56
Definition: mir_display_server.h:33
MirSurfaceParameters is the structure of minimum required information that you must provide to Mir in...
Definition: client_types.h:166