Mir

Merge lp:~alan-griffiths/mir/remove-force_requests_to_complete into lp:mir

Proposed by Alan Griffiths
Status: Work in progress
Proposed branch: lp:~alan-griffiths/mir/remove-force_requests_to_complete
Merge into: lp:mir
Prerequisite: lp:~alan-griffiths/mir/SwitchingBundle-controls-completion-of-client_acquire-without-blocking
Diff against target: 1020 lines (+76/-217)
34 files modified
examples/demo-inprocess-surface-client/inprocess_egl_client.cpp (+0/-2)
include/server/mir/compositor/buffer_stream.h (+0/-1)
include/server/mir/default_server_configuration.h (+0/-1)
include/server/mir/frontend/surface.h (+0/-2)
include/server/mir/shell/session.h (+0/-2)
include/test/mir_test_doubles/stub_buffer_stream.h (+0/-4)
include/test/mir_test_doubles/stub_session.h (+0/-3)
include/test/mir_test_doubles/stub_shell_session.h (+0/-3)
src/server/compositor/buffer_bundle.h (+0/-1)
src/server/compositor/buffer_stream_surfaces.cpp (+0/-6)
src/server/compositor/buffer_stream_surfaces.h (+0/-1)
src/server/compositor/switching_bundle.cpp (+0/-9)
src/server/compositor/switching_bundle.h (+0/-1)
src/server/frontend/default_configuration.cpp (+0/-4)
src/server/frontend/published_socket_connector.cpp (+1/-10)
src/server/frontend/published_socket_connector.h (+0/-3)
src/server/frontend/session_mediator.cpp (+9/-5)
src/server/frontend/session_mediator.h (+2/-1)
src/server/scene/application_session.cpp (+0/-9)
src/server/scene/application_session.h (+0/-2)
src/server/scene/basic_surface.cpp (+0/-5)
src/server/scene/basic_surface.h (+0/-1)
src/server/scene/default_configuration.cpp (+0/-13)
src/server/scene/surface_impl.cpp (+0/-5)
src/server/scene/surface_impl.h (+0/-2)
tests/integration-tests/compositor/test_buffer_stream.cpp (+0/-2)
tests/integration-tests/test_swapinterval.cpp (+0/-1)
tests/mir_test_doubles/test_protobuf_socket_server.cpp (+0/-1)
tests/unit-tests/compositor/test_buffer_stream.cpp (+0/-21)
tests/unit-tests/compositor/test_switching_bundle.cpp (+0/-4)
tests/unit-tests/frontend/test_published_socket_connector.cpp (+0/-17)
tests/unit-tests/frontend/test_session_mediator.cpp (+64/-64)
tests/unit-tests/scene/test_surface.cpp (+0/-10)
tests/unit-tests/scene/test_surface_stack.cpp (+0/-1)
To merge this branch: bzr merge lp:~alan-griffiths/mir/remove-force_requests_to_complete
Reviewer Review Type Date Requested Status
Mir development team Pending
Review via email: mp+205173@code.launchpad.net

Commit message

Strip out all the force_requests_to_complete() code that became obsolete

Description of the change

Strip out all the force_requests_to_complete() code that became obsolete with lp:~alan-griffiths/mir/SwitchingBundle-controls-completion-of-client_acquire-without-blocking

To post a comment you must log in.

Unmerged revisions

1372. By Alan Griffiths

Try extending lifetime of session mediator until callback processed

1371. By Alan Griffiths

merge lp:~alan-griffiths/mir/SwitchingBundle-controls-completion-of-client_acquire-without-blocking

1370. By Alan Griffiths

Strip out all the force_requests_to_complete() code that became obsolete with lp:~alan-griffiths/mir/SwitchingBundle-controls-completion-of-client_acquire-without-blocking

1369. By Alan Griffiths

