From 70a2d75e8e35d94bf2b1aef430ac7ed8cd3d96bc Mon Sep 17 00:00:00 2001
From: Marius Vlad <marius.vlad@collabora.com>
Date: Wed, 7 Feb 2024 17:46:15 +0200
Subject: src: Don't attempt to split background role window

If that window is a background one, this patch avoids doing that. The
background surface role needs to always be available. Discovered while
testing it out with flutter embedder.

Bug-AGL: SPEC-4839
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ia46b7ae590ea4feafa8a67efeb8ad540f6d2dfa0
---
 src/layout.c | 2 +-
 src/shell.c  | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/layout.c b/src/layout.c
index 0ab7e7c..95d3e54 100644
--- a/src/layout.c
+++ b/src/layout.c
@@ -1050,7 +1050,7 @@ ivi_layout_reset_split_surfaces(struct ivi_compositor *ivi)
 		return;
 
 	output = ivisurf->current_completed_output;
-	if (output->previous_active) {
+	if (output->previous_active && output->background != output->previous_active) {
 		struct weston_view *ev = output->previous_active->view;
 		struct weston_output *woutput = output->output;
 
diff --git a/src/shell.c b/src/shell.c
index cce4dec..a44dddf 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -1921,7 +1921,7 @@ void shell_set_app_split(struct wl_client *client, struct wl_resource *res,
 		return;
 	}
 
-	if (output->previous_active) {
+	if (output->previous_active && output->background != output->previous_active) {
 		struct weston_view *ev = output->previous_active->view;
 
 		if (!weston_view_is_mapped(ev))
-- 
cgit