Skip to content
Commits on Source (11)
......@@ -106,6 +106,8 @@ TEST(seat_capabilities_test)
assert(cl->input->pointer);
assert(cl->input->keyboard);
assert(cl->input->touch);
client_destroy(cl);
}
#define COUNT 15
......@@ -144,6 +146,8 @@ TEST(multiple_device_add_and_remove)
assert(cl->input->pointer);
assert(cl->input->keyboard);
assert(cl->input->touch);
client_destroy(cl);
}
TEST(device_release_before_destroy)
......@@ -181,6 +185,8 @@ TEST(device_release_before_destroy)
client_roundtrip(cl);
assert(cl->input->caps == WL_SEAT_CAPABILITY_ALL);
client_destroy(cl);
}
TEST(device_release_before_destroy_multiple)
......@@ -190,12 +196,6 @@ TEST(device_release_before_destroy_multiple)
/* if weston crashed during this test, then there is
* some inconsistency */
for (i = 0; i < 30; ++i) {
/* Fifty times run the previous test. This will create
* fifty clients, because we don't have any
* way how to destroy them (worth of adding!). Only one
* client will run at a time though and so should have no
* effect on the result of the test (after the client
* finishes its body, it just 'is' and does nothing). */
device_release_before_destroy();
}
}
......@@ -237,6 +237,8 @@ TEST(device_release_after_destroy)
client_roundtrip(cl);
assert(cl->input->caps == WL_SEAT_CAPABILITY_ALL);
client_destroy(cl);
}
TEST(device_release_after_destroy_multiple)
......@@ -310,6 +312,8 @@ TEST(get_device_after_destroy)
client_roundtrip(cl);
assert(cl->input->caps == WL_SEAT_CAPABILITY_ALL);
client_destroy(cl);
}
TEST(get_device_after_destroy_multiple)
......@@ -331,6 +335,8 @@ TEST(seats_have_names)
wl_list_for_each(input, &cl->inputs, link) {
assert(input->seat_name);
}
client_destroy(cl);
}
TEST(seat_destroy_and_recreate)
......@@ -353,4 +359,6 @@ TEST(seat_destroy_and_recreate)
assert(cl->input->pointer);
assert(cl->input->keyboard);
assert(cl->input->touch);
client_destroy(cl);
}
......@@ -111,6 +111,7 @@ TEST(second_surface_synchronization_on_surface_raises_error)
zwp_linux_surface_synchronization_v1_destroy(surface_sync2);
zwp_linux_surface_synchronization_v1_destroy(surface_sync1);
zwp_linux_explicit_synchronization_v1_destroy(sync);
client_destroy(client);
}
TEST(set_acquire_fence_with_invalid_fence_raises_error)
......@@ -136,6 +137,7 @@ TEST(set_acquire_fence_with_invalid_fence_raises_error)
close(pipefd[1]);
zwp_linux_surface_synchronization_v1_destroy(surface_sync);
zwp_linux_explicit_synchronization_v1_destroy(sync);
client_destroy(client);
}
TEST(set_acquire_fence_on_destroyed_surface_raises_error)
......@@ -151,6 +153,7 @@ TEST(set_acquire_fence_on_destroyed_surface_raises_error)
assert(pipe(pipefd) == 0);
wl_surface_destroy(client->surface->wl_surface);
client->surface->wl_surface = NULL;
zwp_linux_surface_synchronization_v1_set_acquire_fence(surface_sync,
pipefd[0]);
expect_protocol_error(
......@@ -162,6 +165,7 @@ TEST(set_acquire_fence_on_destroyed_surface_raises_error)
close(pipefd[1]);
zwp_linux_surface_synchronization_v1_destroy(surface_sync);
zwp_linux_explicit_synchronization_v1_destroy(sync);
client_destroy(client);
}
TEST(second_buffer_release_in_commit_raises_error)
......@@ -191,6 +195,7 @@ TEST(second_buffer_release_in_commit_raises_error)
zwp_linux_buffer_release_v1_destroy(buffer_release1);
zwp_linux_surface_synchronization_v1_destroy(surface_sync);
zwp_linux_explicit_synchronization_v1_destroy(sync);
client_destroy(client);
}
TEST(get_release_without_buffer_raises_commit_error)
......@@ -215,6 +220,7 @@ TEST(get_release_without_buffer_raises_commit_error)
zwp_linux_buffer_release_v1_destroy(buffer_release);
zwp_linux_surface_synchronization_v1_destroy(surface_sync);
zwp_linux_explicit_synchronization_v1_destroy(sync);
client_destroy(client);
}
TEST(get_release_on_destroyed_surface_raises_error)
......@@ -228,6 +234,7 @@ TEST(get_release_on_destroyed_surface_raises_error)
struct zwp_linux_buffer_release_v1 *buffer_release;
wl_surface_destroy(client->surface->wl_surface);
client->surface->wl_surface = NULL;
buffer_release =
zwp_linux_surface_synchronization_v1_get_release(surface_sync);
expect_protocol_error(
......@@ -238,6 +245,7 @@ TEST(get_release_on_destroyed_surface_raises_error)
zwp_linux_buffer_release_v1_destroy(buffer_release);
zwp_linux_surface_synchronization_v1_destroy(surface_sync);
zwp_linux_explicit_synchronization_v1_destroy(sync);
client_destroy(client);
}
TEST(get_release_after_commit_succeeds)
......@@ -269,6 +277,7 @@ TEST(get_release_after_commit_succeeds)
zwp_linux_buffer_release_v1_destroy(buffer_release1);
zwp_linux_surface_synchronization_v1_destroy(surface_sync);
zwp_linux_explicit_synchronization_v1_destroy(sync);
client_destroy(client);
}
static void
......@@ -359,6 +368,7 @@ TEST(get_release_events_are_emitted_for_different_buffers)
zwp_linux_buffer_release_v1_destroy(buffer_release1);
zwp_linux_surface_synchronization_v1_destroy(surface_sync);
zwp_linux_explicit_synchronization_v1_destroy(sync);
client_destroy(client);
}
TEST(get_release_events_are_emitted_for_same_buffer_on_surface)
......@@ -418,6 +428,7 @@ TEST(get_release_events_are_emitted_for_same_buffer_on_surface)
zwp_linux_buffer_release_v1_destroy(buffer_release1);
zwp_linux_surface_synchronization_v1_destroy(surface_sync);
zwp_linux_explicit_synchronization_v1_destroy(sync);
client_destroy(client);
}
TEST(get_release_events_are_emitted_for_same_buffer_on_different_surfaces)
......@@ -495,4 +506,6 @@ TEST(get_release_events_are_emitted_for_same_buffer_on_different_surfaces)
zwp_linux_surface_synchronization_v1_destroy(surface_sync2);
zwp_linux_surface_synchronization_v1_destroy(surface_sync1);
zwp_linux_explicit_synchronization_v1_destroy(sync);
surface_destroy(other_surface);
client_destroy(client);
}
......@@ -124,6 +124,13 @@ TEST(test_role_conflict_sub_wlshell)
expect_protocol_error(client, &wl_shell_interface,
WL_SHELL_ERROR_ROLE);
wl_shell_surface_destroy(shsurf);
wl_subsurface_destroy(sub);
wl_surface_destroy(child);
wl_shell_destroy(shell);
wl_subcompositor_destroy(subco);
client_destroy(client);
}
TEST(test_role_conflict_wlshell_sub)
......@@ -152,4 +159,11 @@ TEST(test_role_conflict_wlshell_sub)
expect_protocol_error(client, &wl_subcompositor_interface,
WL_SUBCOMPOSITOR_ERROR_BAD_SURFACE);
wl_shell_surface_destroy(shsurf);
wl_subsurface_destroy(sub);
wl_surface_destroy(child);
wl_shell_destroy(shell);
wl_subcompositor_destroy(subco);
client_destroy(client);
}
......@@ -152,6 +152,7 @@ TEST(subsurface_z_order)
/* make the parent surface red */
surf[0] = client->surface->wl_surface;
client->surface->wl_surface = NULL; /* we stole it and destroy it */
bufs[0] = surface_commit_color(client, surf[0], &red, 100, 100);
/* sub[0] is not used */
......@@ -208,4 +209,7 @@ TEST(subsurface_z_order)
for (i = 0; i < ARRAY_LENGTH(bufs); i++)
if (bufs[i])
buffer_destroy(bufs[i]);
wl_subcompositor_destroy(subco);
client_destroy(client);
}
......@@ -31,6 +31,8 @@
#include "weston-test-client-helper.h"
#include "weston-test-fixture-compositor.h"
#define VERBOSE 0
static enum test_result_code
fixture_setup(struct weston_test_harness *harness)
{
......@@ -98,6 +100,22 @@ populate_compound_surface(struct compound_surface *com, struct client *client)
}
}
static void
fini_compound_surface(struct compound_surface *com)
{
int i;
for (i = 0; i < NUM_SUBSURFACES; i++) {
if (com->sub[i])
wl_subsurface_destroy(com->sub[i]);
if (com->child[i])
wl_surface_destroy(com->child[i]);
}
wl_surface_destroy(com->parent);
wl_subcompositor_destroy(com->subco);
}
TEST(test_subsurface_basic_protocol)
{
struct client *client;
......@@ -111,6 +129,10 @@ TEST(test_subsurface_basic_protocol)
populate_compound_surface(&com2, client);
client_roundtrip(client);
fini_compound_surface(&com1);
fini_compound_surface(&com2);
client_destroy(client);
}
TEST(test_subsurface_position_protocol)
......@@ -128,6 +150,9 @@ TEST(test_subsurface_position_protocol)
(i + 2) * 20, (i + 2) * 10);
client_roundtrip(client);
fini_compound_surface(&com);
client_destroy(client);
}
TEST(test_subsurface_placement_protocol)
......@@ -146,6 +171,9 @@ TEST(test_subsurface_placement_protocol)
wl_subsurface_place_below(com.sub[1], com.parent);
client_roundtrip(client);
fini_compound_surface(&com);
client_destroy(client);
}
TEST(test_subsurface_paradox)
......@@ -153,6 +181,7 @@ TEST(test_subsurface_paradox)
struct client *client;
struct wl_surface *parent;
struct wl_subcompositor *subco;
struct wl_subsurface *sub;
client = create_client_and_test_surface(100, 50, 123, 77);
assert(client);
......@@ -161,16 +190,22 @@ TEST(test_subsurface_paradox)
parent = wl_compositor_create_surface(client->wl_compositor);
/* surface is its own parent */
wl_subcompositor_get_subsurface(subco, parent, parent);
sub = wl_subcompositor_get_subsurface(subco, parent, parent);
expect_protocol_error(client, &wl_subcompositor_interface,
WL_SUBCOMPOSITOR_ERROR_BAD_SURFACE);
wl_subsurface_destroy(sub);
wl_surface_destroy(parent);
wl_subcompositor_destroy(subco);
client_destroy(client);
}
TEST(test_subsurface_identical_link)
{
struct client *client;
struct compound_surface com;
struct wl_subsurface *sub;
client = create_client_and_test_surface(100, 50, 123, 77);
assert(client);
......@@ -178,10 +213,14 @@ TEST(test_subsurface_identical_link)
populate_compound_surface(&com, client);
/* surface is already a subsurface */
wl_subcompositor_get_subsurface(com.subco, com.child[0], com.parent);
sub = wl_subcompositor_get_subsurface(com.subco, com.child[0], com.parent);
expect_protocol_error(client, &wl_subcompositor_interface,
WL_SUBCOMPOSITOR_ERROR_BAD_SURFACE);
wl_subsurface_destroy(sub);
fini_compound_surface(&com);
client_destroy(client);
}
TEST(test_subsurface_change_link)
......@@ -189,6 +228,7 @@ TEST(test_subsurface_change_link)
struct client *client;
struct compound_surface com;
struct wl_surface *stranger;
struct wl_subsurface *sub;
client = create_client_and_test_surface(100, 50, 123, 77);
assert(client);
......@@ -197,10 +237,15 @@ TEST(test_subsurface_change_link)
populate_compound_surface(&com, client);
/* surface is already a subsurface */
wl_subcompositor_get_subsurface(com.subco, com.child[0], stranger);
sub = wl_subcompositor_get_subsurface(com.subco, com.child[0], stranger);
expect_protocol_error(client, &wl_subcompositor_interface,
WL_SUBCOMPOSITOR_ERROR_BAD_SURFACE);
fini_compound_surface(&com);
wl_subsurface_destroy(sub);
wl_surface_destroy(stranger);
client_destroy(client);
}
TEST(test_subsurface_nesting)
......@@ -208,6 +253,7 @@ TEST(test_subsurface_nesting)
struct client *client;
struct compound_surface com;
struct wl_surface *stranger;
struct wl_subsurface *sub;
client = create_client_and_test_surface(100, 50, 123, 77);
assert(client);
......@@ -216,9 +262,14 @@ TEST(test_subsurface_nesting)
populate_compound_surface(&com, client);
/* parent is a sub-surface */
wl_subcompositor_get_subsurface(com.subco, stranger, com.child[0]);
sub = wl_subcompositor_get_subsurface(com.subco, stranger, com.child[0]);
client_roundtrip(client);
wl_subsurface_destroy(sub);
wl_surface_destroy(stranger);
fini_compound_surface(&com);
client_destroy(client);
}
TEST(test_subsurface_nesting_parent)
......@@ -226,6 +277,7 @@ TEST(test_subsurface_nesting_parent)
struct client *client;
struct compound_surface com;
struct wl_surface *stranger;
struct wl_subsurface *sub;
client = create_client_and_test_surface(100, 50, 123, 77);
assert(client);
......@@ -234,16 +286,23 @@ TEST(test_subsurface_nesting_parent)
populate_compound_surface(&com, client);
/* surface is already a parent */
wl_subcompositor_get_subsurface(com.subco, com.parent, stranger);
sub = wl_subcompositor_get_subsurface(com.subco, com.parent, stranger);
client_roundtrip(client);
wl_subsurface_destroy(sub);
fini_compound_surface(&com);
wl_surface_destroy(stranger);
client_destroy(client);
}
TEST(test_subsurface_loop_paradox)
{
struct client *client;
struct wl_surface *surface[3];
struct wl_subsurface *sub[3];
struct wl_subcompositor *subco;
unsigned i;
client = create_client_and_test_surface(100, 50, 123, 77);
assert(client);
......@@ -254,12 +313,20 @@ TEST(test_subsurface_loop_paradox)
surface[2] = wl_compositor_create_surface(client->wl_compositor);
/* create a nesting loop */
wl_subcompositor_get_subsurface(subco, surface[1], surface[0]);
wl_subcompositor_get_subsurface(subco, surface[2], surface[1]);
wl_subcompositor_get_subsurface(subco, surface[0], surface[2]);
sub[0] = wl_subcompositor_get_subsurface(subco, surface[1], surface[0]);
sub[1] = wl_subcompositor_get_subsurface(subco, surface[2], surface[1]);
sub[2] = wl_subcompositor_get_subsurface(subco, surface[0], surface[2]);
expect_protocol_error(client, &wl_subcompositor_interface,
WL_SUBCOMPOSITOR_ERROR_BAD_SURFACE);
for (i = 0; i < ARRAY_LENGTH(sub); i++) {
wl_subsurface_destroy(sub[i]);
wl_surface_destroy(surface[i]);
}
wl_subcompositor_destroy(subco);
client_destroy(client);
}
TEST(test_subsurface_place_above_nested_parent)
......@@ -282,6 +349,12 @@ TEST(test_subsurface_place_above_nested_parent)
wl_subsurface_place_above(sub, com.child[0]);
client_roundtrip(client);
wl_subsurface_destroy(sub);
wl_surface_destroy(grandchild);
wl_subcompositor_destroy(subco);
fini_compound_surface(&com);
client_destroy(client);
}
TEST(test_subsurface_place_above_grandparent)
......@@ -306,6 +379,12 @@ TEST(test_subsurface_place_above_grandparent)
expect_protocol_error(client, &wl_subsurface_interface,
WL_SUBSURFACE_ERROR_BAD_SURFACE);
wl_subsurface_destroy(sub);
wl_surface_destroy(grandchild);
wl_subcompositor_destroy(subco);
fini_compound_surface(&com);
client_destroy(client);
}
TEST(test_subsurface_place_above_great_aunt)
......@@ -330,6 +409,12 @@ TEST(test_subsurface_place_above_great_aunt)
expect_protocol_error(client, &wl_subsurface_interface,
WL_SUBSURFACE_ERROR_BAD_SURFACE);
wl_subsurface_destroy(sub);
wl_surface_destroy(grandchild);
wl_subcompositor_destroy(subco);
fini_compound_surface(&com);
client_destroy(client);
}
TEST(test_subsurface_place_above_child)
......@@ -338,6 +423,7 @@ TEST(test_subsurface_place_above_child)
struct compound_surface com;
struct wl_surface *grandchild;
struct wl_subcompositor *subco;
struct wl_subsurface *sub;
client = create_client_and_test_surface(100, 50, 123, 77);
assert(client);
......@@ -346,13 +432,19 @@ TEST(test_subsurface_place_above_child)
subco = get_subcompositor(client);
grandchild = wl_compositor_create_surface(client->wl_compositor);
wl_subcompositor_get_subsurface(subco, grandchild, com.child[0]);
sub = wl_subcompositor_get_subsurface(subco, grandchild, com.child[0]);
/* can't place a subsurface above its own child subsurface */
wl_subsurface_place_above(com.sub[0], grandchild);
expect_protocol_error(client, &wl_subsurface_interface,
WL_SUBSURFACE_ERROR_BAD_SURFACE);
wl_subsurface_destroy(sub);
wl_surface_destroy(grandchild);
wl_subcompositor_destroy(subco);
fini_compound_surface(&com);
client_destroy(client);
}
TEST(test_subsurface_place_below_nested_parent)
......@@ -375,6 +467,12 @@ TEST(test_subsurface_place_below_nested_parent)
wl_subsurface_place_below(sub, com.child[0]);
client_roundtrip(client);
wl_subsurface_destroy(sub);
wl_surface_destroy(grandchild);
wl_subcompositor_destroy(subco);
fini_compound_surface(&com);
client_destroy(client);
}
TEST(test_subsurface_place_below_grandparent)
......@@ -399,6 +497,12 @@ TEST(test_subsurface_place_below_grandparent)
expect_protocol_error(client, &wl_subsurface_interface,
WL_SUBSURFACE_ERROR_BAD_SURFACE);
wl_subsurface_destroy(sub);
wl_surface_destroy(grandchild);
wl_subcompositor_destroy(subco);
fini_compound_surface(&com);
client_destroy(client);
}
TEST(test_subsurface_place_below_great_aunt)
......@@ -423,6 +527,12 @@ TEST(test_subsurface_place_below_great_aunt)
expect_protocol_error(client, &wl_subsurface_interface,
WL_SUBSURFACE_ERROR_BAD_SURFACE);
wl_subsurface_destroy(sub);
wl_surface_destroy(grandchild);
wl_subcompositor_destroy(subco);
fini_compound_surface(&com);
client_destroy(client);
}
TEST(test_subsurface_place_below_child)
......@@ -431,6 +541,7 @@ TEST(test_subsurface_place_below_child)
struct compound_surface com;
struct wl_surface *grandchild;
struct wl_subcompositor *subco;
struct wl_subsurface *sub;
client = create_client_and_test_surface(100, 50, 123, 77);
assert(client);
......@@ -439,13 +550,19 @@ TEST(test_subsurface_place_below_child)
subco = get_subcompositor(client);
grandchild = wl_compositor_create_surface(client->wl_compositor);
wl_subcompositor_get_subsurface(subco, grandchild, com.child[0]);
sub = wl_subcompositor_get_subsurface(subco, grandchild, com.child[0]);
/* can't place a subsurface below its own child subsurface */
wl_subsurface_place_below(com.sub[0], grandchild);
expect_protocol_error(client, &wl_subsurface_interface,
WL_SUBSURFACE_ERROR_BAD_SURFACE);
wl_subsurface_destroy(sub);
wl_surface_destroy(grandchild);
wl_subcompositor_destroy(subco);
fini_compound_surface(&com);
client_destroy(client);
}
TEST(test_subsurface_place_above_stranger)
......@@ -465,6 +582,10 @@ TEST(test_subsurface_place_above_stranger)
expect_protocol_error(client, &wl_subsurface_interface,
WL_SUBSURFACE_ERROR_BAD_SURFACE);
wl_surface_destroy(stranger);
fini_compound_surface(&com);
client_destroy(client);
}
TEST(test_subsurface_place_below_stranger)
......@@ -484,6 +605,10 @@ TEST(test_subsurface_place_below_stranger)
expect_protocol_error(client, &wl_subsurface_interface,
WL_SUBSURFACE_ERROR_BAD_SURFACE);
wl_surface_destroy(stranger);
fini_compound_surface(&com);
client_destroy(client);
}
TEST(test_subsurface_place_above_foreign)
......@@ -503,6 +628,10 @@ TEST(test_subsurface_place_above_foreign)
expect_protocol_error(client, &wl_subsurface_interface,
WL_SUBSURFACE_ERROR_BAD_SURFACE);
fini_compound_surface(&com1);
fini_compound_surface(&com2);
client_destroy(client);
}
TEST(test_subsurface_place_below_foreign)
......@@ -522,6 +651,10 @@ TEST(test_subsurface_place_below_foreign)
expect_protocol_error(client, &wl_subsurface_interface,
WL_SUBSURFACE_ERROR_BAD_SURFACE);
fini_compound_surface(&com1);
fini_compound_surface(&com2);
client_destroy(client);
}
TEST(test_subsurface_destroy_protocol)
......@@ -555,6 +688,8 @@ TEST(test_subsurface_destroy_protocol)
wl_subsurface_destroy(com.sub[1]);
client_roundtrip(client);
client_destroy(client);
}
static void
......@@ -621,6 +756,8 @@ create_subsurface_tree(struct client *client, struct wl_surface **surfs,
#undef SUB_LINK
};
wl_subcompositor_destroy(subco);
}
static void
......@@ -706,11 +843,13 @@ destroy_permu_object(struct wl_surface **surfs,
int h = (i + 1) / 2;
if (i & 1) {
testlog(" [sub %2d]", h);
if (VERBOSE)
testlog(" [sub %2d]", h);
wl_subsurface_destroy(subs[h]);
subs[h] = NULL;
} else {
testlog(" [surf %2d]", h);
if (VERBOSE)
testlog(" [surf %2d]", h);
wl_surface_destroy(surfs[h]);
surfs[h] = NULL;
}
......@@ -748,15 +887,18 @@ TEST(test_subsurface_destroy_permutations)
create_subsurface_tree(client, surfs, subs, test_size);
testlog("permu");
if (VERBOSE)
testlog("permu");
for (i = 0; i < NSTEPS; i++)
testlog(" %2d", per.cnt[i]);
if (VERBOSE)
for (i = 0; i < NSTEPS; i++)
testlog(" %2d", per.cnt[i]);
for (i = 0; i < NSTEPS; i++)
destroy_permu_object(surfs, subs, per.cnt[i]);
testlog("\n");
if (VERBOSE)
testlog("\n");
client_roundtrip(client);
destroy_subsurface_tree(surfs, subs, test_size);
......@@ -765,4 +907,6 @@ TEST(test_subsurface_destroy_permutations)
client_roundtrip(client);
testlog("tried %d destroy permutations\n", counter);
client_destroy(client);
}
......@@ -88,4 +88,7 @@ PLUGIN_TEST(surface_to_from_global)
weston_view_from_global(view, 5, 10, &ix, &iy);
assert(ix == 0 && iy == 0);
/* Destroys all views too. */
weston_surface_destroy(surface);
}
......@@ -68,4 +68,7 @@ PLUGIN_TEST(surface_transform)
weston_view_update_transform(view);
weston_view_to_global_float(view, 50, 40, &x, &y);
assert(x == 200 && y == 340);
/* Destroys all views too. */
weston_surface_destroy(surface);
}
......@@ -231,4 +231,8 @@ TEST(text_test)
weston_test_activate_surface(client->test->weston_test, NULL);
client_roundtrip(client);
assert(state.activated == 2 && state.deactivated == 2);
zwp_text_input_v1_destroy(text_input);
zwp_text_input_manager_v1_destroy(factory);
client_destroy(client);
}
......@@ -89,6 +89,8 @@ TEST(touch_events)
assert(timespec_eq(&touch->up_time_timespec, &t3));
input_timestamps_destroy(input_ts);
client_destroy(client);
}
TEST(touch_timestamps_stop_after_input_timestamps_object_is_destroyed)
......@@ -107,6 +109,8 @@ TEST(touch_timestamps_stop_after_input_timestamps_object_is_destroyed)
send_touch(client, &t2, WL_TOUCH_UP);
assert(touch->up_time_msec == timespec_to_msec(&t2));
assert(timespec_is_zero(&touch->up_time_timespec));
client_destroy(client);
}
TEST(touch_timestamps_stop_after_client_releases_wl_touch)
......@@ -132,4 +136,8 @@ TEST(touch_timestamps_stop_after_client_releases_wl_touch)
assert(timespec_eq(&touch->input_timestamp, &t_other));
input_timestamps_destroy(input_ts);
free(client->input->touch);
client->input->touch = NULL;
client_destroy(client);
}
......@@ -489,5 +489,6 @@ TEST_P(yuv_buffer_shm, yuv_cases)
assert(match);
yuv_buffer_destroy(buf);
pixman_image_unref(img);
client_destroy(client);
}