Mir

Merge lp://staging/~raof/mir/fully-constructed-surfaces into lp://staging/mir

Proposed by Chris Halse Rogers
Status: Superseded
Proposed branch: lp://staging/~raof/mir/fully-constructed-surfaces
Merge into: lp://staging/mir
Prerequisite: lp://staging/~raof/mir/client-release-simplifications
Diff against target: 3249 lines (+1209/-410)
46 files modified
include/test/mir/test/validity_matchers.h (+3/-0)
playground/mir_egl_platform_shim.c (+6/-6)
playground/render_surface.cpp (+12/-8)
src/client/CMakeLists.txt (+2/-0)
src/client/buffer_stream.cpp (+133/-62)
src/client/buffer_stream.h (+18/-8)
src/client/buffer_stream_configuration.cpp (+8/-0)
src/client/buffer_stream_configuration.h (+1/-0)
src/client/buffer_vault.cpp (+22/-5)
src/client/connection_configuration.h (+6/-0)
src/client/connection_surface_map.cpp (+75/-12)
src/client/connection_surface_map.h (+25/-2)
src/client/default_connection_configuration.cpp (+15/-2)
src/client/default_connection_configuration.h (+2/-0)
src/client/error_render_surface.cpp (+1/-4)
src/client/error_render_surface.h (+6/-3)
src/client/mir_connection.cpp (+117/-37)
src/client/mir_connection.h (+6/-2)
src/client/mir_render_surface.h (+6/-3)
src/client/mir_render_surface_api.cpp (+56/-8)
src/client/no_tls_future-inl.h (+1/-0)
src/client/render_surface.cpp (+31/-14)
src/client/render_surface.h (+6/-3)
src/client/rpc/mir_protobuf_rpc_channel.cpp (+25/-19)
src/client/surface_map.h (+4/-2)
src/client/symbols.map (+8/-0)
src/include/client/mir_toolkit/mir_render_surface.h (+40/-17)
src/server/scene/mediating_display_changer.cpp (+1/-1)
tests/acceptance-tests/staging/test_render_surface.cpp (+54/-21)
tests/acceptance-tests/test_client_library.cpp (+85/-0)
tests/acceptance-tests/test_server_shutdown.cpp (+1/-1)
tests/include/mir/test/doubles/stub_buffer_stream_factory.h (+15/-4)
tests/integration-tests/test_buffer_scheduling.cpp (+3/-1)
tests/integration-tests/test_surfaceloop.cpp (+27/-32)
tests/integration-tests/test_swapinterval.cpp (+2/-2)
tests/mir_test/validity_matchers.cpp (+15/-0)
tests/mir_test_doubles/test_protobuf_client.cpp (+2/-1)
tests/unit-tests/client/test_buffer_vault.cpp (+2/-1)
tests/unit-tests/client/test_client_buffer_stream.cpp (+151/-87)
tests/unit-tests/client/test_connection_resource_map.cpp (+84/-11)
tests/unit-tests/client/test_mir_render_surface.cpp (+108/-21)
tests/unit-tests/client/test_protobuf_rpc_channel.cpp (+9/-7)
tests/unit-tests/compositor/test_stream.cpp (+1/-1)
tests/unit-tests/frontend/stress_protobuf_communicator.cpp (+4/-1)
tests/unit-tests/scene/test_application_session.cpp (+3/-1)
tests/unit-tests/scene/test_surface_stack.cpp (+7/-0)
To merge this branch: bzr merge lp://staging/~raof/mir/fully-constructed-surfaces
Reviewer Review Type Date Requested Status
Mir CI Bot continuous-integration Needs Fixing
Mir development team Pending
Review via email: mp+313085@code.staging.launchpad.net

This proposal has been superseded by a proposal from 2016-12-15.

Commit message

Ensure MirBufferStream and MirSurface are fully constructed within their client callback.

Ever since NBS we've had some sneaky RPC in seemingly innocuous client calls like
mir_buffer_stream_get_current_buffer. If the client called these at the wrong
time - most easily from within the creation callback - this RPC would deadlock.

Plumb through the necessary BufferStream so that the client's callback
is called after the BufferStream is fully valid.

To post a comment you must log in.
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

FAILED: Continuous integration, rev:3869
https://mir-jenkins.ubuntu.com/job/mir-ci/2382/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/3104/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-0-fetch/3171/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/3163/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/3163/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/3163/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/3133/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/3133/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/3133/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/3133/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/3133/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/3133/console

Click here to trigger a rebuild:
https://mir-jenkins.ubuntu.com/job/mir-ci/2382/rebuild

review: Needs Fixing (continuous-integration)
3869. By Chris Halse Rogers

Merge trunk, fixing remaining issues

3870. By Chris Halse Rogers

Fix incomplete comment

Unmerged revisions

3870. By Chris Halse Rogers

Fix incomplete comment

3869. By Chris Halse Rogers

Merge trunk, fixing remaining issues

3868. By Chris Halse Rogers

Merge trunk, resolving conflicts

3867. By Chris Halse Rogers

The Omega Commit.

Resolve changes to trunk, ensure tests provide the newly-expected environment.

3866. By Chris Halse Rogers

Follow rename of header

3865. By Chris Halse Rogers

Also test that MirBufferStream is fully usable in its created callback

3864. By Chris Halse Rogers

Add (failing) test checking that a MirSurface is fully usable in the surface created callback

3863. By Chris Halse Rogers

Add ConnectionSurfaceMap::reserve(SurfaceId)

This lets the MirConnection tell the RPC layer that a surface is *about* to be
constructed. This is necessary because the server sends a SurfaceOutputEvent
immediately after the create_surface() response, but if the surface has a default
BufferStream that stream is not fully constructed until a futher allocate_buffer() RPC
call + event.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
The diff is not available at this time. You can reload the page or download it.

Subscribers

People subscribed via source and target branches