[PATCH 2/2] exposay: set an alpha on fullscreen surfaces

pochu27 at gmail.com pochu27 at gmail.com
Tue Jan 7 07:41:40 PST 2014


From: Emilio Pozuelo Monfort <emilio.pozuelo at collabora.co.uk>

This makes the desktop background actually draw when there is
a fullscreen surface and we go to exposay.
---

I'm not sure if this one is right, but it does the trick... If this
is not too hacky I could split set_alpha_if_fullscreen() into
is_fullscreen() and set_alpha() and do the right thing from exposay.c
if that is preferred.

 desktop-shell/exposay.c | 2 ++
 desktop-shell/shell.c   | 7 +++++++
 desktop-shell/shell.h   | 3 +++
 3 files changed, 12 insertions(+)

diff --git a/desktop-shell/exposay.c b/desktop-shell/exposay.c
index f409aa3..01bf0b1 100644
--- a/desktop-shell/exposay.c
+++ b/desktop-shell/exposay.c
@@ -286,6 +286,8 @@ exposay_layout(struct desktop_shell *shell)
 		if (shell->exposay.focus_current == esurface->view)
 			highlight = esurface;
 
+		set_alpha_if_fullscreen(get_shell_surface(view->surface));
+
 		exposay_animate_in(esurface);
 
 		i++;
diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index f85a269..4cc23d5 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -222,6 +222,13 @@ struct shell_seat {
 	} popup_grab;
 };
 
+void
+set_alpha_if_fullscreen(struct shell_surface *shsurf)
+{
+	if (shsurf && shsurf->state.fullscreen)
+		shsurf->fullscreen.black_view->alpha = 0.25;
+}
+
 static struct desktop_shell *
 shell_surface_get_shell(struct shell_surface *shsurf);
 
diff --git a/desktop-shell/shell.h b/desktop-shell/shell.h
index 7a8194d..8ef550f 100644
--- a/desktop-shell/shell.h
+++ b/desktop-shell/shell.h
@@ -188,6 +188,9 @@ struct desktop_shell {
 	char *client;
 };
 
+void
+set_alpha_if_fullscreen(struct shell_surface *shsurf);
+
 struct weston_output *
 get_default_output(struct weston_compositor *compositor);
 
-- 
1.8.5.2



More information about the wayland-devel mailing list