wl_list_for_each(dclient, &ivi->desktop_clients, link) {
const char *app_id =
weston_desktop_surface_get_app_id(surface->dsurface);
+ if (app_id == NULL) {
+ weston_log("WARNING app_is is null, unable to advertise\n");
+ return;
+ }
agl_shell_desktop_send_application(dclient->resource, app_id);
}
}
const char *_app_id =
weston_desktop_surface_get_app_id(surface->dsurface);
- if (wl_list_empty(&ivi->popup_pending_apps))
+ if (wl_list_empty(&ivi->popup_pending_apps) || !_app_id)
return false;
wl_list_for_each_safe(p_popup, next_p_popup,
const char *_app_id =
weston_desktop_surface_get_app_id(surface->dsurface);
- if (wl_list_empty(&ivi->split_pending_apps))
+ if (wl_list_empty(&ivi->split_pending_apps) || !_app_id)
return false;
wl_list_for_each_safe(split_surf, next_split_surf,
const char *_app_id =
weston_desktop_surface_get_app_id(surface->dsurface);
- if (wl_list_empty(&ivi->fullscreen_pending_apps))
+ if (wl_list_empty(&ivi->fullscreen_pending_apps) || !_app_id)
return false;
wl_list_for_each_safe(fs_surf, next_fs_surf,
const char *_app_id =
weston_desktop_surface_get_app_id(surface->dsurface);
- if (wl_list_empty(&ivi->remote_pending_apps))
+ if (wl_list_empty(&ivi->remote_pending_apps) || !_app_id)
return false;
wl_list_for_each_safe(remote_surf, next_remote_surf,
ret = ivi_check_pending_desktop_surface_popup(surface);
if (ret) {
ivi_set_desktop_surface_popup(surface);
+ ivi_layout_popup_committed(surface);
return;
}
ret = ivi_check_pending_desktop_surface_split(surface);
if (ret) {
ivi_set_desktop_surface_split(surface);
+ ivi_layout_split_committed(surface);
return;
}
ret = ivi_check_pending_desktop_surface_fullscreen(surface);
if (ret) {
ivi_set_desktop_surface_fullscreen(surface);
+ ivi_layout_fullscreen_committed(surface);
return;
}
ret = ivi_check_pending_desktop_surface_remote(surface);
if (ret) {
ivi_set_desktop_surface_remote(surface);
+ ivi_layout_desktop_committed(surface);
return;
}
wl_list_for_each(surface, &ivi->surfaces, link) {
const char *app_id =
weston_desktop_surface_get_app_id(surface->dsurface);
+ if (app_id == NULL) {
+ weston_log("WARNING app_is is null, unable to advertise\n");
+ return;
+ }
agl_shell_desktop_send_application(resource, app_id);
}
}
weston_desktop_surface_set_size(dsurface, width, height);
}
-
-static void
+void
shell_advertise_app_state(struct ivi_compositor *ivi, const char *app_id,
const char *data, uint32_t app_state)
{
if (!surf)
return;
+ if (!app_id)
+ return;
+
if (policy && policy->api.surface_advertise_state_change &&
!policy->api.surface_advertise_state_change(surf, surf->ivi)) {
return;
{
struct ivi_compositor *ivi = data;
struct wl_resource *resource;
+ struct ivi_policy *policy;
+ void *interface;
+
+ policy = ivi->policy;
+ interface = (void *) &agl_shell_interface;
+ if (policy && policy->api.shell_bind_interface &&
+ !policy->api.shell_bind_interface(client, interface)) {
+ wl_client_post_implementation_error(client,
+ "client not authorized to use agl_shell");
+ return;
+ }
resource = wl_resource_create(client, &agl_shell_interface,
1, id);
{
struct ivi_compositor *ivi = data;
struct wl_resource *resource;
- struct desktop_client *dclient = zalloc(sizeof(*dclient));
+ struct ivi_policy *policy;
+ struct desktop_client *dclient;
+ void *interface;
+
+ policy = ivi->policy;
+ interface = (void *) &agl_shell_desktop_interface;
+ if (policy && policy->api.shell_bind_interface &&
+ !policy->api.shell_bind_interface(client, interface)) {
+ wl_client_post_implementation_error(client,
+ "client not authorized to use agl_shell_desktop");
+ return;
+ }
+ dclient = zalloc(sizeof(*dclient));
if (!dclient) {
wl_client_post_no_memory(client);
return;