19 #ifndef MIR_CLIENT_BUFFER_STREAM_H
20 #define MIR_CLIENT_BUFFER_STREAM_H
31 #include <EGL/eglplatform.h>
46 class BufferStreamParameters;
67 class ServerBufferSemantics;
75 std::shared_ptr<ClientPlatform>
const& native_window_factory,
76 mir::protobuf::BufferStream
const& protobuf_bs,
77 std::shared_ptr<PerfReport>
const& perf_report,
84 std::shared_ptr<ClientPlatform>
const& native_window_factory,
85 mir::protobuf::BufferStreamParameters
const& parameters,
86 std::shared_ptr<PerfReport>
const& perf_report,
118 bool valid()
const override;
130 void process_buffer(protobuf::Buffer
const& buffer);
131 void process_buffer(protobuf::Buffer
const& buffer, std::unique_lock<std::mutex>
const&);
132 void screencast_buffer_received(std::function<
void()> done);
133 void on_swap_interval_set(
int interval);
134 void on_scale_set(
float scale);
135 void release_cpu_region();
137 mutable std::mutex mutex;
143 std::shared_ptr<ClientPlatform>
const client_platform;
145 std::unique_ptr<mir::protobuf::BufferStream> protobuf_bs;
150 std::shared_ptr<mir::client::PerfReport>
const perf_report;
152 std::shared_ptr<EGLNativeWindowType> egl_native_window_;
159 std::unique_ptr<mir::protobuf::Void> protobuf_void;
161 std::shared_ptr<MemoryRegion> secured_region;
165 std::unique_ptr<ServerBufferSemantics> buffer_depository;
172 #endif // MIR_CLIENT_BUFFER_STREAM_H
All things Mir.
Definition: atomic_callback.h:25
bool valid() const override
Definition: buffer_stream.cpp:639
A factory for creating client-side representations of graphics buffers.
Definition: client_buffer_factory.h:38
BufferStreamMode
Definition: buffer_stream.h:61
MirWaitHandle * set_swap_interval(int interval) override
Definition: buffer_stream.cpp:590
EGLNativeWindowType egl_native_window() override
Definition: buffer_stream.cpp:504
Definition: mir_wait_handle.h:31
Definition: buffer_stream.h:64
virtual ~BufferStream()
Definition: buffer_stream.cpp:430
Definition: buffer_stream.h:68
std::shared_ptr< MemoryRegion > secure_for_cpu_write() override
Definition: buffer_stream.cpp:515
MirWaitHandle * next_buffer(std::function< void()> const &done) override
Definition: buffer_stream.cpp:464
void request_and_wait_for_configure(MirSurfaceAttrib attrib, int) override
Definition: buffer_stream.cpp:563
MirPlatformType platform_type() override
Definition: buffer_stream.cpp:613
Definition: mir_native_buffer.h:30
void buffer_unavailable() override
Definition: buffer_stream.cpp:657
BufferStream(MirConnection *connection, mir::client::rpc::DisplayServer &server, BufferStreamMode mode, std::shared_ptr< ClientPlatform > const &native_window_factory, mir::protobuf::BufferStream const &protobuf_bs, std::shared_ptr< PerfReport > const &perf_report, std::string const &surface_name, geometry::Size ideal_size)
MirWaitHandle * get_create_wait_handle() override
Definition: buffer_stream.cpp:618
Definition: egl_native_surface.h:31
Definition: client_buffer.h:43
Definition: perf_report.h:27
void request_and_wait_for_next_buffer() override
Definition: buffer_stream.cpp:544
MirWaitHandle * release(mir_buffer_stream_callback callback, void *context) override
Definition: buffer_stream.cpp:623
void set_buffer_cache_size(unsigned int) override
Definition: buffer_stream.cpp:645
Definition: client_buffer_stream.h:45
BufferStream & operator=(BufferStream const &)=delete
Definition: mir_connection.h:88
Definition: client_buffer.h:52
int swap_interval() const override
Definition: buffer_stream.cpp:584
void buffer_available(mir::protobuf::Buffer const &buffer) override
Definition: buffer_stream.cpp:651
MirWaitHandle * set_scale(float scale) override
Definition: buffer_stream.cpp:668
std::shared_ptr< mir::client::ClientBuffer > get_current_buffer() override
Definition: buffer_stream.cpp:498
uint32_t get_current_buffer_id() override
Definition: buffer_stream.cpp:578
Definition: buffer_stream.h:63
MirSurfaceParameters get_parameters() const override
Definition: buffer_stream.cpp:532
MirNativeBuffer * get_current_buffer_package() override
Definition: buffer_stream.cpp:606
frontend::BufferStreamId rpc_id() const override
Definition: buffer_stream.cpp:632
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:157
void set_size(geometry::Size) override
Definition: buffer_stream.cpp:663