src: Send out the output name for the remote role 43/28643/6
authorMarius Vlad <marius.vlad@collabora.com>
Fri, 14 Apr 2023 13:46:06 +0000 (16:46 +0300)
committerMarius Vlad <marius.vlad@collabora.com>
Wed, 3 May 2023 15:46:15 +0000 (18:46 +0300)
A while ago we switched to activation-by-default turned off which passes
the responsability of activating applications to the shell client. The
shell client uses the app_id to indentify the application to display,
and the output.

The output would normally be hard-coded to the first available output
but there is nothing that prevents the shell to display it on other
outputs.

This patch does just that, it would allow the user use configurable
option in the ini file, under the [output], agl-shell-app-id=app_id, by
re-using the event from the compositor sent to the shell client to
pick up a different output, the one specified in the section entry.

Bug-AGL: SPEC-4529
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ieea1a28fe6776ecc691fd38da9b4c3495ac5a5ea

src/desktop.c
src/ivi-compositor.h
src/shell.c

index 361c5b4..54eac5b 100644 (file)
@@ -211,8 +211,10 @@ desktop_surface_added(struct weston_desktop_surface *dsurface, void *userdata)
 
        app_id = weston_desktop_surface_get_app_id(dsurface);
 
-       if ((active_output = ivi_layout_find_with_app_id(app_id, ivi)))
+       if ((active_output = ivi_layout_find_with_app_id(app_id, ivi))) {
                ivi_set_pending_desktop_surface_remote(active_output, app_id);
+               shell_send_app_on_output(ivi, app_id, active_output->output->name);
+       }
 
        /* reset any caps to make sure we apply the new caps */
        ivi_seat_reset_caps_sent(ivi);
index 49d38de..fb5a0fa 100644 (file)
@@ -515,4 +515,8 @@ get_default_output(struct weston_compositor *compositor);
 struct weston_output *
 get_focused_output(struct weston_compositor *compositor);
 
+void
+shell_send_app_on_output(struct ivi_compositor *ivi, const char *app_id,
+                        const char *output_name);
+
 #endif
index c18017b..ac20b4f 100644 (file)
@@ -1172,7 +1172,8 @@ void
 shell_send_app_on_output(struct ivi_compositor *ivi, const char *app_id,
                         const char *output_name)
 {
-       if (app_id && wl_resource_get_version(ivi->shell_client.resource) >=
+       if (app_id && ivi->shell_client.resource &&
+           wl_resource_get_version(ivi->shell_client.resource) >=
            AGL_SHELL_APP_ON_OUTPUT_SINCE_VERSION) {
 
                agl_shell_send_app_on_output(ivi->shell_client.resource,