[PATCH v2] simple-egl: Set the opaque region if windowed and -o is passed

Ander Conselvan de Oliveira conselvan2 at gmail.com
Mon Sep 10 05:55:53 PDT 2012


From: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira at intel.com>

Since commit 6a615d262141de7cf094788203d9c044dfb9f08d [1], the opaque
region would be set only when running fullscreen. Having it set
properly for the windowed case is helpful to test the overlay path in
compositor-drm.

What this patch does is:

 - reverts the above commit;
 - remove the "if fullscreen make the window opaque" conditional, that
   should have been removed when -o was introduced and was actually the
   cause for the bug solved in [1];
 - sets the opaque region when running fullscreen, regardless of the -o
   switch.

[1] commit 6a615d262141de7cf094788203d9c044dfb9f08d
    Author: Scott Moreau <oreaus at gmail.com>
    Date:   Thu Aug 30 14:44:16 2012 -0600

        simple-egl: Only set alpha_size=0 when -o is passed.

v2: - Clarify in the commit message that this does not regress the bug
      solved in [1].
    - Use the correct sha1 for the reverted commit.
---
 clients/simple-egl.c |   13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/clients/simple-egl.c b/clients/simple-egl.c
index 808c2ee..a67ce2f 100644
--- a/clients/simple-egl.c
+++ b/clients/simple-egl.c
@@ -280,12 +280,10 @@ toggle_fullscreen(struct window *window, int fullscreen)
 	window->configured = 0;
 
 	if (fullscreen) {
-		window->opaque = 1;
 		wl_shell_surface_set_fullscreen(window->shell_surface,
 						WL_SHELL_SURFACE_FULLSCREEN_METHOD_DEFAULT,
 						0, NULL);
 	} else {
-		window->opaque = 0;
 		wl_shell_surface_set_toplevel(window->shell_surface);
 		handle_configure(window, window->shell_surface, 0,
 				 window->window_size.width,
@@ -403,7 +401,7 @@ redraw(void *data, struct wl_callback *callback, uint32_t time)
 
 	eglSwapBuffers(window->display->egl.dpy, window->egl_surface);
 
-	if (window->opaque) {
+	if (window->opaque || window->fullscreen) {
 		region = wl_compositor_create_region(window->display->compositor);
 		wl_region_add(region, 0, 0,
 			      window->window_size.width,
@@ -594,7 +592,7 @@ main(int argc, char **argv)
 	struct sigaction sigint;
 	struct display display = { 0 };
 	struct window  window  = { 0 };
-	int i, opaque = 0;
+	int i;
 
 	window.display = &display;
 	display.window = &window;
@@ -605,7 +603,7 @@ main(int argc, char **argv)
 		if (strcmp("-f", argv[i]) == 0)
 			window.fullscreen = 1;
 		else if (strcmp("-o", argv[i]) == 0)
-			opaque = 1;
+			window.opaque = 1;
 		else if (strcmp("-h", argv[i]) == 0)
 			usage(EXIT_SUCCESS);
 		else
@@ -621,10 +619,7 @@ main(int argc, char **argv)
 	wl_display_get_fd(display.display, event_mask_update, &display);
 	wl_display_iterate(display.display, WL_DISPLAY_READABLE);
 
-	if (window.fullscreen)
-		window.opaque = 1;
-
-	init_egl(&display, opaque);
+	init_egl(&display, window.opaque);
 	create_surface(&window);
 	init_gl(&window);
 
-- 
1.7.9.5



More information about the wayland-devel mailing list