summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/input.c24
-rw-r--r--src/ivi-compositor.h9
-rw-r--r--src/shell.c12
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)