Port "ecore-wayland: Improve opaque setting logic." patch from upstream 26/11226/1
authorAlex Wu <zhiwen.wu@linux.intel.com>
Tue, 19 Mar 2013 08:36:16 +0000 (16:36 +0800)
committerJuan Zhao <juan.j.zhao@intel.com>
Wed, 23 Oct 2013 00:59:22 +0000 (08:59 +0800)
Change-Id: I4420b353bc237ba6e03c0b7c8fa12c60afce3d90

src/lib/ecore_wayland/ecore_wl_window.c

index 2a908a6..f808b25 100644 (file)
@@ -324,6 +324,9 @@ ecore_wl_window_buffer_attach(Ecore_Wl_Window *win, struct wl_buffer *buffer, in
         return;
      }
 
+   if (!win->surface)
+      return;
+
    if (win->region.input)
      {
         wl_surface_set_input_region(win->surface, win->region.input);
@@ -532,6 +535,15 @@ ecore_wl_window_update_size(Ecore_Wl_Window *win, int w, int h)
    if (!win) return;
    win->allocation.w = w;
    win->allocation.h = h;
+
+   if ((!win->transparent) || (!win->alpha))
+     {
+        if (win->region.opaque) wl_region_destroy(win->region.opaque);
+        win->region.opaque =
+          wl_compositor_create_region(_ecore_wl_disp->wl.compositor);
+        wl_region_add(win->region.opaque, win->allocation.x, win->allocation.y,
+                      win->allocation.w, win->allocation.h);
+     }
 }
 
 EAPI void