summaryrefslogtreecommitdiff
path: root/src/shell.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/shell.c')
-rw-r--r--src/shell.c112
1 files changed, 54 insertions, 58 deletions
diff --git a/src/shell.c b/src/shell.c
index 17ae1f49..70a8e62f 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -152,7 +152,7 @@ struct rotate_grab {
static void
destroy_shell_grab_shsurf(struct wl_listener *listener,
- struct wl_resource *resource, uint32_t time)
+ struct wl_resource *resource)
{
struct shell_grab *grab;
@@ -213,7 +213,7 @@ shell_configuration(struct wl_shell *shell)
}
static void
-noop_grab_focus(struct wl_pointer_grab *grab, uint32_t time,
+noop_grab_focus(struct wl_pointer_grab *grab,
struct wl_surface *surface, int32_t x, int32_t y)
{
grab->focus = NULL;
@@ -249,7 +249,7 @@ move_grab_button(struct wl_pointer_grab *grab,
if (device->button_count == 0 && state == 0) {
shell_grab_finish(shell_grab);
- wl_input_device_end_pointer_grab(device, time);
+ wl_input_device_end_pointer_grab(device);
free(grab);
}
}
@@ -262,7 +262,7 @@ static const struct wl_pointer_grab_interface move_grab_interface = {
static int
weston_surface_move(struct weston_surface *es,
- struct weston_input_device *wd, uint32_t time)
+ struct weston_input_device *wd)
{
struct weston_move_grab *move;
struct shell_surface *shsurf = get_shell_surface(es);
@@ -280,26 +280,26 @@ weston_surface_move(struct weston_surface *es,
move->dy = es->geometry.y - wd->input_device.grab_y;
wl_input_device_start_pointer_grab(&wd->input_device,
- &move->base.grab, time);
+ &move->base.grab);
- wl_input_device_set_pointer_focus(&wd->input_device, NULL, time, 0, 0);
+ wl_input_device_set_pointer_focus(&wd->input_device, NULL, 0, 0);
return 0;
}
static void
shell_surface_move(struct wl_client *client, struct wl_resource *resource,
- struct wl_resource *input_resource, uint32_t time)
+ struct wl_resource *input_resource, uint32_t serial)
{
struct weston_input_device *wd = input_resource->data;
struct shell_surface *shsurf = resource->data;
if (wd->input_device.button_count == 0 ||
- wd->input_device.grab_time != time ||
+ wd->input_device.grab_serial != serial ||
wd->input_device.pointer_focus != &shsurf->surface->surface)
return;
- if (weston_surface_move(shsurf->surface, wd, time) < 0)
+ if (weston_surface_move(shsurf->surface, wd) < 0)
wl_resource_post_no_memory(resource);
}
@@ -345,7 +345,7 @@ resize_grab_motion(struct wl_pointer_grab *grab,
}
wl_shell_surface_send_configure(&resize->base.shsurf->resource,
- time, resize->edges, width, height);
+ resize->edges, width, height);
}
static void
@@ -357,7 +357,7 @@ resize_grab_button(struct wl_pointer_grab *grab,
if (device->button_count == 0 && state == 0) {
shell_grab_finish(&resize->base);
- wl_input_device_end_pointer_grab(device, time);
+ wl_input_device_end_pointer_grab(device);
free(grab);
}
}
@@ -370,8 +370,7 @@ static const struct wl_pointer_grab_interface resize_grab_interface = {
static int
weston_surface_resize(struct shell_surface *shsurf,
- struct weston_input_device *wd,
- uint32_t time, uint32_t edges)
+ struct weston_input_device *wd, uint32_t edges)
{
struct weston_resize_grab *resize;
@@ -393,16 +392,16 @@ weston_surface_resize(struct shell_surface *shsurf,
resize->height = shsurf->surface->geometry.height;
wl_input_device_start_pointer_grab(&wd->input_device,
- &resize->base.grab, time);
+ &resize->base.grab);
- wl_input_device_set_pointer_focus(&wd->input_device, NULL, time, 0, 0);
+ wl_input_device_set_pointer_focus(&wd->input_device, NULL, 0, 0);
return 0;
}
static void
shell_surface_resize(struct wl_client *client, struct wl_resource *resource,
- struct wl_resource *input_resource, uint32_t time,
+ struct wl_resource *input_resource, uint32_t serial,
uint32_t edges)
{
struct weston_input_device *wd = input_resource->data;
@@ -412,11 +411,11 @@ shell_surface_resize(struct wl_client *client, struct wl_resource *resource,
return;
if (wd->input_device.button_count == 0 ||
- wd->input_device.grab_time != time ||
+ wd->input_device.grab_serial != serial ||
wd->input_device.pointer_focus != &shsurf->surface->surface)
return;
- if (weston_surface_resize(shsurf, wd, time, edges) < 0)
+ if (weston_surface_resize(shsurf, wd, edges) < 0)
wl_resource_post_no_memory(resource);
}
@@ -568,8 +567,7 @@ shell_surface_set_maximized(struct wl_client *client,
panel_height = get_output_panel_height(wlshell, es->output);
edges = WL_SHELL_SURFACE_RESIZE_TOP|WL_SHELL_SURFACE_RESIZE_LEFT;
- wl_shell_surface_send_configure(&shsurf->resource,
- weston_compositor_get_time(), edges,
+ wl_shell_surface_send_configure(&shsurf->resource, edges,
es->output->current->width,
es->output->current->height - panel_height);
@@ -702,14 +700,13 @@ shell_surface_set_fullscreen(struct wl_client *client,
if (weston_surface_is_mapped(es))
shsurf->force_configure = 1;
- wl_shell_surface_send_configure(&shsurf->resource,
- weston_compositor_get_time(), 0,
+ wl_shell_surface_send_configure(&shsurf->resource, 0,
shsurf->output->current->width,
shsurf->output->current->height);
}
static void
-popup_grab_focus(struct wl_pointer_grab *grab, uint32_t time,
+popup_grab_focus(struct wl_pointer_grab *grab,
struct wl_surface *surface, int32_t x, int32_t y)
{
struct wl_input_device *device = grab->input_device;
@@ -718,10 +715,10 @@ popup_grab_focus(struct wl_pointer_grab *grab, uint32_t time,
struct wl_client *client = priv->surface->surface.resource.client;
if (surface && surface->resource.client == client) {
- wl_input_device_set_pointer_focus(device, surface, time, x, y);
+ wl_input_device_set_pointer_focus(device, surface, x, y);
grab->focus = surface;
} else {
- wl_input_device_set_pointer_focus(device, NULL, time, 0, 0);
+ wl_input_device_set_pointer_focus(device, NULL, 0, 0);
grab->focus = NULL;
}
}
@@ -744,15 +741,20 @@ popup_grab_button(struct wl_pointer_grab *grab,
struct wl_resource *resource;
struct shell_surface *shsurf =
container_of(grab, struct shell_surface, popup.grab);
+ struct wl_display *display;
+ uint32_t serial;
resource = grab->input_device->pointer_focus_resource;
if (resource) {
- wl_input_device_send_button(resource, time, button, state);
+ display = wl_client_get_display(resource->client);
+ serial = wl_display_get_serial(display);
+ wl_input_device_send_button(resource, serial,
+ time, button, state);
} else if (state == 0 &&
(shsurf->popup.initial_up ||
time - shsurf->popup.time > 500)) {
wl_shell_surface_send_popup_done(&shsurf->resource);
- wl_input_device_end_pointer_grab(grab->input_device, time);
+ wl_input_device_end_pointer_grab(grab->input_device);
shsurf->popup.grab.input_device = NULL;
}
@@ -767,7 +769,7 @@ static const struct wl_pointer_grab_interface popup_grab_interface = {
};
static void
-shell_map_popup(struct shell_surface *shsurf, uint32_t time)
+shell_map_popup(struct shell_surface *shsurf, uint32_t serial)
{
struct wl_input_device *device;
struct weston_surface *es = shsurf->surface;
@@ -799,7 +801,7 @@ shell_map_popup(struct shell_surface *shsurf, uint32_t time)
shsurf->popup.initial_up = 0;
wl_input_device_start_pointer_grab(shsurf->popup.grab.input_device,
- &shsurf->popup.grab, shsurf->popup.time);
+ &shsurf->popup.grab);
}
static void
@@ -834,7 +836,7 @@ destroy_shell_surface(struct wl_resource *resource)
struct shell_surface *shsurf = resource->data;
if (shsurf->popup.grab.input_device)
- wl_input_device_end_pointer_grab(shsurf->popup.grab.input_device, 0);
+ wl_input_device_end_pointer_grab(shsurf->popup.grab.input_device);
/* in case cleaning up a dead client destroys shell_surface first */
if (shsurf->surface) {
@@ -851,14 +853,14 @@ destroy_shell_surface(struct wl_resource *resource)
static void
shell_handle_surface_destroy(struct wl_listener *listener,
- struct wl_resource *resource, uint32_t time)
+ struct wl_resource *resource)
{
struct shell_surface *shsurf = container_of(listener,
struct shell_surface,
surface_destroy_listener);
shsurf->surface = NULL;
- wl_resource_destroy(&shsurf->resource, time);
+ wl_resource_destroy(&shsurf->resource);
}
static struct shell_surface *
@@ -1036,8 +1038,7 @@ desktop_shell_set_background(struct wl_client *client,
weston_surface_set_position(surface, shsurf->output->x,
shsurf->output->y);
- desktop_shell_send_configure(resource,
- weston_compositor_get_time(), 0,
+ desktop_shell_send_configure(resource, 0,
surface_resource,
shsurf->output->current->width,
shsurf->output->current->height);
@@ -1074,8 +1075,7 @@ desktop_shell_set_panel(struct wl_client *client,
weston_surface_set_position(surface, shsurf->output->x,
shsurf->output->y);
- desktop_shell_send_configure(resource,
- weston_compositor_get_time(), 0,
+ desktop_shell_send_configure(resource, 0,
surface_resource,
shsurf->output->current->width,
shsurf->output->current->height);
@@ -1083,7 +1083,7 @@ desktop_shell_set_panel(struct wl_client *client,
static void
handle_lock_surface_destroy(struct wl_listener *listener,
- struct wl_resource *resource, uint32_t time)
+ struct wl_resource *resource)
{
struct wl_shell *shell =
container_of(listener, struct wl_shell, lock_surface_listener);
@@ -1190,7 +1190,7 @@ move_binding(struct wl_input_device *device, uint32_t time,
break;
}
- weston_surface_move(surface, (struct weston_input_device *) device, time);
+ weston_surface_move(surface, (struct weston_input_device *) device);
}
static void
@@ -1238,7 +1238,7 @@ resize_binding(struct wl_input_device *device, uint32_t time,
edges |= WL_SHELL_SURFACE_RESIZE_BOTTOM;
weston_surface_resize(shsurf, (struct weston_input_device *) device,
- time, edges);
+ edges);
}
static void
@@ -1396,7 +1396,7 @@ rotate_grab_button(struct wl_pointer_grab *grab,
weston_matrix_multiply(&shsurf->rotation.rotation,
&rotate->rotation);
shell_grab_finish(&rotate->base);
- wl_input_device_end_pointer_grab(device, time);
+ wl_input_device_end_pointer_grab(device);
free(rotate);
}
}
@@ -1446,7 +1446,7 @@ rotate_binding(struct wl_input_device *device, uint32_t time,
surface->surface->geometry.height / 2,
&rotate->center.x, &rotate->center.y);
- wl_input_device_start_pointer_grab(device, &rotate->base.grab, time);
+ wl_input_device_start_pointer_grab(device, &rotate->base.grab);
dx = device->x - rotate->center.x;
dy = device->y - rotate->center.y;
@@ -1471,18 +1471,18 @@ rotate_binding(struct wl_input_device *device, uint32_t time,
weston_matrix_init(&rotate->rotation);
}
- wl_input_device_set_pointer_focus(device, NULL, time, 0, 0);
+ wl_input_device_set_pointer_focus(device, NULL, 0, 0);
}
static void
activate(struct weston_shell *base, struct weston_surface *es,
- struct weston_input_device *device, uint32_t time)
+ struct weston_input_device *device)
{
struct wl_shell *shell = container_of(base, struct wl_shell, shell);
struct weston_compositor *compositor = shell->compositor;
struct weston_surface *surf, *prev;
- weston_surface_activate(es, device, time);
+ weston_surface_activate(es, device);
if (compositor->wxs)
weston_xserver_surface_activate(es);
@@ -1555,7 +1555,7 @@ click_to_activate_binding(struct wl_input_device *device,
focus = upper;
if (state && device->pointer_grab == &device->default_pointer_grab)
- activate(compositor->shell, focus, wd, time);
+ activate(compositor->shell, focus, wd);
}
static void
@@ -1565,7 +1565,6 @@ lock(struct weston_shell *base)
struct weston_input_device *device;
struct shell_surface *shsurf;
struct weston_output *output;
- uint32_t time;
if (shell->locked) {
wl_list_for_each(output, &shell->compositor->output_list, link)
@@ -1602,10 +1601,9 @@ lock(struct weston_shell *base)
weston_compositor_schedule_repaint(shell->compositor);
/* reset keyboard foci */
- time = weston_compositor_get_time();
wl_list_for_each(device, &shell->compositor->input_device_list, link) {
wl_input_device_set_keyboard_focus(&device->input_device,
- NULL, time);
+ NULL);
}
/* TODO: disable bindings that should not work while locked. */
@@ -1753,8 +1751,7 @@ map(struct weston_shell *base, struct weston_surface *surface,
if (!shell->locked)
activate(base, surface,
(struct weston_input_device *)
- compositor->input_device,
- weston_compositor_get_time());
+ compositor->input_device);
break;
default:
break;
@@ -1924,7 +1921,7 @@ bind_desktop_shell(struct wl_client *client,
wl_resource_post_error(resource, WL_DISPLAY_ERROR_INVALID_OBJECT,
"permission to bind desktop_shell denied");
- wl_resource_destroy(resource, 0);
+ wl_resource_destroy(resource);
}
static void
@@ -1979,7 +1976,7 @@ bind_screensaver(struct wl_client *client,
wl_resource_post_error(resource, WL_DISPLAY_ERROR_INVALID_OBJECT,
"interface object already bound");
- wl_resource_destroy(resource, 0);
+ wl_resource_destroy(resource);
}
struct switcher {
@@ -2042,7 +2039,7 @@ switcher_next(struct switcher *switcher)
static void
switcher_handle_surface_destroy(struct wl_listener *listener,
- struct wl_resource *resource, uint32_t time)
+ struct wl_resource *resource)
{
struct switcher *switcher =
container_of(listener, struct switcher, listener);
@@ -2064,9 +2061,9 @@ switcher_destroy(struct switcher *switcher, uint32_t time)
}
if (switcher->current)
- activate(compositor->shell, switcher->current, device, time);
+ activate(compositor->shell, switcher->current, device);
wl_list_remove(&switcher->listener.link);
- wl_input_device_end_keyboard_grab(&device->input_device, time);
+ wl_input_device_end_keyboard_grab(&device->input_device);
free(switcher);
}
@@ -2104,9 +2101,8 @@ switcher_binding(struct wl_input_device *device, uint32_t time,
wl_list_init(&switcher->listener.link);
switcher->grab.interface = &switcher_grab;
- wl_input_device_start_keyboard_grab(device, &switcher->grab, time);
- wl_input_device_set_keyboard_focus(device, NULL,
- weston_compositor_get_time());
+ wl_input_device_start_keyboard_grab(device, &switcher->grab);
+ wl_input_device_set_keyboard_focus(device, NULL);
switcher_next(switcher);
}