aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/rootston/view.h4
-rw-r--r--include/wlr/types/wlr_wl_shell.h10
-rw-r--r--include/wlr/types/wlr_xdg_shell_v6.h7
-rw-r--r--rootston/wl_shell.c30
-rw-r--r--types/wlr_wl_shell.c87
-rw-r--r--types/wlr_xdg_shell_v6.c28
6 files changed, 55 insertions, 111 deletions
diff --git a/include/rootston/view.h b/include/rootston/view.h
index 44a98115..5901f0a5 100644
--- a/include/rootston/view.h
+++ b/include/rootston/view.h
@@ -12,8 +12,8 @@ struct roots_wl_shell_surface {
struct wl_listener destroy;
struct wl_listener request_move;
struct wl_listener request_resize;
- struct wl_listener request_set_maximized;
- struct wl_listener request_set_fullscreen;
+ struct wl_listener request_maximize;
+ struct wl_listener request_fullscreen;
struct wl_listener set_state;
struct wl_listener surface_commit;
diff --git a/include/wlr/types/wlr_wl_shell.h b/include/wlr/types/wlr_wl_shell.h
index 24936a34..ec087693 100644
--- a/include/wlr/types/wlr_wl_shell.h
+++ b/include/wlr/types/wlr_wl_shell.h
@@ -81,8 +81,8 @@ struct wlr_wl_shell_surface {
struct wl_signal request_move;
struct wl_signal request_resize;
- struct wl_signal request_set_fullscreen;
- struct wl_signal request_set_maximized;
+ struct wl_signal request_fullscreen;
+ struct wl_signal request_maximize;
struct wl_signal set_state;
struct wl_signal set_title;
@@ -93,14 +93,12 @@ struct wlr_wl_shell_surface {
};
struct wlr_wl_shell_surface_move_event {
- struct wl_client *client;
struct wlr_wl_shell_surface *surface;
struct wlr_seat_client *seat;
uint32_t serial;
};
struct wlr_wl_shell_surface_resize_event {
- struct wl_client *client;
struct wlr_wl_shell_surface *surface;
struct wlr_seat_client *seat;
uint32_t serial;
@@ -108,15 +106,13 @@ struct wlr_wl_shell_surface_resize_event {
};
struct wlr_wl_shell_surface_set_fullscreen_event {
- struct wl_client *client;
struct wlr_wl_shell_surface *surface;
enum wl_shell_surface_fullscreen_method method;
uint32_t framerate;
struct wlr_output *output;
};
-struct wlr_wl_shell_surface_set_maximized_event {
- struct wl_client *client;
+struct wlr_wl_shell_surface_maximize_event {
struct wlr_wl_shell_surface *surface;
struct wlr_output *output;
};
diff --git a/include/wlr/types/wlr_xdg_shell_v6.h b/include/wlr/types/wlr_xdg_shell_v6.h
index 7940deef..7e89ec74 100644
--- a/include/wlr/types/wlr_xdg_shell_v6.h
+++ b/include/wlr/types/wlr_xdg_shell_v6.h
@@ -138,14 +138,12 @@ struct wlr_xdg_surface_v6 {
};
struct wlr_xdg_toplevel_v6_move_event {
- struct wl_client *client;
struct wlr_xdg_surface_v6 *surface;
struct wlr_seat_client *seat;
uint32_t serial;
};
struct wlr_xdg_toplevel_v6_resize_event {
- struct wl_client *client;
struct wlr_xdg_surface_v6 *surface;
struct wlr_seat_client *seat;
uint32_t serial;
@@ -153,19 +151,16 @@ struct wlr_xdg_toplevel_v6_resize_event {
};
struct wlr_xdg_toplevel_v6_set_fullscreen_event {
- struct wl_client *client;
struct wlr_xdg_surface_v6 *surface;
bool fullscreen;
struct wlr_output *output;
};
struct wlr_xdg_toplevel_v6_show_window_menu_event {
- struct wl_client *client;
struct wlr_xdg_surface_v6 *surface;
struct wlr_seat_client *seat;
uint32_t serial;
- uint32_t x;
- uint32_t y;
+ uint32_t x, y;
};
struct wlr_xdg_shell_v6 *wlr_xdg_shell_v6_create(struct wl_display *display);
diff --git a/rootston/wl_shell.c b/rootston/wl_shell.c
index e69f2dd9..ce568355 100644
--- a/rootston/wl_shell.c
+++ b/rootston/wl_shell.c
@@ -50,23 +50,21 @@ static void handle_request_resize(struct wl_listener *listener, void *data) {
roots_seat_begin_resize(seat, view, e->edges);
}
-static void handle_request_set_maximized(struct wl_listener *listener,
+static void handle_request_maximize(struct wl_listener *listener,
void *data) {
struct roots_wl_shell_surface *roots_surface =
- wl_container_of(listener, roots_surface, request_set_maximized);
+ wl_container_of(listener, roots_surface, request_maximize);
struct roots_view *view = roots_surface->view;
- //struct wlr_wl_shell_surface_set_maximized_event *e = data;
+ //struct wlr_wl_shell_surface_maximize_event *e = data;
view_maximize(view, true);
}
-static void handle_request_set_fullscreen(struct wl_listener *listener,
+static void handle_request_fullscreen(struct wl_listener *listener,
void *data) {
struct roots_wl_shell_surface *roots_surface =
- wl_container_of(listener, roots_surface, request_set_fullscreen);
+ wl_container_of(listener, roots_surface, request_fullscreen);
struct roots_view *view = roots_surface->view;
struct wlr_wl_shell_surface_set_fullscreen_event *e = data;
-
- // TODO: support e->method, e->framerate
view_set_fullscreen(view, true, e->output);
}
@@ -95,8 +93,8 @@ static void handle_destroy(struct wl_listener *listener, void *data) {
wl_list_remove(&roots_surface->destroy.link);
wl_list_remove(&roots_surface->request_move.link);
wl_list_remove(&roots_surface->request_resize.link);
- wl_list_remove(&roots_surface->request_set_maximized.link);
- wl_list_remove(&roots_surface->request_set_fullscreen.link);
+ wl_list_remove(&roots_surface->request_maximize.link);
+ wl_list_remove(&roots_surface->request_fullscreen.link);
wl_list_remove(&roots_surface->set_state.link);
wl_list_remove(&roots_surface->surface_commit.link);
wl_list_remove(&roots_surface->view->link);
@@ -125,13 +123,13 @@ void handle_wl_shell_surface(struct wl_listener *listener, void *data) {
roots_surface->request_resize.notify = handle_request_resize;
wl_signal_add(&surface->events.request_resize,
&roots_surface->request_resize);
- roots_surface->request_set_maximized.notify = handle_request_set_maximized;
- wl_signal_add(&surface->events.request_set_maximized,
- &roots_surface->request_set_maximized);
- roots_surface->request_set_fullscreen.notify =
- handle_request_set_fullscreen;
- wl_signal_add(&surface->events.request_set_fullscreen,
- &roots_surface->request_set_fullscreen);
+ roots_surface->request_maximize.notify = handle_request_maximize;
+ wl_signal_add(&surface->events.request_maximize,
+ &roots_surface->request_maximize);
+ roots_surface->request_fullscreen.notify =
+ handle_request_fullscreen;
+ wl_signal_add(&surface->events.request_fullscreen,
+ &roots_surface->request_fullscreen);
roots_surface->set_state.notify = handle_set_state;
wl_signal_add(&surface->events.set_state, &roots_surface->set_state);
roots_surface->surface_commit.notify = handle_surface_commit;
diff --git a/types/wlr_wl_shell.c b/types/wlr_wl_shell.c
index abe967d7..6174c872 100644
--- a/types/wlr_wl_shell.c
+++ b/types/wlr_wl_shell.c
@@ -108,25 +108,17 @@ static void shell_surface_protocol_pong(struct wl_client *client,
static void shell_surface_protocol_move(struct wl_client *client,
struct wl_resource *resource, struct wl_resource *seat_resource,
uint32_t serial) {
- wlr_log(L_DEBUG, "got shell surface move");
struct wlr_wl_shell_surface *surface = wl_resource_get_user_data(resource);
struct wlr_seat_client *seat =
wl_resource_get_user_data(seat_resource);
- struct wlr_wl_shell_surface_move_event *event =
- calloc(1, sizeof(struct wlr_wl_shell_surface_move_event));
- if (event == NULL) {
- wl_client_post_no_memory(client);
- return;
- }
- event->client = client;
- event->surface = surface;
- event->seat = seat;
- event->serial = serial;
+ struct wlr_wl_shell_surface_move_event event = {
+ .surface = surface,
+ .seat = seat,
+ .serial = serial,
+ };
- wl_signal_emit(&surface->events.request_move, event);
-
- free(event);
+ wl_signal_emit(&surface->events.request_move, &event);
}
static struct wlr_wl_shell_popup_grab *shell_popup_grab_from_seat(
@@ -174,26 +166,18 @@ static void shell_surface_destroy_popup_state(
static void shell_surface_protocol_resize(struct wl_client *client,
struct wl_resource *resource, struct wl_resource *seat_resource,
uint32_t serial, enum wl_shell_surface_resize edges) {
- wlr_log(L_DEBUG, "got shell surface resize");
struct wlr_wl_shell_surface *surface = wl_resource_get_user_data(resource);
struct wlr_seat_client *seat =
wl_resource_get_user_data(seat_resource);
- struct wlr_wl_shell_surface_resize_event *event =
- calloc(1, sizeof(struct wlr_wl_shell_surface_resize_event));
- if (event == NULL) {
- wl_client_post_no_memory(client);
- return;
- }
- event->client = client;
- event->surface = surface;
- event->seat = seat;
- event->serial = serial;
- event->edges = edges;
+ struct wlr_wl_shell_surface_resize_event event = {
+ .surface = surface,
+ .seat = seat,
+ .serial = serial,
+ .edges = edges,
+ };
- wl_signal_emit(&surface->events.request_resize, event);
-
- free(event);
+ wl_signal_emit(&surface->events.request_resize, &event);
}
static void shell_surface_set_state(struct wlr_wl_shell_surface *surface,
@@ -279,7 +263,6 @@ static void shell_surface_protocol_set_fullscreen(struct wl_client *client,
struct wl_resource *resource,
enum wl_shell_surface_fullscreen_method method, uint32_t framerate,
struct wl_resource *output_resource) {
- wlr_log(L_DEBUG, "got shell surface fullscreen");
struct wlr_wl_shell_surface *surface = wl_resource_get_user_data(resource);
struct wlr_output *output = NULL;
if (output_resource != NULL) {
@@ -289,24 +272,16 @@ static void shell_surface_protocol_set_fullscreen(struct wl_client *client,
shell_surface_set_state(surface, WLR_WL_SHELL_SURFACE_STATE_FULLSCREEN,
NULL, NULL);
- struct wlr_wl_shell_surface_set_fullscreen_event *event =
- calloc(1, sizeof(struct wlr_wl_shell_surface_set_fullscreen_event));
- if (event == NULL) {
- wl_client_post_no_memory(client);
- return;
- }
- event->client = client;
- event->surface = surface;
- event->method = method;
- event->framerate = framerate;
- event->output = output;
+ struct wlr_wl_shell_surface_set_fullscreen_event event = {
+ .surface = surface,
+ .method = method,
+ .framerate = framerate,
+ .output = output,
+ };
- wl_signal_emit(&surface->events.request_set_fullscreen, event);
-
- free(event);
+ wl_signal_emit(&surface->events.request_fullscreen, &event);
}
-
static void shell_surface_protocol_set_popup(struct wl_client *client,
struct wl_resource *resource, struct wl_resource *seat_resource,
uint32_t serial, struct wl_resource *parent_resource, int32_t x,
@@ -368,7 +343,6 @@ static void shell_surface_protocol_set_popup(struct wl_client *client,
static void shell_surface_protocol_set_maximized(struct wl_client *client,
struct wl_resource *resource, struct wl_resource *output_resource) {
- wlr_log(L_DEBUG, "got shell surface maximized");
struct wlr_wl_shell_surface *surface = wl_resource_get_user_data(resource);
struct wlr_output *output = NULL;
if (output_resource != NULL) {
@@ -378,19 +352,12 @@ static void shell_surface_protocol_set_maximized(struct wl_client *client,
shell_surface_set_state(surface, WLR_WL_SHELL_SURFACE_STATE_MAXIMIZED,
NULL, NULL);
- struct wlr_wl_shell_surface_set_maximized_event *event =
- calloc(1, sizeof(struct wlr_wl_shell_surface_set_maximized_event));
- if (event == NULL) {
- wl_client_post_no_memory(client);
- return;
- }
- event->client = client;
- event->surface = surface;
- event->output = output;
-
- wl_signal_emit(&surface->events.request_set_maximized, event);
+ struct wlr_wl_shell_surface_maximize_event event = {
+ .surface = surface,
+ .output = output,
+ };
- free(event);
+ wl_signal_emit(&surface->events.request_maximize, &event);
}
static void shell_surface_protocol_set_title(struct wl_client *client,
@@ -545,8 +512,8 @@ static void shell_protocol_get_shell_surface(struct wl_client *client,
wl_signal_init(&wl_surface->events.ping_timeout);
wl_signal_init(&wl_surface->events.request_move);
wl_signal_init(&wl_surface->events.request_resize);
- wl_signal_init(&wl_surface->events.request_set_fullscreen);
- wl_signal_init(&wl_surface->events.request_set_maximized);
+ wl_signal_init(&wl_surface->events.request_fullscreen);
+ wl_signal_init(&wl_surface->events.request_maximize);
wl_signal_init(&wl_surface->events.set_state);
wl_signal_init(&wl_surface->events.set_title);
wl_signal_init(&wl_surface->events.set_class);
diff --git a/types/wlr_xdg_shell_v6.c b/types/wlr_xdg_shell_v6.c
index 896a5f33..b69f713e 100644
--- a/types/wlr_xdg_shell_v6.c
+++ b/types/wlr_xdg_shell_v6.c
@@ -564,23 +564,15 @@ static void xdg_toplevel_protocol_show_window_menu(struct wl_client *client,
return;
}
- struct wlr_xdg_toplevel_v6_show_window_menu_event *event =
- calloc(1, sizeof(struct wlr_xdg_toplevel_v6_show_window_menu_event));
- if (event == NULL) {
- wl_client_post_no_memory(client);
- return;
- }
-
- event->client = client;
- event->surface = surface;
- event->seat = seat;
- event->serial = serial;
- event->x = x;
- event->y = y;
-
- wl_signal_emit(&surface->events.request_show_window_menu, event);
+ struct wlr_xdg_toplevel_v6_show_window_menu_event event = {
+ .surface = surface,
+ .seat = seat,
+ .serial = serial,
+ .x = x,
+ .y = y,
+ };
- free(event);
+ wl_signal_emit(&surface->events.request_show_window_menu, &event);
}
static void xdg_toplevel_protocol_move(struct wl_client *client,
@@ -598,7 +590,6 @@ static void xdg_toplevel_protocol_move(struct wl_client *client,
}
struct wlr_xdg_toplevel_v6_move_event event = {
- .client = client,
.surface = surface,
.seat = seat,
.serial = serial,
@@ -622,7 +613,6 @@ static void xdg_toplevel_protocol_resize(struct wl_client *client,
}
struct wlr_xdg_toplevel_v6_resize_event event = {
- .client = client,
.surface = surface,
.seat = seat,
.serial = serial,
@@ -672,7 +662,6 @@ static void xdg_toplevel_protocol_set_fullscreen(struct wl_client *client,
surface->toplevel_state->next.fullscreen = true;
struct wlr_xdg_toplevel_v6_set_fullscreen_event event = {
- .client = client,
.surface = surface,
.fullscreen = true,
.output = output,
@@ -688,7 +677,6 @@ static void xdg_toplevel_protocol_unset_fullscreen(struct wl_client *client,
surface->toplevel_state->next.fullscreen = false;
struct wlr_xdg_toplevel_v6_set_fullscreen_event event = {
- .client = client,
.surface = surface,
.fullscreen = false,
.output = NULL,