ivi-shell: added libweston-desktop-api implementation
Signed-off-by: Michael Teyfel <mteyfel@de.adit-jv.com>
This commit is contained in:
parent
c04188e546
commit
62d6d56a83
|
@ -454,6 +454,161 @@ shell_add_bindings(struct weston_compositor *compositor,
|
|||
shell);
|
||||
}
|
||||
|
||||
/*
|
||||
* libweston-desktop
|
||||
*/
|
||||
|
||||
static void
|
||||
desktop_surface_ping_timeout(struct weston_desktop_client *client,
|
||||
void *user_data)
|
||||
{
|
||||
/* Not supported */
|
||||
}
|
||||
|
||||
static void
|
||||
desktop_surface_pong(struct weston_desktop_client *client,
|
||||
void *user_data)
|
||||
{
|
||||
/* Not supported */
|
||||
}
|
||||
|
||||
static void
|
||||
desktop_surface_added(struct weston_desktop_surface *surface,
|
||||
void *user_data)
|
||||
{
|
||||
struct ivi_shell *shell = (struct ivi_shell *) user_data;
|
||||
struct ivi_layout_surface *layout_surface;
|
||||
struct ivi_shell_surface *ivisurf;
|
||||
struct weston_surface *weston_surf =
|
||||
weston_desktop_surface_get_surface(surface);
|
||||
|
||||
layout_surface = ivi_layout_desktop_surface_create(weston_surf);
|
||||
if (!layout_surface) {
|
||||
return;
|
||||
}
|
||||
|
||||
layout_surface->weston_desktop_surface = surface;
|
||||
|
||||
ivisurf = zalloc(sizeof *ivisurf);
|
||||
if (!ivisurf) {
|
||||
return;
|
||||
}
|
||||
|
||||
ivisurf->shell = shell;
|
||||
ivisurf->id_surface = IVI_INVALID_ID;
|
||||
|
||||
ivisurf->width = 0;
|
||||
ivisurf->height = 0;
|
||||
ivisurf->layout_surface = layout_surface;
|
||||
ivisurf->surface = weston_surf;
|
||||
|
||||
weston_desktop_surface_set_user_data(surface, ivisurf);
|
||||
}
|
||||
|
||||
static void
|
||||
desktop_surface_removed(struct weston_desktop_surface *surface,
|
||||
void *user_data)
|
||||
{
|
||||
struct ivi_shell_surface *ivisurf = (struct ivi_shell_surface *)
|
||||
weston_desktop_surface_get_user_data(surface);
|
||||
|
||||
assert(ivisurf != NULL);
|
||||
|
||||
if (ivisurf->layout_surface)
|
||||
layout_surface_cleanup(ivisurf);
|
||||
}
|
||||
|
||||
static void
|
||||
desktop_surface_committed(struct weston_desktop_surface *surface,
|
||||
int32_t sx, int32_t sy, void *user_data)
|
||||
{
|
||||
struct ivi_shell_surface *ivisurf = (struct ivi_shell_surface *)
|
||||
weston_desktop_surface_get_user_data(surface);
|
||||
struct weston_surface *weston_surf =
|
||||
weston_desktop_surface_get_surface(surface);
|
||||
|
||||
if(!ivisurf)
|
||||
return;
|
||||
|
||||
if (weston_surf->width == 0 || weston_surf->height == 0)
|
||||
return;
|
||||
|
||||
if (ivisurf->width != weston_surf->width ||
|
||||
ivisurf->height != weston_surf->height) {
|
||||
ivisurf->width = weston_surf->width;
|
||||
ivisurf->height = weston_surf->height;
|
||||
|
||||
ivi_layout_desktop_surface_configure(ivisurf->layout_surface,
|
||||
weston_surf->width,
|
||||
weston_surf->height);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
desktop_surface_move(struct weston_desktop_surface *surface,
|
||||
struct weston_seat *seat, uint32_t serial, void *user_data)
|
||||
{
|
||||
/* Not supported */
|
||||
}
|
||||
|
||||
static void
|
||||
desktop_surface_resize(struct weston_desktop_surface *surface,
|
||||
struct weston_seat *seat, uint32_t serial,
|
||||
enum weston_desktop_surface_edge edges, void *user_data)
|
||||
{
|
||||
/* Not supported */
|
||||
}
|
||||
|
||||
static void
|
||||
desktop_surface_fullscreen_requested(struct weston_desktop_surface *surface,
|
||||
bool fullscreen,
|
||||
struct weston_output *output,
|
||||
void *user_data)
|
||||
{
|
||||
/* Not supported */
|
||||
}
|
||||
|
||||
static void
|
||||
desktop_surface_maximized_requested(struct weston_desktop_surface *surface,
|
||||
bool maximized, void *user_data)
|
||||
{
|
||||
/* Not supported */
|
||||
}
|
||||
|
||||
static void
|
||||
desktop_surface_minimized_requested(struct weston_desktop_surface *surface,
|
||||
void *user_data)
|
||||
{
|
||||
/* Not supported */
|
||||
}
|
||||
|
||||
static void
|
||||
desktop_surface_set_xwayland_position(struct weston_desktop_surface *surface,
|
||||
int32_t x, int32_t y, void *user_data)
|
||||
{
|
||||
/* Not supported */
|
||||
}
|
||||
|
||||
static const struct weston_desktop_api shell_desktop_api = {
|
||||
.struct_size = sizeof(struct weston_desktop_api),
|
||||
.ping_timeout = desktop_surface_ping_timeout,
|
||||
.pong = desktop_surface_pong,
|
||||
.surface_added = desktop_surface_added,
|
||||
.surface_removed = desktop_surface_removed,
|
||||
.committed = desktop_surface_committed,
|
||||
|
||||
.move = desktop_surface_move,
|
||||
.resize = desktop_surface_resize,
|
||||
.fullscreen_requested = desktop_surface_fullscreen_requested,
|
||||
.maximized_requested = desktop_surface_maximized_requested,
|
||||
.minimized_requested = desktop_surface_minimized_requested,
|
||||
.set_xwayland_position = desktop_surface_set_xwayland_position,
|
||||
};
|
||||
|
||||
/*
|
||||
* end of libweston-desktop
|
||||
*/
|
||||
|
||||
/*
|
||||
* Initialization of ivi-shell.
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue