lp:~raof/mir/deferred-with-surface-do
- Get this branch:
- bzr branch lp:~raof/mir/deferred-with-surface-do
Branch merges
- Cemil Azizoglu (community): Needs Fixing
- Kevin DuBois (community): Approve
- Daniel van Vugt: Needs Fixing
- Mir CI Bot: Approve (continuous-integration)
-
Diff: 1102 lines (+411/-131)19 files modifiedsrc/client/CMakeLists.txt (+3/-0)
src/client/connection_configuration.h (+8/-2)
src/client/connection_surface_map.cpp (+69/-26)
src/client/connection_surface_map.h (+63/-7)
src/client/default_connection_configuration.cpp (+20/-7)
src/client/default_connection_configuration.h (+4/-2)
src/client/mir_connection.cpp (+13/-10)
src/client/mir_connection.h (+3/-3)
src/client/rpc/mir_protobuf_rpc_channel.cpp (+51/-39)
src/client/surface_map.h (+4/-2)
src/client/symbols.map (+8/-1)
tests/integration-tests/test_buffer_scheduling.cpp (+3/-1)
tests/mir_test_doubles/test_protobuf_client.cpp (+2/-1)
tests/unit-tests/client/test_buffer_vault.cpp (+3/-2)
tests/unit-tests/client/test_client_buffer_stream.cpp (+6/-1)
tests/unit-tests/client/test_client_mir_surface.cpp (+2/-2)
tests/unit-tests/client/test_connection_resource_map.cpp (+136/-17)
tests/unit-tests/client/test_protobuf_rpc_channel.cpp (+9/-7)
tests/unit-tests/frontend/stress_protobuf_communicator.cpp (+4/-1)
Branch information
Recent revisions
- 3892. By Chris Halse Rogers
-
Fix deferred event delivery in MirProtobufRpcC
hannel. If with_surface_do() ends up deferring execution we need to keep the deserialised
event around as a shared_ptr, rather than having the unique_ptr clean it up when
we finish. - 3891. By Chris Halse Rogers
-
Now that we're guaranteeing non-NULL-ness it makes sense to pass MirSurface& rather than MirSurface*
- 3888. By Chris Halse Rogers
-
Eliminate possible race with reserved SurfaceID processing.
Don't punt func(surface.get()) to the delayed_queue - it's possible the client could
call ::erase(surface_id) before that's processed, leading to accessing a freed MirSurface.Instead, punt with_surface_do to the delayed queue.
- 3887. By Chris Halse Rogers
-
Clarify ownership of MirSurface in the client library.
The ConnectionSurfa
ceMap owns the all MirSurface-s associated with a connection.
Make this more explicit by having insert() take ownership of a unique_ptr<MirSurface>
rather than a shared_ptr<MirSurface> . - 3885. By Chris Halse Rogers
-
ConnectionResou
rceMap: :with_{ surface, stream} _do: Failure to find the object is not an error. Make this somewhat more monadic by just not running the functor when the object of desire
is not found.This matches what we currently do - wherever we currently call these functions we
catch exceptions and throw them away.This also makes sense for the future - we should be able to delete client resources
without waiting for the server ACK, and that involves ignoring events targetting
client-deleted objects. - 3884. By Chris Halse Rogers
-
Add ConnectionSurfa
ceMap:: reserve( SurfaceId) . This notifies the surface map that we *intend* to create a surface with ID,
but it's not ready yet.Events can reach this new surface, but they're delayed until it actually
exists.
Branch metadata
- Branch format:
- Branch format 7
- Repository format:
- Bazaar repository format 2a (needs bzr 1.16 or later)
- Stacked on:
- lp:mir