[PATCH 1/4] tests: simplify move_client and make it more generic
Marek Chalupa
mchqwerty at gmail.com
Wed Jul 16 06:52:28 PDT 2014
Move client right in the move_client funciton. This allows the surface
use its own configure function, so from now the client can be any
weston surface (xdg, wl_shell, ..)
---
tests/weston-test.c | 62 +++++++++++++++++++++--------------------------------
1 file changed, 24 insertions(+), 38 deletions(-)
diff --git a/tests/weston-test.c b/tests/weston-test.c
index 35ccaa4..75a0884 100644
--- a/tests/weston-test.c
+++ b/tests/weston-test.c
@@ -41,13 +41,6 @@ struct weston_test {
struct weston_process process;
};
-struct weston_test_surface {
- struct weston_surface *surface;
- struct weston_view *view;
- int32_t x, y;
- struct weston_test *test;
-};
-
static void
test_client_sigchld(struct weston_process *process, int status)
{
@@ -88,19 +81,15 @@ notify_pointer_position(struct weston_test *test, struct wl_resource *resource)
}
static void
-test_surface_configure(struct weston_surface *surface, int32_t sx, int32_t sy)
+update_position(struct weston_test *test, struct weston_view *view,
+ int32_t x, int32_t y)
{
- struct weston_test_surface *test_surface = surface->configure_private;
- struct weston_test *test = test_surface->test;
-
- if (wl_list_empty(&test_surface->view->layer_link))
+ if (wl_list_empty(&view->layer_link))
wl_list_insert(&test->layer.view_list,
- &test_surface->view->layer_link);
+ &view->layer_link);
- weston_view_set_position(test_surface->view,
- test_surface->x, test_surface->y);
-
- weston_view_update_transform(test_surface->view);
+ weston_view_set_position(view, x, y);
+ weston_view_update_transform(view);
}
static void
@@ -110,31 +99,28 @@ move_surface(struct wl_client *client, struct wl_resource *resource,
{
struct weston_surface *surface =
wl_resource_get_user_data(surface_resource);
- struct weston_test_surface *test_surface;
-
- test_surface = surface->configure_private;
- if (!test_surface) {
- test_surface = malloc(sizeof *test_surface);
- if (!test_surface) {
- wl_resource_post_no_memory(resource);
- return;
- }
+ struct weston_test *test = wl_resource_get_user_data(resource);
+ struct weston_view *view;
- test_surface->view = weston_view_create(surface);
- if (!test_surface->view) {
- wl_resource_post_no_memory(resource);
- free(test_surface);
- return;
+ /* has shell surface? */
+ if (surface->configure) {
+ view = wl_container_of(surface->views.next, view, surface_link);
+ assert (view && "No view in surface views list");
+ } else {
+ if (!surface->configure_private) {
+ view = weston_view_create(surface);
+ if (!view) {
+ wl_resource_post_no_memory(resource);
+ return;
+ }
+
+ surface->configure_private = view;
+ } else {
+ view = surface->configure_private;
}
-
- surface->configure_private = test_surface;
- surface->configure = test_surface_configure;
}
- test_surface->surface = surface;
- test_surface->test = wl_resource_get_user_data(resource);
- test_surface->x = x;
- test_surface->y = y;
+ update_position(test, view, x, y);
}
static void
--
2.0.1
More information about the wayland-devel
mailing list