105
105
if (auto map = surface_map.lock())
107
107
map->with_all_streams_do(
108
[](mcl::ClientBufferStream* receiver) {
108
[](MirBufferStream* receiver) {
109
109
if (receiver) receiver->buffer_unavailable();
269
269
display_configuration->update_configuration(seq.display_configuration());
272
if (seq.input_devices_size())
272
if (seq.has_input_devices())
274
std::vector<mir::input::DeviceData> devices;
276
devices.reserve(seq.input_devices_size());
278
for (auto const& dev : seq.input_devices())
279
devices.emplace_back(dev.id(), dev.capabilities(), dev.name(), dev.unique_id());
281
input_devices->update_devices(std::move(devices));
274
input_devices->update_devices(seq.input_devices());
284
277
if (seq.has_lifecycle_event())
320
313
if (seq.buffer_request().has_id())
322
map->with_stream_do(mf::BufferStreamId(seq.buffer_request().id().value()),
323
[&] (mcl::ClientBufferStream* receiver) {
315
mf::BufferStreamId stream_id(seq.buffer_request().id().value());
316
if (auto receiver = map->stream(stream_id))
324
317
receiver->buffer_available(seq.buffer_request().buffer());
328
320
else if (seq.buffer_request().has_operation())
380
372
rpc_report->event_parsing_succeeded(*e);
382
auto const send_e = [&e](MirSurface* surface)
383
{ surface->handle_event(*e); };
375
bool is_surface_event = true;
385
377
switch (e->type())
387
379
case mir_event_type_surface:
388
if (auto map = surface_map.lock())
389
map->with_surface_do(mf::SurfaceId(e->to_surface()->id()), send_e);
380
surface_id = e->to_surface()->id();
392
382
case mir_event_type_resize:
393
if (auto map = surface_map.lock())
394
map->with_surface_do(mf::SurfaceId(e->to_resize()->surface_id()), send_e);
383
surface_id = e->to_resize()->surface_id();
397
385
case mir_event_type_orientation:
398
if (auto map = surface_map.lock())
399
map->with_surface_do(mf::SurfaceId(e->to_orientation()->surface_id()), send_e);
386
surface_id = e->to_orientation()->surface_id();
402
388
case mir_event_type_close_surface:
403
if (auto map = surface_map.lock())
404
map->with_surface_do(mf::SurfaceId(e->to_close_surface()->surface_id()), send_e);
389
surface_id = e->to_close_surface()->surface_id();
406
391
case mir_event_type_keymap:
407
if (auto map = surface_map.lock())
408
map->with_surface_do(mf::SurfaceId(e->to_keymap()->surface_id()), send_e);
392
surface_id = e->to_keymap()->surface_id();
410
394
case mir_event_type_surface_output:
411
if (auto map = surface_map.lock())
412
map->with_surface_do(mf::SurfaceId(e->to_surface_output()->surface_id()), send_e);
395
surface_id = e->to_surface_output()->surface_id();
414
397
case mir_event_type_surface_placement:
415
if (auto map = surface_map.lock())
416
map->with_surface_do(mf::SurfaceId(e->to_surface_placement()->id()), send_e);
398
surface_id = e->to_surface_placement()->id();
401
is_surface_event = false;
420
402
event_sink->handle_event(*e);
405
if (is_surface_event)
406
if (auto map = surface_map.lock())
407
if (auto surf = map->surface(mf::SurfaceId(surface_id)))
408
surf->handle_event(*e);