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);
|
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.
|
* Initialization of ivi-shell.
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user