summaryrefslogtreecommitdiff
path: root/src/xserver-launcher.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/xserver-launcher.c')
-rw-r--r--src/xserver-launcher.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/xserver-launcher.c b/src/xserver-launcher.c
index 551030f..070ffb4 100644
--- a/src/xserver-launcher.c
+++ b/src/xserver-launcher.c
@@ -841,6 +841,22 @@ weston_wm_window_draw_decoration(void *data)
cairo_destroy(cr);
cairo_surface_destroy(surface);
+
+ if (window->surface) {
+ /* We leave an extra pixel around the X window area to
+ * make sure we don't sample from the undefined alpha
+ * channel when filtering. */
+ window->surface->opaque_rect[0] =
+ (double) (t->margin + t->width - 1) / width;
+ window->surface->opaque_rect[1] =
+ (double) (t->margin + t->width +
+ window->width + 1) / width;
+ window->surface->opaque_rect[2] =
+ (double) (t->margin + t->titlebar_height - 1) / height;
+ window->surface->opaque_rect[3] =
+ (double) (t->margin + t->titlebar_height +
+ window->height + 1) / height;
+ }
}
static void
@@ -1767,6 +1783,8 @@ xserver_set_window_id(struct wl_client *client, struct wl_resource *resource,
wl_signal_add(&surface->resource.destroy_signal,
&window->surface_destroy_listener);
+ weston_wm_window_schedule_repaint(window);
+
if (shell_interface->create_shell_surface) {
shell_interface->create_shell_surface(shell_interface->shell,
window->surface,