else
pixman_region32_init(&surface->transform.opaque);
+
+ if (surface->output)
+ weston_surface_assign_output(surface);
+
weston_compositor_schedule_repaint(surface->compositor);
}
weston_surface_configure(struct weston_surface *surface,
GLfloat x, GLfloat y, int width, int height)
{
- weston_surface_damage_below(surface);
-
surface->geometry.x = x;
surface->geometry.y = y;
surface->geometry.width = width;
surface->geometry.height = height;
surface->geometry.dirty = 1;
-
- weston_surface_assign_output(surface);
- weston_surface_damage(surface);
}
WL_EXPORT uint32_t
weston_surface_configure(surface, 0, 0, 8192, 8192);
weston_surface_set_color(surface, 0.0, 0.0, 0.0, 0.0);
wl_list_insert(&compositor->surface_list, &surface->link);
+ weston_surface_assign_output(surface);
compositor->fade.surface = surface;
}
return;
}
- if (!device->sprite->output)
+ if (!device->sprite->output) {
wl_list_insert(&compositor->surface_list,
&device->sprite->link);
+ weston_surface_assign_output(device->sprite);
+ }
buffer = buffer_resource->data;
device->hotspot_x = x;
terminate_screensaver(shell);
- wl_list_for_each(surface, &shell->hidden_surface_list, link)
+ wl_list_for_each(surface, &shell->hidden_surface_list, link) {
weston_surface_configure(surface, surface->geometry.x,
surface->geometry.y,
surface->geometry.width,
surface->geometry.height);
+ weston_surface_assign_output(surface);
+ }
if (wl_list_empty(&shell->backgrounds)) {
list = &shell->compositor->surface_list;
weston_surface_configure(surface, surface->geometry.x,
surface->geometry.y,
width, height);
+ weston_surface_assign_output(surface);
weston_compositor_repick(compositor);
}
break;
}
- /*
- * weston_surface_configure() will assign an output, which means
- * the surface is supposed to be in compositor->surface_list.
- * Be careful with that, and make sure we stay on the right output.
- * XXX: would a fullscreen surface need the same handling?
- */
+ /* XXX: would a fullscreen surface need the same handling? */
if (do_configure) {
weston_surface_configure(surface, x, y, width, height);
+ weston_surface_assign_output(surface);
if (surface_type == SHELL_SURFACE_SCREENSAVER)
surface->output = shsurf->output;
wl_list_insert(&shell->compositor->surface_list, &surface->link);
weston_surface_configure(surface, surface->geometry.x,
surface->geometry.y, width, height);
+ weston_surface_assign_output(surface);
}
static void