Merge lp:~raof/mir/provide-event-fd into lp:mir
| Status: | Work in progress |
|---|---|
| Proposed branch: | lp:~raof/mir/provide-event-fd |
| Merge into: | lp:mir |
| Prerequisite: | lp:~raof/mir/make-input-dispatcher-a-dispatchable |
| Diff against target: |
7460 lines (+4248/-373) (has conflicts) 87 files modified
benchmarks/benchmark_multiplexing_dispatchable.cpp (+1/-0) debian/control (+1/-0) examples/chain_jumping_buffers.c (+6/-0) examples/prerendered_frames.c (+5/-0) examples/render_surface.cpp (+20/-4) include/client/mir_toolkit/mir_connection.h (+70/-0) include/client/mir_toolkit/mir_wait.h (+1/-0) include/client/mir_toolkit/rs/mir_render_surface.h (+69/-5) include/common/mir/dispatch/threaded_dispatcher.h.moved (+75/-0) include/test/mir/test/validity_matchers.h (+8/-0) playground/egldiamond_render_surface.c (+5/-0) playground/mir_egl_platform_shim.c (+9/-0) src/client/CMakeLists.txt (+9/-0) src/client/buffer_factory.cpp (+11/-1) src/client/buffer_stream.cpp (+146/-38) src/client/buffer_stream.h (+27/-3) 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/client_buffer_stream_factory.h.THIS (+66/-0) src/client/connection_configuration.h (+11/-0) src/client/connection_surface_map.cpp (+53/-1) src/client/connection_surface_map.h (+32/-0) src/client/default_client_buffer_stream_factory.cpp.THIS (+87/-0) src/client/default_client_buffer_stream_factory.h.THIS (+70/-0) 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_buffer_stream_api.cpp (+29/-14) src/client/mir_connection.cpp (+194/-50) src/client/mir_connection.h (+37/-11) src/client/mir_connection_api.cpp (+159/-0) src/client/mir_prompt_session_api.cpp (+13/-0) src/client/mir_render_surface_api.cpp (+104/-4) src/client/mir_screencast.cpp (+13/-2) src/client/mir_screencast.h (+2/-1) src/client/mir_screencast_api.cpp (+20/-3) src/client/mir_surface.cpp (+30/-2) src/client/mir_surface.h (+5/-2) src/client/mir_surface_api.cpp (+25/-0) src/client/mir_wait_api.cpp (+9/-0) src/client/no_tls_future-inl.h (+1/-0) src/client/render_surface.cpp (+34/-14) src/client/render_surface.h (+6/-3) src/client/rpc/make_rpc_channel.h (+1/-0) src/client/rpc/mir_basic_rpc_channel.h (+8/-0) src/client/rpc/mir_protobuf_rpc_channel.cpp (+10/-1) src/client/rpc/mir_protobuf_rpc_channel.h (+3/-3) src/client/symbols.map (+21/-0) src/client/synchronous_helper.cpp (+33/-0) src/client/synchronous_helper.h (+160/-0) src/common/dispatch/threaded_dispatcher.cpp.moved (+294/-0) src/include/client/mir/mir_render_surface.h (+6/-3) src/server/scene/mediating_display_changer.cpp (+1/-1) tests/acceptance-tests/CMakeLists.txt (+8/-0) tests/acceptance-tests/test_client_library.cpp (+494/-0) tests/acceptance-tests/test_client_surfaces.cpp (+40/-0) tests/acceptance-tests/test_render_surface.cpp (+235/-20) tests/acceptance-tests/test_server_shutdown.cpp (+1/-1) tests/include/mir/test/doubles/mock_client_buffer_stream_factory.h.THIS (+59/-0) tests/include/mir/test/doubles/mock_mir_buffer_stream.h (+1/-0) tests/include/mir/test/doubles/stub_buffer_stream_factory.h (+18/-2) tests/include/mir/test/doubles/stub_client_buffer_stream_factory.h.THIS (+66/-0) tests/integration-tests/test_buffer_scheduling.cpp (+3/-1) tests/integration-tests/test_surfaceloop.cpp (+60/-35) tests/integration-tests/test_swapinterval.cpp (+2/-2) tests/mir_test/CMakeLists.txt (+5/-1) tests/mir_test/validity_matchers.cpp (+31/-0) tests/mir_test_doubles/stub_buffer.cpp.THIS (+39/-0) tests/mir_test_doubles/test_protobuf_client.cpp (+2/-1) tests/mir_test_framework/CMakeLists.txt (+1/-0) tests/mir_test_framework/udev_environment.cpp (+12/-4) tests/unit-tests/client/test_buffer_vault.cpp (+2/-1) tests/unit-tests/client/test_client_buffer_stream.cpp (+158/-82) tests/unit-tests/client/test_client_mir_surface.cpp (+22/-0) tests/unit-tests/client/test_connection_resource_map.cpp (+71/-5) tests/unit-tests/client/test_mir_connection.cpp (+206/-7) tests/unit-tests/client/test_mir_render_surface.cpp (+182/-20) tests/unit-tests/compositor/test_stream.cpp (+1/-1) tests/unit-tests/dispatch/CMakeLists.txt (+1/-0) tests/unit-tests/dispatch/test_multiplexing_dispatchable.cpp (+7/-8) tests/unit-tests/dispatch/test_threaded_dispatcher.cpp.moved (+403/-0) 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 (+11/-0) tools/valgrind_suppressions_generic (+45/-0) Text conflict in examples/chain_jumping_buffers.c Text conflict in examples/prerendered_frames.c Text conflict in examples/render_surface.cpp Text conflict in include/client/mir_toolkit/rs/mir_render_surface.h Text conflict in playground/egldiamond_render_surface.c Text conflict in playground/mir_egl_platform_shim.c Text conflict in src/client/CMakeLists.txt Text conflict in src/client/buffer_stream.cpp Text conflict in src/client/buffer_stream.h Text conflict in src/client/connection_surface_map.cpp Text conflict in src/client/connection_surface_map.h Text conflict in src/client/mir_buffer_stream_api.cpp Text conflict in src/client/mir_connection.cpp Text conflict in src/client/mir_connection_api.cpp Text conflict in src/client/mir_prompt_session_api.cpp Text conflict in src/client/mir_render_surface_api.cpp Text conflict in src/client/mir_screencast.cpp Text conflict in src/client/mir_surface.cpp Text conflict in src/client/mir_surface.h Text conflict in src/client/mir_surface_api.cpp Text conflict in src/client/rpc/mir_basic_rpc_channel.h Text conflict in src/client/rpc/mir_protobuf_rpc_channel.cpp Text conflict in src/client/symbols.map Text conflict in tests/acceptance-tests/CMakeLists.txt Text conflict in tests/acceptance-tests/test_client_library.cpp Text conflict in tests/acceptance-tests/test_client_surfaces.cpp Text conflict in tests/acceptance-tests/test_render_surface.cpp Text conflict in tests/include/mir/test/doubles/stub_buffer_stream_factory.h Text conflict in tests/integration-tests/test_surfaceloop.cpp Text conflict in tests/unit-tests/client/test_client_buffer_stream.cpp Text conflict in tests/unit-tests/client/test_client_mir_surface.cpp Text conflict in tests/unit-tests/client/test_connection_resource_map.cpp Text conflict in tests/unit-tests/client/test_mir_connection.cpp Text conflict in tests/unit-tests/client/test_mir_render_surface.cpp Text conflict in tests/unit-tests/scene/test_surface_stack.cpp |
| To merge this branch: | bzr merge lp:~raof/mir/provide-event-fd |
| Related bugs: |
| Reviewer | Review Type | Date Requested | Status |
|---|---|---|---|
| PS Jenkins bot | continuous-integration | Needs Fixing on 2015-04-15 | |
| Alexandros Frantzis (community) | Needs Fixing on 2015-04-14 | ||
| Andreas Pokorny (community) | Approve on 2015-03-10 | ||
| Robert Carr (community) | Approve on 2015-02-17 | ||
| Kevin DuBois (community) | 2015-01-28 | Approve on 2015-01-29 | |
|
Review via email:
|
|||
Commit Message
Provide a mechanism for manual dispatch of client events.
A client can create a manually dispatched MirConnection by mir_connect_
Description of the Change
The last, client-visible component of eventloop-
The relevant client API bits are mir_connect_
This mostly preserves the current behaviour for automatic, threaded dispatch. The one difference is that there are now no longer dedicated threads for surfaces' input loops; instead there is now one thread per surface with input plus one for RPC that together dispatch whatever events may happen.
| Kevin DuBois (kdub) wrote : | # |
int mir_connection_
It seems more important what the fd is for, so I'd rather the fn say something about what the fd does... maybe:
int mir_connection_
201 + thread_local static bool running;
Nothing wrong here, but we still haven't properly sorted out TLS with hybris. We'd probably be a bit more robust if we still avoid using TLS.
704 + if (pipe2(pipefds, O_NONBLOCK) < 0)
O_CLOEXEC?
| Chris Halse Rogers (raof) wrote : | # |
On Thu, Jan 29, 2015 at 1:18 AM, Kevin DuBois
<email address hidden> wrote:
> Review: Needs Fixing
>
> int mir_connection_
> It seems more important what the fd is for, so I'd rather the fn say
> something about what the fd does... maybe:
> int mir_connection_
Seems reasonable, I'll use that naming.
>
>
> 201 + thread_local static bool running;
> Nothing wrong here, but we still haven't properly sorted out TLS with
> hybris. We'd probably be a bit more robust if we still avoid using
> TLS.
Boo. And it was sooooo elegant.
I'll rework this to not need TLS.
>
> 704 + if (pipe2(pipefds, O_NONBLOCK) < 0)
> O_CLOEXEC?
While we're at it, yes.
| Chris Halse Rogers (raof) wrote : | # |
Harumph.
So, this adds tests to TestClientLibrary that require umockdev's evemu replay functionality. I guess I'll need to (a) modify the test runner to call through umockdev-run, (b) ensure that the recordings get installed in the packages, and (c) ensure that the tests can *find* them.
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2331
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
FAILURE: http://
FAILURE: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| Kevin DuBois (kdub) wrote : | # |
looks good to me, although perhaps some clients might disagree with:
757 + // If the client is entirely unresponsive for a whole minute, it deserves to die.
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2337
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2338
http://
Executed test runs:
SUCCESS: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2339
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
| PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:2340
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| Robert Carr (robertcarr) wrote : | # |
I really like the way this turned out :)
A few nits:
+TEST_F(
I think its worth refactoring this and the following test. If you merged the TestData and test up to SurfaceCreation in to a fixture it would be possible to then split the sections of the test without duplicating code. Then the next test could not have to deal with surface states and umockdev recordings in the same test.
1888 and elsewhere + auto connection = std::make_
You can keep connection in the fixture and then inherit from the fixture with
MirConnectionAu
| Robert Carr (robertcarr) wrote : | # |
2 small needs fixing:
The 1 second timeouts are going to fail in ARMHF valgrind.
1499 + GError* err = nullptr;
Here and at 1511 please use g_error_free (I know a leak is unlikely to matter here but its worth using the API correctly I think)
| Robert Carr (robertcarr) wrote : | # |
PINGGGGGGGGGGGG
| PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:2346
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| Chris Halse Rogers (raof) wrote : | # |
PIIIIING responded to :)
| Andreas Pokorny (andreas-pokorny) wrote : | # |
A call to mir::set_
What about exceptions that reach the dispatch_loop? Do we need something like mir_terminate_
Looks good otherwise
| Andreas Pokorny (andreas-pokorny) wrote : | # |
> A call to mir::set_
Could be a constructor parameter to ThreadedDispatc
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2349
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
| PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:2350
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Autolanding.
More details in the following jenkins job:
http://
Executed test runs:
SUCCESS: http://
FAILURE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
| Chris Halse Rogers (raof) wrote : | # |
Retrigger CI now that we've got shiny new log output for the failed test.
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Autolanding.
More details in the following jenkins job:
http://
Executed test runs:
SUCCESS: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
- 2351. By Chris Halse Rogers on 2015-03-18
-
Switch manual dispatch tests over to an eventloop thread.
This still tests that the callbacks are dispatched on the thread that called dispatch(),
but doesn't rely on implementation details like how many times you'll need to call
dispatch() after each request in order to get it processed, and is less prone to possible
races where fd readability races the while(fd_is_readable( )) loop.
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2351
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
- 2352. By Chris Halse Rogers on 2015-03-18
-
Merge trunk
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2352
http://
Executed test runs:
SUCCESS: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| Alexandros Frantzis (afrantzis) wrote : | # |
267 + dispatcher{
Why not std::make_shared?
286 + if (eventloop) abort();
It would be helpful to the poor users if we printed an informative error message before we abort.
755 + std::thread::id terminate_
I think there is a potential race here:
T1: calls terminate_
A thread terminates, sets terminating_
Another thread terminates, sets terminating_
T1 wakes up, finds a valid terminating_
T2 wakes up, finds a cleared terminating_
- 2353. By Chris Halse Rogers on 2015-03-25
-
Add timeout to EventDispatchThread
- 2354. By Chris Halse Rogers on 2015-03-25
-
Resolve race in terminate_
one_thread. If two threads called terminate_
one_thread simultaneously it was possible for
both threadpool threads to unregister before either terminate_one_thread picked the
terminating_thread_ mutex lock up again. In this case the second threadpool thread would overwrite terminating_
thread_ id, and the
second terminate_one_thread call would timeout. This is fundamentally a typical producer/consumer situation; resolve it by having terminating
threads write to a queue of ids, and terminate_one_thread pull from that queue. - 2355. By Chris Halse Rogers on 2015-03-26
-
Switch ThreadExiter over to an eventfd.
We don't actually need a pipe; an eventfd is lighter for just handling notifications.
- 2356. By Chris Halse Rogers on 2015-03-26
-
Fix handles_
events_ in_parent_ thread test. We need to post a buffer to the surface in order for it to be a vaild focus target!
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2356
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
- 2357. By Chris Halse Rogers on 2015-03-26
-
Merge trunk
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2357
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 2358. By Chris Halse Rogers on 2015-03-27
-
Merge trunk. MOAR CONFLICTS!
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2358
http://
Executed test runs:
SUCCESS: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 2359. By Chris Halse Rogers on 2015-03-31
-
Merge trunk
- 2360. By Chris Halse Rogers on 2015-03-31
-
Fix race in dispatches_
multiple_ dispatchees_ simultaneously
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2360
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
FAILURE: http://
FAILURE: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 2361. By Chris Halse Rogers on 2015-04-01
-
Merge trunk
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2360
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2361
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
FAILURE: http://
FAILURE: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2362
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
FAILURE: http://
FAILURE: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2364
http://
Executed test runs:
SUCCESS: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| Alan Griffiths (alan-griffiths) wrote : | # |
2850+ auto dispatchable = std::make_
2851+ {
2852+ static std::atomic<int> dispatch_count{0};
2853+ char buffer[80] = {0};
2854+ pthread_
2855+ EXPECT_THAT(buffer, StartsWith(
2856+
2857+ if (++dispatch_count == threadcount)
2858+ {
2859+ dispatched-
2860+ }
2861+ else
2862+ {
2863+ dispatched-
2864+ }
2865+ });
I'm not convinced by the massive indents that this style causes. (Nor the multi-line diffs a simple change like "auto dispatchable" => "auto const dispatchable" would imply.)
| Alexandros Frantzis (afrantzis) wrote : | # |
286 + if (eventloop) abort();
We should print out an error message before we abort so that the users have some clue of what they did wrong.
| PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:2366
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
FAILURE: http://
FAILURE: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
| Chris Halse Rogers (raof) wrote : | # |
Oh ho ho!
While cleaning up the dispatch tests I've noticed that mir_connection_
Ryan *will* be pleased that I have to fix that case first!
- 2362. By Chris Halse Rogers on 2015-04-16
-
Merge trunk
- 2363. By Chris Halse Rogers on 2015-04-16
-
ClientLibrary dispatch tests: release the MirConnection from the dispatch thread.
This prevents us from accessing a freed MirConnection.
- 2364. By Chris Halse Rogers on 2015-04-16
-
Add acceptance test for async/sync call interaction with manual dispatch.
- 2365. By Chris Halse Rogers on 2015-05-05
-
Use mir::require for MirConnection:
:dispatch( ) precondition - 2366. By Chris Halse Rogers on 2015-05-05
-
make_client_
protobuf_ tests_match_ naming_ scheme - 2367. By Chris Halse Rogers on 2015-05-05
-
Merge trunk
- 2368. By Chris Halse Rogers on 2015-05-07
-
Improve MirProtobufRpcC
hanneltests. Rather than having the mock StreamTransport manually notifying until all
data is read (somewhat defeating the purpose of the “does it read all the
data” test), have the mock StreamTransport properly implement Dispatchable
and use MirProtobufRpcChannel' s Dispatchable interface to drive things. - 2369. By Chris Halse Rogers on 2015-05-07
-
Merge prereq: ActionQueue
- 2370. By Chris Halse Rogers on 2015-05-07
-
Add an out-of-order processing mode to MirProtobufRpcC
hannel. This lets a consumer wait on the result of a particular call, delaying other message
processing until it has completed.This is required for proper *_sync handling in eventloop-driven dispatch mode.
- 2371. By Chris Halse Rogers on 2015-05-08
-
Fix mir_connection_
release with manual dispatch - 2372. By Chris Halse Rogers on 2015-05-12
-
Hook up process_
next_request_ first to MirConnection - 2373. By Chris Halse Rogers on 2015-05-12
-
Add mir_wait_
handle_ ready to client API - 2374. By Chris Halse Rogers on 2015-05-12
-
Pump the eventloop from the main test body.
This makes it possible to mix synchronous and asynchronous calls in the test;
otherwise the synchonous calls get done on the main thread, and the asynchonous
calls on the eventloop thread. - 2375. By Chris Halse Rogers on 2015-05-13
-
Move reply parsing out of PendingCallCache and into ProtobufRpc.
This lets us do all the reply processing in one place, leaving the
PendingCallCache to just handle ID lookup, storage, and final completion
dispatch. - 2376. By Chris Halse Rogers on 2015-05-13
-
Make MirBasicRpcChannel the lowest-
common- denominator type. Rather than dynamic_cast<>ing in multiple places, just return a MirBasicRpcChannel
from ConnectionConfiguration and ensure that MirBasicRpcChannel provides all the
interfaces the code needs. - 2377. By Chris Halse Rogers on 2015-05-13
-
Add a way to get the MirConnection associated with a BufferStream.
This is necessary for synchonous calls on manually-dispatched MirConnections
- 2378. By Chris Halse Rogers on 2015-05-13
-
Add a way to get the MirConnection associated with a MirSurface
- 2379. By Chris Halse Rogers on 2015-05-14
-
We treat MirBufferStream as a ClientBufferStream internally - make sure the pointers we return *are* ClientBufferStreams
- 2380. By Chris Halse Rogers on 2015-05-14
-
Enable getting a MirConnection out of a MirScreencast
- 2381. By Chris Halse Rogers on 2015-05-14
-
Add helper infrastructure for making synchronous RPC calls
- 2382. By Chris Halse Rogers on 2015-05-14
-
Use make_synchronou
s_call helper for all synchronous RPC calls - 2383. By Chris Halse Rogers on 2015-05-14
-
Minor improvements to synchronous helper
- 2384. By Chris Halse Rogers on 2015-05-14
-
Initialise ProtobufRpcChan
nel::prioritise _next_request. Thanks, valgrind.
- 2385. By Chris Halse Rogers on 2015-05-14
-
Don't call a synchronous method from a manually-dispatched async callback.
This fails for... some reason. Don't know at the moment.
- 2386. By Chris Halse Rogers on 2015-05-14
-
Free the surface_spec in ClientLibrary test.
Now doesn't leak!
- 2387. By Chris Halse Rogers on 2015-05-14
-
Add valgrind suppressions for GDBus bollocks.
- 2388. By Chris Halse Rogers on 2016-06-17
-
Merge trunk.
Lots and lots of changes, and the test-suite now fails due to NBS, but
commit this so that there's a stable base to fix the test-suite on. - 2389. By Chris Halse Rogers on 2016-06-27
-
Merge prerequisite
- 2390. By Chris Halse Rogers on 2016-06-28
-
Set connection field of MirScreencast error-objects.
The synchonous dispatch helper requires the MirConnection to be valid.
- 2391. By Chris Halse Rogers on 2016-06-28
-
Update tests; everything now passes.
Mostly. Still have crashes where *_release_sync race with event delivery on the released object.
- 2392. By Chris Halse Rogers on 2016-06-28
-
Remove superfluous threads in tests.
These mt::AutoJoinThr
ead()s were immediately being destroyed - and so, thread.join()ed - so
they only served to obfuscate the callstack. - 2393. By Chris Halse Rogers on 2016-06-28
-
Add mir_connect_
with_manual_ dispatch_ sync. It's easy, it's plausibly useful, and it makes the tests easier
- 2394. By Chris Halse Rogers on 2016-06-28
-
Merge trunk
- 2395. By Chris Halse Rogers on 2016-07-04
-
Revert no-hidden-
RPC-in- bufferstream. This turns out to be surprisingly hard, and I can work around it.
- 2396. By Chris Halse Rogers on 2016-07-04
-
Merge trunk
- 2397. By Chris Halse Rogers on 2016-07-05
-
Revert the no-hidden-
BufferStream- RPC reversion. Turns out I *can* make this work.
- 2398. By Chris Halse Rogers on 2016-07-06
-
Merge in new bufferstream-
no-hidden- RPC - 2399. By Chris Halse Rogers on 2016-11-21
-
Merge trunk, resolving conflicts but not testsuite failures
- 2400. By Chris Halse Rogers on 2016-11-21
-
Merge BufferStream simplification branch
- 2401. By Chris Halse Rogers on 2016-11-21
-
Merge NoTLSFuture<
T>::detach( ) - 2402. By Chris Halse Rogers on 2016-12-08
-
Merge prerequisite, resolving conflicts
Unmerged revisions
- 2402. By Chris Halse Rogers on 2016-12-08
-
Merge prerequisite, resolving conflicts
- 2401. By Chris Halse Rogers on 2016-11-21
-
Merge NoTLSFuture<
T>::detach( ) - 2400. By Chris Halse Rogers on 2016-11-21
-
Merge BufferStream simplification branch
- 2399. By Chris Halse Rogers on 2016-11-21
-
Merge trunk, resolving conflicts but not testsuite failures
- 2398. By Chris Halse Rogers on 2016-07-06
-
Merge in new bufferstream-
no-hidden- RPC - 2397. By Chris Halse Rogers on 2016-07-05
-
Revert the no-hidden-
BufferStream- RPC reversion. Turns out I *can* make this work.
- 2396. By Chris Halse Rogers on 2016-07-04
-
Merge trunk
- 2395. By Chris Halse Rogers on 2016-07-04
-
Revert no-hidden-
RPC-in- bufferstream. This turns out to be surprisingly hard, and I can work around it.
- 2394. By Chris Halse Rogers on 2016-06-28
-
Merge trunk
- 2393. By Chris Halse Rogers on 2016-06-28
-
Add mir_connect_
with_manual_ dispatch_ sync. It's easy, it's plausibly useful, and it makes the tests easier

FAILED: Continuous integration, rev:2326 jenkins. qa.ubuntu. com/job/ mir-ci/ 2841/ jenkins. qa.ubuntu. com/job/ mir-android- vivid-i386- build/1105 jenkins. qa.ubuntu. com/job/ mir-clang- vivid-amd64- build/1104 jenkins. qa.ubuntu. com/job/ mir-mediumtests -vivid- touch/1066/ console jenkins. qa.ubuntu. com/job/ mir-vivid- amd64-ci/ 838/console jenkins. qa.ubuntu. com/job/ mir-mediumtests -builder- vivid-armhf/ 1066 jenkins. qa.ubuntu. com/job/ mir-mediumtests -builder- vivid-armhf/ 1066/artifact/ work/output/ *zip*/output. zip jenkins. qa.ubuntu. com/job/ mir-mediumtests -runner- mako/4122/ console s-jenkins. ubuntu- ci:8080/ job/touch- flash-device/ 17541
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
FAILURE: http://
FAILURE: http://
SUCCESS: http://
deb: http://
FAILURE: http://
SUCCESS: http://
Click here to trigger a rebuild: s-jenkins. ubuntu- ci:8080/ job/mir- ci/2841/ rebuild
http://