diff options
author | Marius Vlad <marius.vlad@collabora.com> | 2022-05-31 14:44:49 +0300 |
---|---|---|
committer | Jan-Simon Moeller <jsmoeller@linuxfoundation.org> | 2022-06-10 21:20:46 +0000 |
commit | 394b5da767661260043080dc025d0a71998851f8 (patch) | |
tree | 516996900f9c0cfc78fc9eb0fb175e0cb467d838 | |
parent | cac00851d454fcfe6b4e9f3353cfa4007f31c21e (diff) |
shell: Extract some common functions
For instance this exports retreiving a ivi_seat from weston_seat, and
they are useful in other parts as well.
Bug-AGL: SPEC-4413
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I838823570792761dfb5ac4beea635e843dd5cd22
-rw-r--r-- | src/input.c | 24 | ||||
-rw-r--r-- | src/ivi-compositor.h | 9 | ||||
-rw-r--r-- | src/shell.c | 12 |
3 files changed, 30 insertions, 15 deletions
diff --git a/src/input.c b/src/input.c index b6b104a..1a143ce 100644 --- a/src/input.c +++ b/src/input.c @@ -32,7 +32,7 @@ #include "ivi-compositor.h" #include "shared/helpers.h" -static struct ivi_surface * +struct ivi_surface * get_ivi_shell_surface(struct weston_surface *surface) { struct weston_desktop_surface *desktop_surface = @@ -59,19 +59,37 @@ ivi_shell_seat_handle_destroy(struct wl_listener *listener, void *data) free(shseat); } -static struct ivi_shell_seat * +struct ivi_shell_seat * get_ivi_shell_seat(struct weston_seat *seat) { struct wl_listener *listener; + if (!seat) + return NULL; + + listener = wl_signal_get(&seat->destroy_signal, ivi_shell_seat_handle_destroy); - assert(listener != NULL); + if (!listener) + return NULL; return container_of(listener, struct ivi_shell_seat, seat_destroy_listener); } +struct weston_seat * +get_ivi_shell_weston_first_seat(struct ivi_compositor *ivi) +{ + struct wl_list *node; + struct weston_compositor *compositor = ivi->compositor; + + if (wl_list_empty(&compositor->seat_list)) + return NULL; + + node = compositor->seat_list.next; + return container_of(node, struct weston_seat, link); +} + static void ivi_shell_seat_handle_pointer_focus(struct wl_listener *listener, void *data) { diff --git a/src/ivi-compositor.h b/src/ivi-compositor.h index fdf2bcb..6dbab99 100644 --- a/src/ivi-compositor.h +++ b/src/ivi-compositor.h @@ -453,4 +453,13 @@ ivi_compositor_destroy_pending_surfaces(struct ivi_compositor *ivi); void ivi_shell_finalize(struct ivi_compositor *ivi); +struct ivi_surface * +get_ivi_shell_surface(struct weston_surface *surface); + +struct ivi_shell_seat * +get_ivi_shell_seat(struct weston_seat *seat); + +struct weston_seat * +get_ivi_shell_weston_first_seat(struct ivi_compositor *ivi); + #endif diff --git a/src/shell.c b/src/shell.c index c6cae10..09a9cb2 100644 --- a/src/shell.c +++ b/src/shell.c @@ -49,18 +49,6 @@ static void create_black_surface_view(struct ivi_output *output); -static struct ivi_surface * -get_ivi_shell_surface(struct weston_surface *wsurface) -{ - if (weston_surface_is_desktop_surface(wsurface)) { - struct weston_desktop_surface *dsurface = - weston_surface_get_desktop_surface(wsurface); - return weston_desktop_surface_get_user_data(dsurface); - } - - return NULL; -} - void agl_shell_desktop_advertise_application_id(struct ivi_compositor *ivi, struct ivi_surface *surface) |