|
|
@ -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. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|