bool
output_has_black_curtain(struct ivi_output *output)
{
- return (output->fullscreen_view.fs->view &&
+ return (output->fullscreen_view.fs &&
+ output->fullscreen_view.fs->view &&
output->fullscreen_view.fs->view->is_mapped &&
output->fullscreen_view.fs->view->surface->is_mapped);
}
const char *app_id,
struct wl_resource *output_res)
{
- struct weston_head *head = weston_head_from_resource(output_res);
- struct weston_output *woutput = weston_head_get_output(head);
- struct ivi_compositor *ivi = wl_resource_get_user_data(shell_res);
- struct ivi_output *output = to_ivi_output(woutput);
+ struct weston_head *head;
+ struct weston_output *woutput;
+ struct ivi_compositor *ivi;
+ struct ivi_output *output;
+
+ head = weston_head_from_resource(output_res);
+ if (!head) {
+ weston_log("Invalid output to activate '%s' on\n", app_id);
+ return;
+ }
+
+ woutput = weston_head_get_output(head);
+ ivi = wl_resource_get_user_data(shell_res);
+ output = to_ivi_output(woutput);
if (wl_resource_get_version(shell_res) >=
AGL_SHELL_BOUND_OK_SINCE_VERSION &&
ivi_layout_activate(output, app_id);
}
+static void
+shell_new_deactivate_app(struct wl_client *client, struct wl_resource *shell_res,
+ const char *app_id)
+{
+ struct ivi_compositor *ivi = wl_resource_get_user_data(shell_res);
+
+ ivi_layout_deactivate(ivi, app_id);
+}
+
static void
shell_desktop_activate_app(struct wl_client *client,
struct wl_resource *shell_res,
.set_panel = shell_set_panel,
.activate_app = shell_activate_app,
.destroy = shell_destroy,
- .set_activate_region = shell_set_activate_region
+ .set_activate_region = shell_set_activate_region,
+ .deactivate_app = shell_new_deactivate_app,
};
static const struct agl_shell_ext_interface agl_shell_ext_implementation = {
ivi_shell_create_global(struct ivi_compositor *ivi)
{
ivi->agl_shell = wl_global_create(ivi->compositor->wl_display,
- &agl_shell_interface, 4,
+ &agl_shell_interface, 5,
ivi, bind_agl_shell);
if (!ivi->agl_shell) {
weston_log("Failed to create wayland global.\n");