surface->geometry.dirty = 1;
}
+WL_EXPORT void
+weston_surface_set_position(struct weston_surface *surface,
+ GLfloat x, GLfloat y)
+{
+ surface->geometry.x = x;
+ surface->geometry.y = y;
+ surface->geometry.dirty = 1;
+}
+
WL_EXPORT uint32_t
weston_compositor_get_time(void)
{
device->grab->x, device->grab->y);
if (wd->sprite) {
- wd->sprite->geometry.x = device->x - wd->hotspot_x;
- wd->sprite->geometry.y = device->y - wd->hotspot_y;
- wd->sprite->geometry.dirty = 1;
+ weston_surface_set_position(wd->sprite,
+ device->x - wd->hotspot_x,
+ device->y - wd->hotspot_y);
weston_compositor_schedule_repaint(ec);
}
{
switch (surface->type) {
case SHELL_SURFACE_FULLSCREEN:
- surface->surface->geometry.x = surface->saved_x;
- surface->surface->geometry.y = surface->saved_y;
- surface->surface->geometry.dirty = 1;
+ weston_surface_set_position(surface->surface,
+ surface->saved_x,
+ surface->saved_y);
surface->surface->fullscreen_output = NULL;
break;
case SHELL_SURFACE_PANEL:
/* assign to parents output */
es->output = pes->output;
-
- es->geometry.x = pes->geometry.x + x;
- es->geometry.y = pes->geometry.y + y;
- es->geometry.dirty = 1;
+ weston_surface_set_position(es, pes->geometry.x + x,
+ pes->geometry.y + y);
shsurf->type = SHELL_SURFACE_TRANSIENT;
}
shsurf->saved_x = es->geometry.x;
shsurf->saved_y = es->geometry.y;
- es->geometry.x = (output->current->width - es->geometry.width) / 2;
- es->geometry.y = (output->current->height - es->geometry.height) / 2;
- es->geometry.dirty = 1;
+ weston_surface_set_position(es,
+ (output->current->width - es->geometry.width) / 2,
+ (output->current->height - es->geometry.height) / 2);
es->fullscreen_output = output;
shsurf->type = SHELL_SURFACE_FULLSCREEN;
}
}
wl_list_insert(es->geometry.transformation_list.prev,
&shsurf->popup.parent_transform.link);
- es->geometry.x = shsurf->popup.x;
- es->geometry.y = shsurf->popup.y;
- es->geometry.dirty = 1;
+ weston_surface_set_position(es, shsurf->popup.x, shsurf->popup.y);
shsurf->popup.grab.input_device = device;
shsurf->popup.time = device->grab_time;
wl_list_insert(&shell->backgrounds, &shsurf->link);
- surface->geometry.x = shsurf->output->x;
- surface->geometry.y = shsurf->output->y;
- surface->geometry.dirty = 1;
+ weston_surface_set_position(surface, shsurf->output->x,
+ shsurf->output->y);
wl_resource_post_event(resource,
DESKTOP_SHELL_CONFIGURE,
wl_list_insert(&shell->panels, &shsurf->link);
- surface->geometry.x = shsurf->output->x;
- surface->geometry.y = shsurf->output->y;
- surface->geometry.dirty = 1;
+ weston_surface_set_position(surface, shsurf->output->x,
+ shsurf->output->y);
wl_resource_post_event(resource,
DESKTOP_SHELL_CONFIGURE,
center_on_output(struct weston_surface *surface, struct weston_output *output)
{
struct weston_mode *mode = output->current;
+ GLfloat x = (mode->width - surface->geometry.width) / 2;
+ GLfloat y = (mode->height - surface->geometry.height) / 2;
- surface->geometry.x =
- output->x + (mode->width - surface->geometry.width) / 2;
- surface->geometry.y =
- output->y + (mode->height - surface->geometry.height) / 2;
- surface->geometry.dirty = 1;
+ weston_surface_set_position(surface, output->x + x, output->y + y);
}
static void
/* initial positioning, see also configure() */
switch (surface_type) {
case SHELL_SURFACE_TOPLEVEL:
- surface->geometry.x = 10 + random() % 400;
- surface->geometry.y = 10 + random() % 400;
+ weston_surface_set_position(surface, 10 + random() % 400,
+ 10 + random() % 400);
break;
case SHELL_SURFACE_SCREENSAVER:
case SHELL_SURFACE_FULLSCREEN:
struct tablet_shell *shell =
container_of(base, struct tablet_shell, shell);
- surface->geometry.x = 0;
- surface->geometry.y = 0;
- surface->geometry.dirty = 1;
+ weston_surface_configure(surface, 0, 0, width, height);
if (surface == shell->lockscreen_surface) {
/* */
}
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);
}
struct tablet_shell *shell = resource->data;
struct weston_surface *es = surface_resource->data;
- es->geometry.x = 0;
- es->geometry.y = 0;
- es->geometry.dirty = 1;
+ weston_surface_set_position(es, 0, 0);
shell->lockscreen_surface = es;
shell->lockscreen_listener.func = handle_lockscreen_surface_destroy;
wl_list_insert(es->surface.resource.destroy_listener_list.prev,
* layer idea, we should be able to hit the framerate on the
* fade/zoom in. */
shell->switcher_surface = es;
- shell->switcher_surface->geometry.x = 0;
- shell->switcher_surface->geometry.y = 0;
- shell->switcher_surface->geometry.dirty = 1;
+ weston_surface_set_position(shell->switcher_surface, 0, 0);
shell->switcher_listener.func = handle_switcher_surface_destroy;
wl_list_insert(es->surface.resource.destroy_listener_list.prev,
struct tablet_shell *shell = resource->data;
shell->home_surface = surface_resource->data;
- shell->home_surface->geometry.x = 0;
- shell->home_surface->geometry.y = 0;
- shell->home_surface->geometry.dirty = 1;
+ weston_surface_set_position(shell->home_surface, 0, 0);
}
static void