desktop: Look for app_ids after the initial commit 87/28687/4
authorMarius Vlad <marius.vlad@collabora.com>
Fri, 21 Apr 2023 11:38:32 +0000 (14:38 +0300)
committerMarius Vlad <marius.vlad@collabora.com>
Wed, 3 May 2023 15:46:19 +0000 (18:46 +0300)
Some applications, set up their app_ids after the initial surface
commit, which is too late to move them/place them to a different output.

This addresses that in the case the application sets one up, after the
initial surface commit.

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

src/desktop.c

index 54eac5b..a8e6171 100644 (file)
@@ -395,11 +395,19 @@ desktop_committed(struct weston_desktop_surface *dsurface,
                return;
 
        if (ivi->shell_client.ready && !surface->checked_pending) {
-               const char * app_id =   weston_desktop_surface_get_app_id(dsurface);
+               struct ivi_output *remote_output = NULL;
+               const char *app_id =    weston_desktop_surface_get_app_id(dsurface);
                weston_log("Checking pending surface %p, app_id %s\n", surface,
                        app_id);
                wl_list_remove(&surface->link);
                wl_list_init(&surface->link);
+
+               if ((remote_output = ivi_layout_find_with_app_id(app_id, ivi))) {
+                       ivi_set_pending_desktop_surface_remote(remote_output, app_id);
+                       shell_send_app_on_output(ivi, app_id, remote_output->output->name);
+               }
+
+
                ivi_check_pending_desktop_surface(surface);
                surface->checked_pending = true;