67
67
void create_screencast(
68
68
google::protobuf::RpcController* /*controller*/,
69
69
mp::ScreencastParameters const* /*request*/,
70
mp::Screencast* /*response*/,
70
mp::Screencast* response,
71
71
google::protobuf::Closure* done) override
73
73
if (server_thread.joinable())
74
74
server_thread.join();
75
server_thread = std::thread{[done, this] { done->Run(); }};
75
server_thread = std::thread{
76
[response, done, this]
78
response->clear_error();
78
83
void release_screencast(
522
534
EXPECT_EQ(StubEGLNativeWindowFactory::egl_native_window, egl_native_window);
537
TEST_F(MirScreencastTest, is_invalid_if_server_create_screencast_fails)
539
using namespace testing;
541
EXPECT_CALL(mock_server, create_screencast(_,_,_,_))
542
.WillOnce(DoAll(SetCreateError(), RunClosure()));
544
MirScreencast screencast{
545
default_mir_output, mock_server,
546
stub_egl_native_window_factory,
547
stub_client_buffer_factory,
548
null_callback_func, nullptr};
550
screencast.creation_wait_handle()->wait_for_all();
552
EXPECT_FALSE(screencast.valid());
555
TEST_F(MirScreencastTest, calls_callback_on_creation_failure)
557
using namespace testing;
559
MockCallback mock_cb;
560
EXPECT_CALL(mock_server, create_screencast(_,_,_,_))
561
.WillOnce(DoAll(SetCreateError(), RunClosure()));
562
EXPECT_CALL(mock_cb, call(_,&mock_cb));
564
MirScreencast screencast{
565
default_mir_output, mock_server,
566
stub_egl_native_window_factory,
567
stub_client_buffer_factory,
568
mock_callback_func, &mock_cb};
570
screencast.creation_wait_handle()->wait_for_all();
572
EXPECT_FALSE(screencast.valid());