19 #ifndef MIR_CLIENT_BUFFER_STREAM_H 20 #define MIR_CLIENT_BUFFER_STREAM_H 31 #include <EGL/eglplatform.h> 53 class BufferStreamParameters;
70 class ServerBufferSemantics;
76 std::shared_ptr<MirWaitHandle> creation_wait_handle,
78 std::shared_ptr<ClientPlatform>
const& native_window_factory,
79 std::weak_ptr<SurfaceMap>
const& map,
80 std::shared_ptr<AsyncBufferFactory>
const& factory,
81 mir::protobuf::BufferStream
const& protobuf_bs,
82 std::shared_ptr<PerfReport>
const& perf_report,
83 std::string
const& surface_name,
88 std::shared_ptr<MirWaitHandle> creation_wait_handle,
90 std::shared_ptr<ClientPlatform>
const& native_window_factory,
91 std::weak_ptr<SurfaceMap>
const& map,
92 std::shared_ptr<AsyncBufferFactory>
const& factory,
93 mir::protobuf::BufferStreamParameters
const& parameters,
94 std::shared_ptr<PerfReport>
const& perf_report,
99 MirWaitHandle* next_buffer(std::function<
void()>
const& done)
override;
100 std::shared_ptr<mir::client::ClientBuffer> get_current_buffer()
override;
102 uint32_t get_current_buffer_id()
override;
104 int swap_interval()
const override;
106 void set_buffer_cache_size(
unsigned int)
override;
109 std::shared_ptr<MemoryRegion> secure_for_cpu_write()
override;
113 void request_and_wait_for_next_buffer()
override;
122 bool valid()
const override;
124 void buffer_available(mir::protobuf::Buffer
const& buffer)
override;
125 void buffer_unavailable()
override;
128 char const* get_error_message()
const override;
136 void process_buffer(protobuf::Buffer
const& buffer);
137 void process_buffer(protobuf::Buffer
const& buffer, std::unique_lock<std::mutex>&);
138 void on_swap_interval_set(
int interval);
139 void on_scale_set(
float scale);
140 void release_cpu_region();
142 void init_swap_interval();
144 mutable std::mutex mutex;
148 std::shared_ptr<ClientPlatform>
const client_platform;
149 std::unique_ptr<mir::protobuf::BufferStream> protobuf_bs;
151 bool fixed_swap_interval;
155 std::shared_ptr<mir::client::PerfReport>
const perf_report;
156 std::shared_ptr<void> egl_native_window_;
159 std::unique_ptr<mir::protobuf::Void> protobuf_void;
161 std::shared_ptr<MemoryRegion> secured_region;
163 std::unique_ptr<ServerBufferSemantics> buffer_depository;
165 size_t const nbuffers;
166 std::string error_message;
167 std::shared_ptr<MirWaitHandle> creation_wait_handle;
168 std::weak_ptr<SurfaceMap>
const map;
169 std::shared_ptr<AsyncBufferFactory>
const factory;
175 #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:71
Definition: surface_map.h:40
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:68
Definition: mir_connection.h:96
Definition: buffer_factory.h:33
Definition: client_buffer.h:55
Definition: buffer_stream.h:37
#define EGLNativeWindowType
Definition: client_buffer_stream.h:55
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:169