merge lp:~alan-griffiths/mir/SwitchingBundle-controls-completion-of-client_acquire-without-blocking

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'examples/demo-inprocess-surface-client/inprocess_egl_client.cpp'
--- examples/demo-inprocess-surface-client/inprocess_egl_client.cpp 2014-01-13 06:12:33 +0000
+++ examples/demo-inprocess-surface-client/inprocess_egl_client.cpp 2014-02-06 14:45:58 +0000
@@ -69,8 +69,6 @@
69{69{
70 terminate = true;70 terminate = true;
71 auto session = focus_controller->focussed_application().lock();71 auto session = focus_controller->focussed_application().lock();
72 if (session)
73 session->force_requests_to_complete();
74 client_thread.join();72 client_thread.join();
75}73}
7674
7775
=== modified file 'include/server/mir/compositor/buffer_stream.h'
--- include/server/mir/compositor/buffer_stream.h 2014-02-06 14:45:58 +0000
+++ include/server/mir/compositor/buffer_stream.h 2014-02-06 14:45:58 +0000
@@ -49,7 +49,6 @@
49 virtual geometry::Size stream_size() = 0;49 virtual geometry::Size stream_size() = 0;
50 virtual void resize(geometry::Size const& size) = 0;50 virtual void resize(geometry::Size const& size) = 0;
51 virtual void allow_framedropping(bool) = 0;51 virtual void allow_framedropping(bool) = 0;
52 virtual void force_requests_to_complete() = 0;
53};52};
5453
55}54}
5655
=== modified file 'include/server/mir/default_server_configuration.h'
--- include/server/mir/default_server_configuration.h 2014-01-29 18:02:33 +0000
+++ include/server/mir/default_server_configuration.h 2014-02-06 14:45:58 +0000
@@ -313,7 +313,6 @@
313 std::shared_ptr<scene::SessionManager> the_session_manager();313 std::shared_ptr<scene::SessionManager> the_session_manager();
314 std::shared_ptr<scene::SurfaceBuilder> the_surface_builder();314 std::shared_ptr<scene::SurfaceBuilder> the_surface_builder();
315 std::shared_ptr<scene::SurfaceController> the_surface_controller();315 std::shared_ptr<scene::SurfaceController> the_surface_controller();
316 std::function<void()> force_threads_to_unblock_callback();
317};316};
318}317}
319318
320319
=== modified file 'include/server/mir/frontend/surface.h'
--- include/server/mir/frontend/surface.h 2014-02-06 14:45:58 +0000
+++ include/server/mir/frontend/surface.h 2014-02-06 14:45:58 +0000
@@ -51,8 +51,6 @@
5151
52 virtual ~Surface() {}52 virtual ~Surface() {}
5353
54 virtual void force_requests_to_complete() = 0;
55
56 virtual geometry::Size size() const = 0;54 virtual geometry::Size size() const = 0;
57 virtual MirPixelFormat pixel_format() const = 0;55 virtual MirPixelFormat pixel_format() const = 0;
5856
5957
=== modified file 'include/server/mir/shell/session.h'
--- include/server/mir/shell/session.h 2014-01-13 06:12:33 +0000
+++ include/server/mir/shell/session.h 2014-02-06 14:45:58 +0000
@@ -33,8 +33,6 @@
33{33{
34public:34public:
35 virtual std::string name() const = 0;35 virtual std::string name() const = 0;
36 virtual void force_requests_to_complete() = 0;
37
38 virtual void take_snapshot(SnapshotCallback const& snapshot_taken) = 0;36 virtual void take_snapshot(SnapshotCallback const& snapshot_taken) = 0;
39 virtual std::shared_ptr<Surface> default_surface() const = 0;37 virtual std::shared_ptr<Surface> default_surface() const = 0;
40 virtual void set_lifecycle_state(MirLifecycleState state) = 0;38 virtual void set_lifecycle_state(MirLifecycleState state) = 0;
4139
=== modified file 'include/test/mir_test_doubles/stub_buffer_stream.h'
--- include/test/mir_test_doubles/stub_buffer_stream.h 2014-02-06 14:45:58 +0000
+++ include/test/mir_test_doubles/stub_buffer_stream.h 2014-02-06 14:45:58 +0000
@@ -64,10 +64,6 @@
64 {64 {
65 }65 }
6666
67 void force_requests_to_complete() override
68 {
69 }
70
71 void allow_framedropping(bool) override67 void allow_framedropping(bool) override
72 {68 {
73 }69 }
7470
=== modified file 'include/test/mir_test_doubles/stub_session.h'
--- include/test/mir_test_doubles/stub_session.h 2013-08-28 03:41:48 +0000
+++ include/test/mir_test_doubles/stub_session.h 2014-02-06 14:45:58 +0000
@@ -45,9 +45,6 @@
45 {45 {
46 return std::string();46 return std::string();
47 }47 }
48 void force_requests_to_complete()
49 {
50 }
51 void hide()48 void hide()
52 {49 {
53 }50 }
5451
=== modified file 'include/test/mir_test_doubles/stub_shell_session.h'
--- include/test/mir_test_doubles/stub_shell_session.h 2014-01-13 06:12:33 +0000
+++ include/test/mir_test_doubles/stub_shell_session.h 2014-02-06 14:45:58 +0000
@@ -45,9 +45,6 @@
45 {45 {
46 return std::string();46 return std::string();
47 }47 }
48 void force_requests_to_complete() override
49 {
50 }
51 void hide() override48 void hide() override
52 {49 {
53 }50 }
5451
=== modified file 'src/server/compositor/buffer_bundle.h'
--- src/server/compositor/buffer_bundle.h 2014-02-06 14:45:58 +0000
+++ src/server/compositor/buffer_bundle.h 2014-02-06 14:45:58 +0000
@@ -44,7 +44,6 @@
4444
45 virtual graphics::BufferProperties properties() const = 0;45 virtual graphics::BufferProperties properties() const = 0;
46 virtual void allow_framedropping(bool dropping_allowed) = 0;46 virtual void allow_framedropping(bool dropping_allowed) = 0;
47 virtual void force_requests_to_complete() = 0;
48 virtual void resize(const geometry::Size &newsize) = 0;47 virtual void resize(const geometry::Size &newsize) = 0;
49protected:48protected:
50 BufferBundle() = default;49 BufferBundle() = default;
5150
=== modified file 'src/server/compositor/buffer_stream_surfaces.cpp'
--- src/server/compositor/buffer_stream_surfaces.cpp 2014-02-06 14:45:58 +0000
+++ src/server/compositor/buffer_stream_surfaces.cpp 2014-02-06 14:45:58 +0000
@@ -34,7 +34,6 @@
3434
35mc::BufferStreamSurfaces::~BufferStreamSurfaces()35mc::BufferStreamSurfaces::~BufferStreamSurfaces()
36{36{
37 force_requests_to_complete();
38}37}
3938
40std::shared_ptr<mg::Buffer> mc::BufferStreamSurfaces::lock_compositor_buffer(39std::shared_ptr<mg::Buffer> mc::BufferStreamSurfaces::lock_compositor_buffer(
@@ -74,11 +73,6 @@
74 buffer_bundle->resize(size);73 buffer_bundle->resize(size);
75}74}
7675
77void mc::BufferStreamSurfaces::force_requests_to_complete()
78{
79 buffer_bundle->force_requests_to_complete();
80}
81
82void mc::BufferStreamSurfaces::allow_framedropping(bool allow)76void mc::BufferStreamSurfaces::allow_framedropping(bool allow)
83{77{
84 buffer_bundle->allow_framedropping(allow);78 buffer_bundle->allow_framedropping(allow);
8579
=== modified file 'src/server/compositor/buffer_stream_surfaces.h'
--- src/server/compositor/buffer_stream_surfaces.h 2014-02-06 14:45:58 +0000
+++ src/server/compositor/buffer_stream_surfaces.h 2014-02-06 14:45:58 +0000
@@ -49,7 +49,6 @@
49 geometry::Size stream_size() override;49 geometry::Size stream_size() override;
50 void resize(geometry::Size const& size) override;50 void resize(geometry::Size const& size) override;
51 void allow_framedropping(bool) override;51 void allow_framedropping(bool) override;
52 void force_requests_to_complete() override;
5352
54protected:53protected:
55 BufferStreamSurfaces(const BufferStreamSurfaces&) = delete;54 BufferStreamSurfaces(const BufferStreamSurfaces&) = delete;
5655
=== modified file 'src/server/compositor/switching_bundle.cpp'
--- src/server/compositor/switching_bundle.cpp 2014-02-06 14:45:58 +0000
+++ src/server/compositor/switching_bundle.cpp 2014-02-06 14:45:58 +0000
@@ -398,15 +398,6 @@
398 cond.notify_all();398 cond.notify_all();
399}399}
400400
401void mc::SwitchingBundle::force_requests_to_complete()
402{
403 std::unique_lock<std::mutex> lock(guard);
404 client_acquire_todo = nullptr;
405 drop_frames(nready);
406 force_drop = nbuffers + 1;
407 cond.notify_all();
408}
409
410void mc::SwitchingBundle::allow_framedropping(bool allow_dropping)401void mc::SwitchingBundle::allow_framedropping(bool allow_dropping)
411{402{
412 std::unique_lock<std::mutex> lock(guard);403 std::unique_lock<std::mutex> lock(guard);
413404
=== modified file 'src/server/compositor/switching_bundle.h'
--- src/server/compositor/switching_bundle.h 2014-02-06 14:45:58 +0000
+++ src/server/compositor/switching_bundle.h 2014-02-06 14:45:58 +0000
@@ -56,7 +56,6 @@
56 void compositor_release(std::shared_ptr<graphics::Buffer> const& released_buffer);56 void compositor_release(std::shared_ptr<graphics::Buffer> const& released_buffer);
57 std::shared_ptr<graphics::Buffer> snapshot_acquire();57 std::shared_ptr<graphics::Buffer> snapshot_acquire();
58 void snapshot_release(std::shared_ptr<graphics::Buffer> const& released_buffer);58 void snapshot_release(std::shared_ptr<graphics::Buffer> const& released_buffer);
59 void force_requests_to_complete();
60 void allow_framedropping(bool dropping_allowed);59 void allow_framedropping(bool dropping_allowed);
61 bool framedropping_allowed() const;60 bool framedropping_allowed() const;
6261
6362
=== modified file 'src/server/frontend/default_configuration.cpp'
--- src/server/frontend/default_configuration.cpp 2014-01-30 13:27:59 +0000
+++ src/server/frontend/default_configuration.cpp 2014-02-06 14:45:58 +0000
@@ -114,14 +114,11 @@
114 {114 {
115 auto const threads = the_options()->get<int>(frontend_threads_opt);115 auto const threads = the_options()->get<int>(frontend_threads_opt);
116116
117 auto const& force_threads_to_unblock = force_threads_to_unblock_callback();
118
119 if (the_options()->is_set(no_server_socket_opt))117 if (the_options()->is_set(no_server_socket_opt))
120 {118 {
121 return std::make_shared<mf::BasicConnector>(119 return std::make_shared<mf::BasicConnector>(
122 the_session_creator(),120 the_session_creator(),
123 threads,121 threads,
124 force_threads_to_unblock,
125 the_connector_report());122 the_connector_report());
126 }123 }
127 else124 else
@@ -130,7 +127,6 @@
130 the_socket_file(),127 the_socket_file(),
131 the_session_creator(),128 the_session_creator(),
132 threads,129 threads,
133 force_threads_to_unblock,
134 the_connector_report());130 the_connector_report());
135 }131 }
136 });132 });
137133
=== modified file 'src/server/frontend/published_socket_connector.cpp'
--- src/server/frontend/published_socket_connector.cpp 2014-01-22 17:05:48 +0000
+++ src/server/frontend/published_socket_connector.cpp 2014-02-06 14:45:58 +0000
@@ -35,9 +35,8 @@
35 const std::string& socket_file,35 const std::string& socket_file,
36 std::shared_ptr<SessionCreator> const& session_creator,36 std::shared_ptr<SessionCreator> const& session_creator,
37 int threads,37 int threads,
38 std::function<void()> const& force_threads_to_unblock,
39 std::shared_ptr<ConnectorReport> const& report)38 std::shared_ptr<ConnectorReport> const& report)
40: BasicConnector(session_creator, threads, force_threads_to_unblock, report),39: BasicConnector(session_creator, threads, report),
41 socket_file(socket_file),40 socket_file(socket_file),
42 acceptor(io_service, socket_file)41 acceptor(io_service, socket_file)
43{42{
@@ -83,12 +82,10 @@
83mf::BasicConnector::BasicConnector(82mf::BasicConnector::BasicConnector(
84 std::shared_ptr<SessionCreator> const& session_creator,83 std::shared_ptr<SessionCreator> const& session_creator,
85 int threads,84 int threads,
86 std::function<void()> const& force_threads_to_unblock,
87 std::shared_ptr<ConnectorReport> const& report)85 std::shared_ptr<ConnectorReport> const& report)
88: work(io_service),86: work(io_service),
89 report(report),87 report(report),
90 io_service_threads(threads),88 io_service_threads(threads),
91 force_threads_to_unblock(force_threads_to_unblock),
92 session_creator{session_creator}89 session_creator{session_creator}
93{90{
94}91}
@@ -123,12 +120,6 @@
123 /* Stop processing new requests */120 /* Stop processing new requests */
124 io_service.stop();121 io_service.stop();
125122
126 /*
127 * Ensure that any pending requests will complete (i.e., that they
128 * will not block indefinitely waiting for a resource from the server)
129 */
130 force_threads_to_unblock();
131
132 report->stopping_threads(io_service_threads.size());123 report->stopping_threads(io_service_threads.size());
133124
134 /* Wait for all io processing threads to finish */125 /* Wait for all io processing threads to finish */
135126
=== modified file 'src/server/frontend/published_socket_connector.h'
--- src/server/frontend/published_socket_connector.h 2014-01-22 17:05:48 +0000
+++ src/server/frontend/published_socket_connector.h 2014-02-06 14:45:58 +0000
@@ -50,7 +50,6 @@
50 explicit BasicConnector(50 explicit BasicConnector(
51 std::shared_ptr<SessionCreator> const& session_creator,51 std::shared_ptr<SessionCreator> const& session_creator,
52 int threads,52 int threads,
53 std::function<void()> const& force_threads_to_unblock,
54 std::shared_ptr<ConnectorReport> const& report);53 std::shared_ptr<ConnectorReport> const& report);
55 ~BasicConnector() noexcept;54 ~BasicConnector() noexcept;
56 void start() override;55 void start() override;
@@ -67,7 +66,6 @@
6766
68private:67private:
69 std::vector<std::thread> io_service_threads;68 std::vector<std::thread> io_service_threads;
70 std::function<void()> const force_threads_to_unblock;
71 std::shared_ptr<SessionCreator> const session_creator;69 std::shared_ptr<SessionCreator> const session_creator;
72};70};
7371
@@ -79,7 +77,6 @@
79 const std::string& socket_file,77 const std::string& socket_file,
80 std::shared_ptr<SessionCreator> const& session_creator,78 std::shared_ptr<SessionCreator> const& session_creator,
81 int threads,79 int threads,
82 std::function<void()> const& force_threads_to_unblock,
83 std::shared_ptr<ConnectorReport> const& report);80 std::shared_ptr<ConnectorReport> const& report);
84 ~PublishedSocketConnector() noexcept;81 ~PublishedSocketConnector() noexcept;
8582
8683
=== modified file 'src/server/frontend/session_mediator.cpp'
--- src/server/frontend/session_mediator.cpp 2014-02-06 14:45:58 +0000
+++ src/server/frontend/session_mediator.cpp 2014-02-06 14:45:58 +0000
@@ -174,20 +174,22 @@
174 if (surface->supports_input())174 if (surface->supports_input())
175 response->add_fd(surface->client_input_fd());175 response->add_fd(surface->client_input_fd());
176176
177 auto const self = shared_from_this();
178
177 advance_buffer(surf_id, *surface,179 advance_buffer(surf_id, *surface,
178 [lock, this, response, done, session](graphics::Buffer* client_buffer, bool need_full_ipc)180 [lock, self, response, done, session](graphics::Buffer* client_buffer, bool need_full_ipc)
179 {181 {
180 lock->unlock();182 lock->unlock();
181183
182 auto buffer = response->mutable_buffer();184 auto buffer = response->mutable_buffer();
183 pack_protobuf_buffer(*buffer, client_buffer, need_full_ipc);185 self->pack_protobuf_buffer(*buffer, client_buffer, need_full_ipc);
184186
185 // TODO: NOTE: We use the ordering here to ensure the shell acts on the surface after the surface ID is sent over the wire.187 // TODO: NOTE: We use the ordering here to ensure the shell acts on the surface after the surface ID is sent over the wire.
186 // This guarantees that notifications such as, gained focus, etc, can be correctly interpreted by the client.188 // This guarantees that notifications such as, gained focus, etc, can be correctly interpreted by the client.
187 // To achieve this order we rely on done->Run() sending messages synchronously. As documented in mfd::SocketMessenger::send.189 // To achieve this order we rely on done->Run() sending messages synchronously. As documented in mfd::SocketMessenger::send.
188 // this will require additional synchronization if mfd::SocketMessenger::send changes.190 // this will require additional synchronization if mfd::SocketMessenger::send changes.
189 done->Run();191 done->Run();
190 shell->handle_surface_created(session);192 self->shell->handle_surface_created(session);
191 });193 });
192}194}
193195
@@ -216,12 +218,14 @@
216218
217 auto surface = session->get_surface(surf_id);219 auto surface = session->get_surface(surf_id);
218220
221 auto const self = shared_from_this();
222
219 advance_buffer(surf_id, *surface,223 advance_buffer(surf_id, *surface,
220 [lock, this, response, done, session](graphics::Buffer* client_buffer, bool need_full_ipc)224 [lock, self, response, done, session](graphics::Buffer* client_buffer, bool need_full_ipc)
221 {225 {
222 lock->unlock();226 lock->unlock();
223227
224 pack_protobuf_buffer(*response, client_buffer, need_full_ipc);228 self->pack_protobuf_buffer(*response, client_buffer, need_full_ipc);
225229
226 done->Run();230 done->Run();
227 });231 });
228232
=== modified file 'src/server/frontend/session_mediator.h'
--- src/server/frontend/session_mediator.h 2014-02-06 14:45:58 +0000
+++ src/server/frontend/session_mediator.h 2014-02-06 14:45:58 +0000
@@ -56,7 +56,8 @@
56class Screencast;56class Screencast;
5757
58// SessionMediator relays requests from the client process into the server.58// SessionMediator relays requests from the client process into the server.
59class SessionMediator : public mir::protobuf::DisplayServer59class SessionMediator : public mir::protobuf::DisplayServer,
60 public std::enable_shared_from_this<SessionMediator>
60{61{
61public:62public:
62 SessionMediator(63 SessionMediator(
6364
=== modified file 'src/server/scene/application_session.cpp'
--- src/server/scene/application_session.cpp 2014-01-13 06:12:33 +0000
+++ src/server/scene/application_session.cpp 2014-02-06 14:45:58 +0000
@@ -125,15 +125,6 @@
125 return session_name;125 return session_name;
126}126}
127127
128void ms::ApplicationSession::force_requests_to_complete()
129{
130 std::unique_lock<std::mutex> lock(surfaces_mutex);
131 for (auto& id_s : surfaces)
132 {
133 id_s.second->force_requests_to_complete();
134 }
135}
136
137void ms::ApplicationSession::hide()128void ms::ApplicationSession::hide()
138{129{
139 std::unique_lock<std::mutex> lock(surfaces_mutex);130 std::unique_lock<std::mutex> lock(surfaces_mutex);
140131
=== modified file 'src/server/scene/application_session.h'
--- src/server/scene/application_session.h 2014-01-13 06:12:33 +0000
+++ src/server/scene/application_session.h 2014-02-06 14:45:58 +0000
@@ -61,8 +61,6 @@
6161
62 std::string name() const;62 std::string name() const;
6363
64 void force_requests_to_complete();
65
66 void hide();64 void hide();
67 void show();65 void show();
6866
6967
=== modified file 'src/server/scene/basic_surface.cpp'
--- src/server/scene/basic_surface.cpp 2014-02-06 14:45:58 +0000
+++ src/server/scene/basic_surface.cpp 2014-02-06 14:45:58 +0000
@@ -49,11 +49,6 @@
49 report->surface_created(this);49 report->surface_created(this);
50}50}
5151
52void ms::BasicSurface::force_requests_to_complete()
53{
54 surface_buffer_stream->force_requests_to_complete();
55}
56
57ms::BasicSurface::~BasicSurface()52ms::BasicSurface::~BasicSurface()
58{53{
59 report->surface_deleted(this);54 report->surface_deleted(this);
6055
=== modified file 'src/server/scene/basic_surface.h'
--- src/server/scene/basic_surface.h 2014-02-06 14:45:58 +0000
+++ src/server/scene/basic_surface.h 2014-02-06 14:45:58 +0000
@@ -74,7 +74,6 @@
7474
75 virtual std::shared_ptr<graphics::Buffer> snapshot_buffer() const;75 virtual std::shared_ptr<graphics::Buffer> snapshot_buffer() const;
76 virtual void swap_buffers(graphics::Buffer* old_buffer, std::function<void(graphics::Buffer* new_buffer)> complete);76 virtual void swap_buffers(graphics::Buffer* old_buffer, std::function<void(graphics::Buffer* new_buffer)> complete);
77 virtual void force_requests_to_complete();
7877
79 virtual bool supports_input() const;78 virtual bool supports_input() const;
80 virtual int client_input_fd() const;79 virtual int client_input_fd() const;
8180
=== modified file 'src/server/scene/default_configuration.cpp'
--- src/server/scene/default_configuration.cpp 2014-01-29 15:20:07 +0000
+++ src/server/scene/default_configuration.cpp 2014-02-06 14:45:58 +0000
@@ -205,19 +205,6 @@
205 return the_mediating_display_changer();205 return the_mediating_display_changer();
206}206}
207207
208std::function<void()>
209mir::DefaultServerConfiguration::force_threads_to_unblock_callback()
210{
211 auto shell_sessions = the_session_container();
212 return [shell_sessions]
213 {
214 shell_sessions->for_each([](std::shared_ptr<msh::Session> const& session)
215 {
216 session->force_requests_to_complete();
217 });
218 };
219}
220
221std::shared_ptr<mf::EventSink>208std::shared_ptr<mf::EventSink>
222mir::DefaultServerConfiguration::the_global_event_sink()209mir::DefaultServerConfiguration::the_global_event_sink()
223{210{
224211
=== modified file 'src/server/scene/surface_impl.cpp'
--- src/server/scene/surface_impl.cpp 2014-02-06 14:45:58 +0000
+++ src/server/scene/surface_impl.cpp 2014-02-06 14:45:58 +0000
@@ -73,11 +73,6 @@
73 surface->set_hidden(false);73 surface->set_hidden(false);
74}74}
7575
76void ms::SurfaceImpl::force_requests_to_complete()
77{
78 surface->force_requests_to_complete();
79}
80
81mir::geometry::Size ms::SurfaceImpl::size() const76mir::geometry::Size ms::SurfaceImpl::size() const
82{77{
83 return surface->size();78 return surface->size();
8479
=== modified file 'src/server/scene/surface_impl.h'
--- src/server/scene/surface_impl.h 2014-02-06 14:45:58 +0000
+++ src/server/scene/surface_impl.h 2014-02-06 14:45:58 +0000
@@ -57,8 +57,6 @@
57 virtual void hide();57 virtual void hide();
58 virtual void show();58 virtual void show();
5959
60 virtual void force_requests_to_complete();
61
62 virtual std::string name() const;60 virtual std::string name() const;
6361
64 virtual void move_to(geometry::Point const& top_left);62 virtual void move_to(geometry::Point const& top_left);
6563
=== modified file 'tests/integration-tests/compositor/test_buffer_stream.cpp'
--- tests/integration-tests/compositor/test_buffer_stream.cpp 2014-02-06 14:45:58 +0000
+++ tests/integration-tests/compositor/test_buffer_stream.cpp 2014-02-06 14:45:58 +0000
@@ -326,8 +326,6 @@
326326
327 done = true;327 done = true;
328328
329 buffer_stream.force_requests_to_complete();
330
331 compositor.join();329 compositor.join();
332330
333 for (auto &s : snapshotters)331 for (auto &s : snapshotters)
334332
=== modified file 'tests/integration-tests/test_swapinterval.cpp'
--- tests/integration-tests/test_swapinterval.cpp 2014-02-06 14:45:58 +0000
+++ tests/integration-tests/test_swapinterval.cpp 2014-02-06 14:45:58 +0000
@@ -70,7 +70,6 @@
7070
71 geom::Size stream_size() override { return geom::Size{}; }71 geom::Size stream_size() override { return geom::Size{}; }
72 void resize(geom::Size const&) override {}72 void resize(geom::Size const&) override {}
73 void force_requests_to_complete() override {}
74 void allow_framedropping(bool) override73 void allow_framedropping(bool) override
75 {74 {
76 while (write(render_operations_fd, "a", 1) != 1) continue;75 while (write(render_operations_fd, "a", 1) != 1) continue;
7776
=== modified file 'tests/mir_test_doubles/test_protobuf_socket_server.cpp'
--- tests/mir_test_doubles/test_protobuf_socket_server.cpp 2014-01-22 15:54:11 +0000
+++ tests/mir_test_doubles/test_protobuf_socket_server.cpp 2014-02-06 14:45:58 +0000
@@ -42,7 +42,6 @@
42 std::make_shared<mtd::StubSessionAuthorizer>(),42 std::make_shared<mtd::StubSessionAuthorizer>(),
43 std::make_shared<mf::NullMessageProcessorReport>()),43 std::make_shared<mf::NullMessageProcessorReport>()),
44 10,44 10,
45 []{},
46 report);45 report);
47}46}
48}47}
4948
=== modified file 'tests/unit-tests/compositor/test_buffer_stream.cpp'
--- tests/unit-tests/compositor/test_buffer_stream.cpp 2014-02-06 14:45:58 +0000
+++ tests/unit-tests/compositor/test_buffer_stream.cpp 2014-02-06 14:45:58 +0000
@@ -39,10 +39,6 @@
39 {39 {
40 mock_buffer = std::make_shared<mtd::StubBuffer>();40 mock_buffer = std::make_shared<mtd::StubBuffer>();
41 mock_bundle = std::make_shared<mtd::MockBufferBundle>();41 mock_bundle = std::make_shared<mtd::MockBufferBundle>();
42
43 // Two of the tests care about this, the rest should not...
44 EXPECT_CALL(*mock_bundle, force_requests_to_complete())
45 .Times(::testing::AnyNumber());
46 }42 }
4743
48 std::shared_ptr<mtd::StubBuffer> mock_buffer;44 std::shared_ptr<mtd::StubBuffer> mock_buffer;
@@ -75,23 +71,6 @@
75 EXPECT_EQ(format, returned_pf);71 EXPECT_EQ(format, returned_pf);
76}72}
7773
78TEST_F(BufferStreamTest, force_requests_to_complete)
79{
80 EXPECT_CALL(*mock_bundle, force_requests_to_complete())
81 .Times(2); // Once explcit, once on destruction
82
83 mc::BufferStreamSurfaces buffer_stream(mock_bundle);
84 buffer_stream.force_requests_to_complete();
85}
86
87TEST_F(BufferStreamTest, requests_are_completed_before_destruction)
88{
89 EXPECT_CALL(*mock_bundle, force_requests_to_complete())
90 .Times(1);
91
92 mc::BufferStreamSurfaces buffer_stream(mock_bundle);
93}
94
95TEST_F(BufferStreamTest, get_buffer_for_compositor_handles_resources)74TEST_F(BufferStreamTest, get_buffer_for_compositor_handles_resources)
96{75{
97 using namespace testing;76 using namespace testing;
9877
=== modified file 'tests/unit-tests/compositor/test_switching_bundle.cpp'
--- tests/unit-tests/compositor/test_switching_bundle.cpp 2014-02-06 14:45:58 +0000
+++ tests/unit-tests/compositor/test_switching_bundle.cpp 2014-02-06 14:45:58 +0000
@@ -293,8 +293,6 @@
293 unsigned long frameno = 0;293 unsigned long frameno = 0;
294 const int N = 100;294 const int N = 100;
295295
296 bundle.force_requests_to_complete();
297
298 std::shared_ptr<mg::Buffer> buf[N];296 std::shared_ptr<mg::Buffer> buf[N];
299 for (int i = 0; i < N; i++)297 for (int i = 0; i < N; i++)
300 buf[i] = bundle.compositor_acquire(++frameno);298 buf[i] = bundle.compositor_acquire(++frameno);
@@ -713,7 +711,6 @@
713 * unblock clients. The latter only temporarily unblock clients.711 * unblock clients. The latter only temporarily unblock clients.
714 * But that requires interface changes all over the place...712 * But that requires interface changes all over the place...
715 */713 */
716 bundle.force_requests_to_complete();
717 client.join();714 client.join();
718 }715 }
719}716}
@@ -729,7 +726,6 @@
729 bundle.allow_framedropping(false);726 bundle.allow_framedropping(false);
730727
731 std::thread client(client_thread, std::ref(bundle), nbuffers);728 std::thread client(client_thread, std::ref(bundle), nbuffers);
732 bundle.force_requests_to_complete();
733 client.join();729 client.join();
734730
735 EXPECT_FALSE(bundle.framedropping_allowed());731 EXPECT_FALSE(bundle.framedropping_allowed());
736732
=== modified file 'tests/unit-tests/frontend/test_published_socket_connector.cpp'
--- tests/unit-tests/frontend/test_published_socket_connector.cpp 2014-01-22 15:54:11 +0000
+++ tests/unit-tests/frontend/test_published_socket_connector.cpp 2014-02-06 14:45:58 +0000
@@ -342,27 +342,11 @@
342 EXPECT_EQ(magic.magic(), stub_server_tool->drm_magic);342 EXPECT_EQ(magic.magic(), stub_server_tool->drm_magic);
343}343}
344344
345namespace
346{
347
348class MockForceRequests
349{
350public:
351 MOCK_METHOD0(force_requests_to_complete, void());
352};
353
354}
355
356TEST_F(PublishedSocketConnector, forces_requests_to_complete_when_stopping)345TEST_F(PublishedSocketConnector, forces_requests_to_complete_when_stopping)
357{346{
358 MockForceRequests mock_force_requests;
359 auto stub_server_tool = std::make_shared<mt::StubServerTool>();347 auto stub_server_tool = std::make_shared<mt::StubServerTool>();
360 auto ipc_factory = std::make_shared<mtd::StubIpcFactory>(*stub_server_tool);348 auto ipc_factory = std::make_shared<mtd::StubIpcFactory>(*stub_server_tool);
361349
362 /* Once for the explicit stop() and once when the communicator is destroyed */
363 EXPECT_CALL(mock_force_requests, force_requests_to_complete())
364 .Times(2);
365
366 auto comms = std::make_shared<mf::PublishedSocketConnector>(350 auto comms = std::make_shared<mf::PublishedSocketConnector>(
367 "./test_socket1",351 "./test_socket1",
368 std::make_shared<mf::ProtobufSessionCreator>(352 std::make_shared<mf::ProtobufSessionCreator>(
@@ -370,7 +354,6 @@
370 std::make_shared<mtd::StubSessionAuthorizer>(),354 std::make_shared<mtd::StubSessionAuthorizer>(),
371 std::make_shared<mf::NullMessageProcessorReport>()),355 std::make_shared<mf::NullMessageProcessorReport>()),
372 10,356 10,
373 std::bind(&MockForceRequests::force_requests_to_complete, &mock_force_requests),
374 std::make_shared<mf::NullConnectorReport>());357 std::make_shared<mf::NullConnectorReport>());
375358
376 comms->start();359 comms->start();
377360
=== modified file 'tests/unit-tests/frontend/test_session_mediator.cpp'
--- tests/unit-tests/frontend/test_session_mediator.cpp 2014-02-06 14:45:58 +0000
+++ tests/unit-tests/frontend/test_session_mediator.cpp 2014-02-06 14:45:58 +0000
@@ -206,10 +206,10 @@
206 report{std::make_shared<mf::NullSessionMediatorReport>()},206 report{std::make_shared<mf::NullSessionMediatorReport>()},
207 resource_cache{std::make_shared<mf::ResourceCache>()},207 resource_cache{std::make_shared<mf::ResourceCache>()},
208 stub_screencast{std::make_shared<StubScreencast>()},208 stub_screencast{std::make_shared<StubScreencast>()},
209 mediator{shell, graphics_platform, graphics_changer,209 mediator{std::make_shared<mf::SessionMediator>(shell, graphics_platform, graphics_changer,
210 surface_pixel_formats, report,210 surface_pixel_formats, report,
211 std::make_shared<mtd::NullEventSink>(),211 std::make_shared<mtd::NullEventSink>(),
212 resource_cache, stub_screencast},212 resource_cache, stub_screencast)},
213 stubbed_session{std::make_shared<StubbedSession>()},213 stubbed_session{std::make_shared<StubbedSession>()},
214 null_callback{google::protobuf::NewPermanentCallback(google::protobuf::DoNothing)}214 null_callback{google::protobuf::NewPermanentCallback(google::protobuf::DoNothing)}
215 {215 {
@@ -227,7 +227,7 @@
227 std::shared_ptr<mf::SessionMediatorReport> const report;227 std::shared_ptr<mf::SessionMediatorReport> const report;
228 std::shared_ptr<mf::ResourceCache> const resource_cache;228 std::shared_ptr<mf::ResourceCache> const resource_cache;
229 std::shared_ptr<StubScreencast> const stub_screencast;229 std::shared_ptr<StubScreencast> const stub_screencast;
230 mf::SessionMediator mediator;230 std::shared_ptr<mf::SessionMediator> const mediator;
231 std::shared_ptr<StubbedSession> const stubbed_session;231 std::shared_ptr<StubbedSession> const stubbed_session;
232232
233 std::unique_ptr<google::protobuf::Closure> null_callback;233 std::unique_ptr<google::protobuf::Closure> null_callback;
@@ -243,8 +243,8 @@
243243
244 EXPECT_CALL(*shell, close_session(_)).Times(1);244 EXPECT_CALL(*shell, close_session(_)).Times(1);
245245
246 mediator.connect(nullptr, &connect_parameters, &connection, null_callback.get());246 mediator->connect(nullptr, &connect_parameters, &connection, null_callback.get());
247 mediator.disconnect(nullptr, nullptr, nullptr, null_callback.get());247 mediator->disconnect(nullptr, nullptr, nullptr, null_callback.get());
248}248}
249249
250TEST_F(SessionMediatorTest, calling_methods_before_connect_throws)250TEST_F(SessionMediatorTest, calling_methods_before_connect_throws)
@@ -253,31 +253,31 @@
253 mp::SurfaceParameters request;253 mp::SurfaceParameters request;
254 mp::Surface response;254 mp::Surface response;
255255
256 mediator.create_surface(nullptr, &request, &response, null_callback.get());256 mediator->create_surface(nullptr, &request, &response, null_callback.get());
257 }, std::logic_error);257 }, std::logic_error);
258258
259 EXPECT_THROW({259 EXPECT_THROW({
260 mp::SurfaceId request;260 mp::SurfaceId request;
261 mp::Buffer response;261 mp::Buffer response;
262262
263 mediator.next_buffer(nullptr, &request, &response, null_callback.get());263 mediator->next_buffer(nullptr, &request, &response, null_callback.get());
264 }, std::logic_error);264 }, std::logic_error);
265265
266 EXPECT_THROW({266 EXPECT_THROW({
267 mp::SurfaceId request;267 mp::SurfaceId request;
268268
269 mediator.release_surface(nullptr, &request, nullptr, null_callback.get());269 mediator->release_surface(nullptr, &request, nullptr, null_callback.get());
270 }, std::logic_error);270 }, std::logic_error);
271271
272 EXPECT_THROW({272 EXPECT_THROW({
273 mp::DRMMagic request;273 mp::DRMMagic request;
274 mp::DRMAuthMagicStatus response;274 mp::DRMAuthMagicStatus response;
275275
276 mediator.drm_auth_magic(nullptr, &request, &response, null_callback.get());276 mediator->drm_auth_magic(nullptr, &request, &response, null_callback.get());
277 }, std::logic_error);277 }, std::logic_error);
278278
279 EXPECT_THROW({279 EXPECT_THROW({
280 mediator.disconnect(nullptr, nullptr, nullptr, null_callback.get());280 mediator->disconnect(nullptr, nullptr, nullptr, null_callback.get());
281 }, std::logic_error);281 }, std::logic_error);
282}282}
283283
@@ -286,23 +286,23 @@
286 mp::ConnectParameters connect_parameters;286 mp::ConnectParameters connect_parameters;
287 mp::Connection connection;287 mp::Connection connection;
288288
289 mediator.connect(nullptr, &connect_parameters, &connection, null_callback.get());289 mediator->connect(nullptr, &connect_parameters, &connection, null_callback.get());
290290
291 {291 {
292 mp::SurfaceParameters request;292 mp::SurfaceParameters request;
293 mp::Surface surface_response;293 mp::Surface surface_response;
294294
295 mediator.create_surface(nullptr, &request, &surface_response, null_callback.get());295 mediator->create_surface(nullptr, &request, &surface_response, null_callback.get());
296296
297 mp::SurfaceId surface = surface_response.id();297 mp::SurfaceId surface = surface_response.id();
298 mp::Buffer buffer_response;298 mp::Buffer buffer_response;
299299
300 mediator.next_buffer(nullptr, &surface, &buffer_response, null_callback.get());300 mediator->next_buffer(nullptr, &surface, &buffer_response, null_callback.get());
301301
302 mediator.release_surface(nullptr, &surface, nullptr, null_callback.get());302 mediator->release_surface(nullptr, &surface, nullptr, null_callback.get());
303 }303 }
304304
305 mediator.disconnect(nullptr, nullptr, nullptr, null_callback.get());305 mediator->disconnect(nullptr, nullptr, nullptr, null_callback.get());
306}306}
307307
308TEST_F(SessionMediatorTest, calling_methods_after_disconnect_throws)308TEST_F(SessionMediatorTest, calling_methods_after_disconnect_throws)
@@ -310,39 +310,39 @@
310 mp::ConnectParameters connect_parameters;310 mp::ConnectParameters connect_parameters;
311 mp::Connection connection;311 mp::Connection connection;
312312
313 mediator.connect(nullptr, &connect_parameters, &connection, null_callback.get());313 mediator->connect(nullptr, &connect_parameters, &connection, null_callback.get());
314314
315 mediator.disconnect(nullptr, nullptr, nullptr, null_callback.get());315 mediator->disconnect(nullptr, nullptr, nullptr, null_callback.get());
316316
317 EXPECT_THROW({317 EXPECT_THROW({
318 mp::SurfaceParameters surface_parameters;318 mp::SurfaceParameters surface_parameters;
319 mp::Surface surface;319 mp::Surface surface;
320320
321 mediator.create_surface(nullptr, &surface_parameters, &surface, null_callback.get());321 mediator->create_surface(nullptr, &surface_parameters, &surface, null_callback.get());
322 }, std::logic_error);322 }, std::logic_error);
323323
324 EXPECT_THROW({324 EXPECT_THROW({
325 mp::SurfaceId request;325 mp::SurfaceId request;
326 mp::Buffer response;326 mp::Buffer response;
327327
328 mediator.next_buffer(nullptr, &request, &response, null_callback.get());328 mediator->next_buffer(nullptr, &request, &response, null_callback.get());
329 }, std::logic_error);329 }, std::logic_error);
330330
331 EXPECT_THROW({331 EXPECT_THROW({
332 mp::SurfaceId request;332 mp::SurfaceId request;
333333
334 mediator.release_surface(nullptr, &request, nullptr, null_callback.get());334 mediator->release_surface(nullptr, &request, nullptr, null_callback.get());
335 }, std::logic_error);335 }, std::logic_error);
336336
337 EXPECT_THROW({337 EXPECT_THROW({
338 mp::DRMMagic request;338 mp::DRMMagic request;
339 mp::DRMAuthMagicStatus response;339 mp::DRMAuthMagicStatus response;
340340
341 mediator.drm_auth_magic(nullptr, &request, &response, null_callback.get());341 mediator->drm_auth_magic(nullptr, &request, &response, null_callback.get());
342 }, std::logic_error);342 }, std::logic_error);
343343
344 EXPECT_THROW({344 EXPECT_THROW({
345 mediator.disconnect(nullptr, nullptr, nullptr, null_callback.get());345 mediator->disconnect(nullptr, nullptr, nullptr, null_callback.get());
346 }, std::logic_error);346 }, std::logic_error);
347}347}
348348
@@ -351,11 +351,11 @@
351 mp::ConnectParameters connect_parameters;351 mp::ConnectParameters connect_parameters;
352 mp::Connection connection;352 mp::Connection connection;
353353
354 mediator.connect(nullptr, &connect_parameters, &connection, null_callback.get());354 mediator->connect(nullptr, &connect_parameters, &connection, null_callback.get());
355355
356 mediator.disconnect(nullptr, nullptr, nullptr, null_callback.get());356 mediator->disconnect(nullptr, nullptr, nullptr, null_callback.get());
357357
358 mediator.connect(nullptr, &connect_parameters, &connection, null_callback.get());358 mediator->connect(nullptr, &connect_parameters, &connection, null_callback.get());
359}359}
360360
361TEST_F(SessionMediatorTest, connect_packs_display_configuration)361TEST_F(SessionMediatorTest, connect_packs_display_configuration)
@@ -369,7 +369,7 @@
369 EXPECT_CALL(*mock_display, active_configuration())369 EXPECT_CALL(*mock_display, active_configuration())
370 .Times(1)370 .Times(1)
371 .WillOnce(Return(mt::fake_shared(config)));371 .WillOnce(Return(mt::fake_shared(config)));
372 mf::SessionMediator mediator(372 auto const mediator = std::make_shared<mf::SessionMediator>(
373 shell, graphics_platform, mock_display,373 shell, graphics_platform, mock_display,
374 surface_pixel_formats, report,374 surface_pixel_formats, report,
375 std::make_shared<mtd::NullEventSink>(),375 std::make_shared<mtd::NullEventSink>(),
@@ -382,7 +382,7 @@
382 connection.clear_display_output();382 connection.clear_display_output();
383 connection.clear_display_configuration();383 connection.clear_display_configuration();
384384
385 mediator.connect(nullptr, &connect_parameters, &connection, null_callback.get());385 mediator->connect(nullptr, &connect_parameters, &connection, null_callback.get());
386386
387 EXPECT_THAT(connection.display_configuration(),387 EXPECT_THAT(connection.display_configuration(),
388 mt::DisplayConfigMatches(std::cref(config)));388 mt::DisplayConfigMatches(std::cref(config)));
@@ -393,17 +393,17 @@
393 mp::ConnectParameters connect_parameters;393 mp::ConnectParameters connect_parameters;
394 mp::Connection connection;394 mp::Connection connection;
395395
396 mediator.connect(nullptr, &connect_parameters, &connection, null_callback.get());396 mediator->connect(nullptr, &connect_parameters, &connection, null_callback.get());
397397
398 {398 {
399 mp::SurfaceParameters request;399 mp::SurfaceParameters request;
400 mp::Surface response;400 mp::Surface response;
401401
402 mediator.create_surface(nullptr, &request, &response, null_callback.get());402 mediator->create_surface(nullptr, &request, &response, null_callback.get());
403 EXPECT_EQ(StubbedSession::testing_client_input_fd, response.fd(0));403 EXPECT_EQ(StubbedSession::testing_client_input_fd, response.fd(0));
404 }404 }
405405
406 mediator.disconnect(nullptr, nullptr, nullptr, null_callback.get());406 mediator->disconnect(nullptr, nullptr, nullptr, null_callback.get());
407}407}
408408
409TEST_F(SessionMediatorTest, no_input_channel_is_nonfatal)409TEST_F(SessionMediatorTest, no_input_channel_is_nonfatal)
@@ -416,16 +416,16 @@
416 EXPECT_CALL(*stubbed_session->mock_surface, client_input_fd())416 EXPECT_CALL(*stubbed_session->mock_surface, client_input_fd())
417 .Times(0);417 .Times(0);
418418
419 mediator.connect(nullptr, &connect_parameters, &connection, null_callback.get());419 mediator->connect(nullptr, &connect_parameters, &connection, null_callback.get());
420420
421 {421 {
422 mp::SurfaceParameters request;422 mp::SurfaceParameters request;
423 mp::Surface response;423 mp::Surface response;
424424
425 mediator.create_surface(nullptr, &request, &response, null_callback.get());425 mediator->create_surface(nullptr, &request, &response, null_callback.get());
426 }426 }
427427
428 mediator.disconnect(nullptr, nullptr, nullptr, null_callback.get());428 mediator->disconnect(nullptr, nullptr, nullptr, null_callback.get());
429}429}
430430
431TEST_F(SessionMediatorTest, session_only_sends_needed_buffers)431TEST_F(SessionMediatorTest, session_only_sends_needed_buffers)
@@ -435,7 +435,7 @@
435 mp::ConnectParameters connect_parameters;435 mp::ConnectParameters connect_parameters;
436 mp::Connection connection;436 mp::Connection connection;
437437
438 mediator.connect(nullptr, &connect_parameters, &connection, null_callback.get());438 mediator->connect(nullptr, &connect_parameters, &connection, null_callback.get());
439439
440 {440 {
441 EXPECT_CALL(*stubbed_session->mock_buffer, id())441 EXPECT_CALL(*stubbed_session->mock_buffer, id())
@@ -456,14 +456,14 @@
456 .Times(2);456 .Times(2);
457457
458 mp::SurfaceParameters surface_request;458 mp::SurfaceParameters surface_request;
459 mediator.create_surface(nullptr, &surface_request, &surface_response, null_callback.get());459 mediator->create_surface(nullptr, &surface_request, &surface_response, null_callback.get());
460 buffer_request = surface_response.id();460 buffer_request = surface_response.id();
461 mediator.next_buffer(nullptr, &buffer_request, &buffer_response[0], null_callback.get());461 mediator->next_buffer(nullptr, &buffer_request, &buffer_response[0], null_callback.get());
462 mediator.next_buffer(nullptr, &buffer_request, &buffer_response[1], null_callback.get());462 mediator->next_buffer(nullptr, &buffer_request, &buffer_response[1], null_callback.get());
463 mediator.next_buffer(nullptr, &buffer_request, &buffer_response[2], null_callback.get());463 mediator->next_buffer(nullptr, &buffer_request, &buffer_response[2], null_callback.get());
464 }464 }
465465
466 mediator.disconnect(nullptr, nullptr, nullptr, null_callback.get());466 mediator->disconnect(nullptr, nullptr, nullptr, null_callback.get());
467}467}
468468
469TEST_F(SessionMediatorTest, session_with_multiple_surfaces_only_sends_needed_buffers)469TEST_F(SessionMediatorTest, session_with_multiple_surfaces_only_sends_needed_buffers)
@@ -473,7 +473,7 @@
473 mp::ConnectParameters connect_parameters;473 mp::ConnectParameters connect_parameters;
474 mp::Connection connection;474 mp::Connection connection;
475475
476 mediator.connect(nullptr, &connect_parameters, &connection, null_callback.get());476 mediator->connect(nullptr, &connect_parameters, &connection, null_callback.get());
477477
478 {478 {
479 // AFAICS these values are stubs to set up the test condition,479 // AFAICS these values are stubs to set up the test condition,
@@ -504,19 +504,19 @@
504 .Times(4);504 .Times(4);
505505
506 mp::SurfaceParameters surface_request;506 mp::SurfaceParameters surface_request;
507 mediator.create_surface(nullptr, &surface_request, &surface_response[0], null_callback.get());507 mediator->create_surface(nullptr, &surface_request, &surface_response[0], null_callback.get());
508 mediator.create_surface(nullptr, &surface_request, &surface_response[1], null_callback.get());508 mediator->create_surface(nullptr, &surface_request, &surface_response[1], null_callback.get());
509 buffer_request[0] = surface_response[0].id();509 buffer_request[0] = surface_response[0].id();
510 buffer_request[1] = surface_response[1].id();510 buffer_request[1] = surface_response[1].id();
511 mediator.next_buffer(nullptr, &buffer_request[0], &buffer_response[0], null_callback.get());511 mediator->next_buffer(nullptr, &buffer_request[0], &buffer_response[0], null_callback.get());
512 mediator.next_buffer(nullptr, &buffer_request[1], &buffer_response[1], null_callback.get());512 mediator->next_buffer(nullptr, &buffer_request[1], &buffer_response[1], null_callback.get());
513 mediator.next_buffer(nullptr, &buffer_request[0], &buffer_response[2], null_callback.get());513 mediator->next_buffer(nullptr, &buffer_request[0], &buffer_response[2], null_callback.get());
514 mediator.next_buffer(nullptr, &buffer_request[1], &buffer_response[3], null_callback.get());514 mediator->next_buffer(nullptr, &buffer_request[1], &buffer_response[3], null_callback.get());
515 mediator.next_buffer(nullptr, &buffer_request[0], &buffer_response[4], null_callback.get());515 mediator->next_buffer(nullptr, &buffer_request[0], &buffer_response[4], null_callback.get());
516 mediator.next_buffer(nullptr, &buffer_request[1], &buffer_response[5], null_callback.get());516 mediator->next_buffer(nullptr, &buffer_request[1], &buffer_response[5], null_callback.get());
517 }517 }
518518
519 mediator.disconnect(nullptr, nullptr, nullptr, null_callback.get());519 mediator->disconnect(nullptr, nullptr, nullptr, null_callback.get());
520}520}
521521
522TEST_F(SessionMediatorTest, buffer_resource_for_surface_unaffected_by_other_surfaces)522TEST_F(SessionMediatorTest, buffer_resource_for_surface_unaffected_by_other_surfaces)
@@ -527,7 +527,7 @@
527 mp::ConnectParameters connect_parameters;527 mp::ConnectParameters connect_parameters;
528 mp::Connection connection;528 mp::Connection connection;
529529
530 mediator.connect(nullptr, &connect_parameters, &connection, null_callback.get());530 mediator->connect(nullptr, &connect_parameters, &connection, null_callback.get());
531 mp::SurfaceParameters surface_request;531 mp::SurfaceParameters surface_request;
532 mp::Surface surface_response;532 mp::Surface surface_response;
533533
@@ -539,28 +539,28 @@
539 EXPECT_CALL(*stubbed_session->mock_surface, swap_buffers(_, _))539 EXPECT_CALL(*stubbed_session->mock_surface, swap_buffers(_, _))
540 .WillOnce(InvokeArgument<1>(&buffer));540 .WillOnce(InvokeArgument<1>(&buffer));
541541
542 mediator.create_surface(nullptr, &surface_request, &surface_response, null_callback.get());542 mediator->create_surface(nullptr, &surface_request, &surface_response, null_callback.get());
543 mp::SurfaceId our_surface{surface_response.id()};543 mp::SurfaceId our_surface{surface_response.id()};
544544
545 Mock::VerifyAndClearExpectations(stubbed_session->mock_surface.get());545 Mock::VerifyAndClearExpectations(stubbed_session->mock_surface.get());
546546
547 /* Creating a new surface should not affect our surfaces' buffers */547 /* Creating a new surface should not affect our surfaces' buffers */
548 EXPECT_CALL(*stubbed_session->mock_surface, swap_buffers(_, _)).Times(0);548 EXPECT_CALL(*stubbed_session->mock_surface, swap_buffers(_, _)).Times(0);
549 mediator.create_surface(nullptr, &surface_request, &surface_response, null_callback.get());549 mediator->create_surface(nullptr, &surface_request, &surface_response, null_callback.get());
550550
551 mp::SurfaceId new_surface{surface_response.id()};551 mp::SurfaceId new_surface{surface_response.id()};
552 mp::Buffer buffer_response;552 mp::Buffer buffer_response;
553553
554 /* Getting the next buffer of new surface should not affect our surfaces' buffers */554 /* Getting the next buffer of new surface should not affect our surfaces' buffers */
555 mediator.next_buffer(nullptr, &new_surface, &buffer_response, null_callback.get());555 mediator->next_buffer(nullptr, &new_surface, &buffer_response, null_callback.get());
556556
557 Mock::VerifyAndClearExpectations(stubbed_session->mock_surface.get());557 Mock::VerifyAndClearExpectations(stubbed_session->mock_surface.get());
558558
559 /* Getting the next buffer of our surface should post the original */559 /* Getting the next buffer of our surface should post the original */
560 EXPECT_CALL(*stubbed_session->mock_surface, swap_buffers(Eq(&buffer), _)).Times(1);560 EXPECT_CALL(*stubbed_session->mock_surface, swap_buffers(Eq(&buffer), _)).Times(1);
561561
562 mediator.next_buffer(nullptr, &our_surface, &buffer_response, null_callback.get());562 mediator->next_buffer(nullptr, &our_surface, &buffer_response, null_callback.get());
563 mediator.disconnect(nullptr, nullptr, nullptr, null_callback.get());563 mediator->disconnect(nullptr, nullptr, nullptr, null_callback.get());
564}564}
565565
566TEST_F(SessionMediatorTest, display_config_request)566TEST_F(SessionMediatorTest, display_config_request)
@@ -601,13 +601,13 @@
601 .InSequence(seq)601 .InSequence(seq)
602 .WillOnce(Return(mt::fake_shared(stub_display_config)));602 .WillOnce(Return(mt::fake_shared(stub_display_config)));
603603
604 mf::SessionMediator session_mediator{604 auto const session_mediator = std::make_shared<mf::SessionMediator>(
605 shell, graphics_platform, mock_display_selector,605 shell, graphics_platform, mock_display_selector,
606 surface_pixel_formats, report,606 surface_pixel_formats, report,
607 std::make_shared<mtd::NullEventSink>(), resource_cache,607 std::make_shared<mtd::NullEventSink>(), resource_cache,
608 std::make_shared<mtd::NullScreencast>()};608 std::make_shared<mtd::NullScreencast>());
609609
610 session_mediator.connect(nullptr, &connect_parameters, &connection, null_callback.get());610 session_mediator->connect(nullptr, &connect_parameters, &connection, null_callback.get());
611611
612 mp::DisplayConfiguration configuration_response;612 mp::DisplayConfiguration configuration_response;
613 mp::DisplayConfiguration configuration;613 mp::DisplayConfiguration configuration;
@@ -631,12 +631,12 @@
631 disp1->set_power_mode(static_cast<uint32_t>(mir_power_mode_off));631 disp1->set_power_mode(static_cast<uint32_t>(mir_power_mode_off));
632 disp1->set_orientation(mir_orientation_inverted);632 disp1->set_orientation(mir_orientation_inverted);
633633
634 session_mediator.configure_display(nullptr, &configuration,634 session_mediator->configure_display(nullptr, &configuration,
635 &configuration_response, null_callback.get());635 &configuration_response, null_callback.get());
636636
637 EXPECT_THAT(configuration_response, mt::DisplayConfigMatches(std::cref(stub_display_config)));637 EXPECT_THAT(configuration_response, mt::DisplayConfigMatches(std::cref(stub_display_config)));
638638
639 session_mediator.disconnect(nullptr, nullptr, nullptr, null_callback.get());639 session_mediator->disconnect(nullptr, nullptr, nullptr, null_callback.get());
640}640}
641641
642TEST_F(SessionMediatorTest, fully_packs_buffer_for_create_screencast)642TEST_F(SessionMediatorTest, fully_packs_buffer_for_create_screencast)
@@ -649,7 +649,7 @@
649649
650 EXPECT_CALL(*graphics_platform, fill_ipc_package(_, &stub_buffer));650 EXPECT_CALL(*graphics_platform, fill_ipc_package(_, &stub_buffer));
651651
652 mediator.create_screencast(nullptr, &screencast_parameters,652 mediator->create_screencast(nullptr, &screencast_parameters,
653 &screencast, null_callback.get());653 &screencast, null_callback.get());
654654
655 EXPECT_EQ(stub_buffer.id().as_uint32_t(),655 EXPECT_EQ(stub_buffer.id().as_uint32_t(),
@@ -667,7 +667,7 @@
667 EXPECT_CALL(*graphics_platform, fill_ipc_package(_, &stub_buffer))667 EXPECT_CALL(*graphics_platform, fill_ipc_package(_, &stub_buffer))
668 .Times(0);668 .Times(0);
669669
670 mediator.screencast_buffer(nullptr, &screencast_id,670 mediator->screencast_buffer(nullptr, &screencast_id,
671 &protobuf_buffer, null_callback.get());671 &protobuf_buffer, null_callback.get());
672672
673 EXPECT_EQ(stub_buffer.id().as_uint32_t(),673 EXPECT_EQ(stub_buffer.id().as_uint32_t(),
674674
=== modified file 'tests/unit-tests/scene/test_surface.cpp'
--- tests/unit-tests/scene/test_surface.cpp 2014-02-06 14:45:58 +0000
+++ tests/unit-tests/scene/test_surface.cpp 2014-02-06 14:45:58 +0000
@@ -377,16 +377,6 @@
377 EXPECT_FLOAT_EQ(alpha, compositing_criteria->alpha());377 EXPECT_FLOAT_EQ(alpha, compositing_criteria->alpha());
378}378}
379379
380TEST_F(SurfaceCreation, test_surface_force_requests_to_complete)
381{
382 using namespace testing;
383
384 EXPECT_CALL(*mock_buffer_stream, force_requests_to_complete()).Times(Exactly(1));
385
386 ms::BasicSurface surf(stub_data, mock_buffer_stream, std::shared_ptr<mi::InputChannel>(), report);
387 surf.force_requests_to_complete();
388}
389
390TEST_F(SurfaceCreation, test_surface_allow_framedropping)380TEST_F(SurfaceCreation, test_surface_allow_framedropping)
391{381{
392 using namespace testing;382 using namespace testing;
393383
=== modified file 'tests/unit-tests/scene/test_surface_stack.cpp'
--- tests/unit-tests/scene/test_surface_stack.cpp 2014-02-06 14:45:58 +0000
+++ tests/unit-tests/scene/test_surface_stack.cpp 2014-02-06 14:45:58 +0000
@@ -75,7 +75,6 @@
75 virtual std::shared_ptr<mg::Buffer> snapshot_acquire(){ return std::shared_ptr<mg::Buffer>(); };75 virtual std::shared_ptr<mg::Buffer> snapshot_acquire(){ return std::shared_ptr<mg::Buffer>(); };
76 virtual void snapshot_release(std::shared_ptr<mg::Buffer> const&){}76 virtual void snapshot_release(std::shared_ptr<mg::Buffer> const&){}
77 virtual void force_client_abort() {}77 virtual void force_client_abort() {}
78 void force_requests_to_complete() {}
79 virtual void allow_framedropping(bool) {}78 virtual void allow_framedropping(bool) {}
80 virtual mg::BufferProperties properties() const { return mg::BufferProperties{}; };79 virtual mg::BufferProperties properties() const { return mg::BufferProperties{}; };
81 void resize(const geom::Size &) override {}80 void resize(const geom::Size &) override {}

Subscribers

People subscribed via source and target branches