This provides a far better way of determining if the surface is
xwayland or not. We can then make sure all X11 clients can be displayed.
Bug-AGL: SPEC-4847
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I2140c452c0d37a84323eaf75787eb32a7771a56e
api->send_position(surface, x, y);
}
api->send_position(surface, x, y);
}
+bool
+is_shell_surface_xwayland(struct ivi_surface *surf)
+{
+ const struct weston_xwayland_surface_api *api;
+ struct ivi_compositor *ivi = surf->ivi;
+ struct weston_surface *surface;
+
+ api = ivi->xwayland_surface_api;
+
+ if (!api)
+ return false;
+
+ surface = weston_desktop_surface_get_surface(surf->dsurface);
+ return api->is_xwayland_surface(surface);
+}
+
int
ivi_desktop_init(struct ivi_compositor *ivi)
{
int
ivi_desktop_init(struct ivi_compositor *ivi)
{
int
parse_activation_area(const char *geometry, struct ivi_output *output);
int
parse_activation_area(const char *geometry, struct ivi_output *output);
+bool
+is_shell_surface_xwayland(struct ivi_surface *surf);
+
- if (!surf->ivi->activate_by_default && !surf->xwayland.is_set) {
- weston_log("Refusing to activate surface role %d, app_id %s\n",
- surf->role, app_id);
+ if (!surf->ivi->activate_by_default &&
+ (!surf->xwayland.is_set && !is_shell_surface_xwayland(surf))) {
+ weston_log("Refusing to activate surface role %d, app_id %s, type %s\n",
+ surf->role, app_id,
+ is_shell_surface_xwayland(surf) ?
+ "xwayland" : "regular");
if (!weston_desktop_surface_get_maximized(dsurf) ||
geom.width != r_output->area.width ||
if (!weston_desktop_surface_get_maximized(dsurf) ||
geom.width != r_output->area.width ||
*/
weston_log("Surface no app_id, role %s activating by default\n",
ivi_layout_get_surface_role_name(surf));
*/
weston_log("Surface no app_id, role %s activating by default\n",
ivi_layout_get_surface_role_name(surf));
- if (surf->xwayland.is_set) {
+ if (surf->xwayland.is_set || is_shell_surface_xwayland(surf)) {
ivi_layout_activate_by_surf(r_output, surf);
ivi_layout_activate_complete(r_output, surf);
} else {
ivi_layout_activate_by_surf(r_output, surf);
ivi_layout_activate_complete(r_output, surf);
} else {