205
205
launch_client_process(client_config);
208
TEST_F(DefaultDisplayServerTestFixture, surface_types)
210
struct ClientConfig : ClientConfigCommon
215
mir_wait_for(mir_connect(mir_test_socket, __PRETTY_FUNCTION__, connection_callback, this));
217
ASSERT_TRUE(connection != NULL);
218
EXPECT_TRUE(mir_connection_is_valid(connection));
219
EXPECT_STREQ(mir_connection_get_error_message(connection), "");
221
MirSurfaceParameters const request_params =
225
mir_pixel_format_abgr_8888,
226
mir_buffer_usage_hardware
229
mir_wait_for(mir_surface_create(connection, &request_params, create_surface_callback, this));
231
ASSERT_TRUE(surface != NULL);
232
EXPECT_TRUE(mir_surface_is_valid(surface));
233
EXPECT_STREQ(mir_surface_get_error_message(surface), "");
235
EXPECT_EQ(mir_surface_type_normal,
236
mir_surface_get_type(surface));
238
mir_wait_for(mir_surface_set_type(surface,
239
mir_surface_type_freestyle));
240
EXPECT_EQ(mir_surface_type_freestyle,
241
mir_surface_get_type(surface));
243
mir_wait_for(mir_surface_set_type(surface,
244
static_cast<MirSurfaceType>(999)));
245
EXPECT_EQ(mir_surface_type_freestyle,
246
mir_surface_get_type(surface));
248
mir_wait_for(mir_surface_set_type(surface,
249
mir_surface_type_dialog));
250
EXPECT_EQ(mir_surface_type_dialog,
251
mir_surface_get_type(surface));
253
mir_wait_for(mir_surface_set_type(surface,
254
static_cast<MirSurfaceType>(888)));
255
EXPECT_EQ(mir_surface_type_dialog,
256
mir_surface_get_type(surface));
258
// Stress-test synchronization logic with some flooding
259
for (int i = 0; i < 100; i++)
261
mir_surface_set_type(surface, mir_surface_type_normal);
262
mir_surface_set_type(surface, mir_surface_type_utility);
263
mir_surface_set_type(surface, mir_surface_type_dialog);
264
mir_surface_set_type(surface, mir_surface_type_overlay);
265
mir_surface_set_type(surface, mir_surface_type_freestyle);
266
mir_wait_for(mir_surface_set_type(surface,
267
mir_surface_type_popover));
268
ASSERT_EQ(mir_surface_type_popover,
269
mir_surface_get_type(surface));
272
mir_wait_for(mir_surface_release(surface, release_surface_callback,
275
mir_connection_release(connection);
279
launch_client_process(client_config);
208
282
TEST_F(DefaultDisplayServerTestFixture, client_library_creates_multiple_surfaces)
210
284
int const n_surfaces = 13;