diff options
Diffstat (limited to 'src/xserver-launcher.c')
-rw-r--r-- | src/xserver-launcher.c | 18 |
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, |