aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2023-08-12 08:24:59 +0200
committerIsaac Freund <mail@isaacfreund.com>2023-11-23 11:39:25 +0000
commit5717e27c06a89a64b3a168ed22682bf657b17ebf (patch)
tree43ce180fed0dd8d7bc1f8b0fc2603898bd83d719
parent6a7463bb8e29c55b906dd66e2ce3625dcccbd3f4 (diff)
output: take wl_display in wlr_output_create_global()
Currently wlr_output holds a wl_display, but it will go away soon. Instead of relying on that field in wlr_output_create_global(), make the dependency explicit by taking a wl_display as argument.
-rw-r--r--examples/fullscreen-shell.c2
-rw-r--r--examples/output-layers.c2
-rw-r--r--examples/scene-graph.c2
-rw-r--r--include/wlr/types/wlr_output.h2
-rw-r--r--types/output/output.c4
-rw-r--r--types/wlr_output_layout.c9
6 files changed, 11 insertions, 10 deletions
diff --git a/examples/fullscreen-shell.c b/examples/fullscreen-shell.c
index afc3c876..35be46e2 100644
--- a/examples/fullscreen-shell.c
+++ b/examples/fullscreen-shell.c
@@ -163,7 +163,7 @@ static void server_handle_new_output(struct wl_listener *listener, void *data) {
wl_list_insert(&server->outputs, &output->link);
wlr_output_layout_add_auto(server->output_layout, wlr_output);
- wlr_output_create_global(wlr_output);
+ wlr_output_create_global(wlr_output, server->wl_display);
struct wlr_output_state state;
wlr_output_state_init(&state);
diff --git a/examples/output-layers.c b/examples/output-layers.c
index cec3b50b..c8edc00f 100644
--- a/examples/output-layers.c
+++ b/examples/output-layers.c
@@ -184,7 +184,7 @@ static void server_handle_new_output(struct wl_listener *listener, void *data) {
wlr_output_commit_state(wlr_output, &state);
wlr_output_state_finish(&state);
- wlr_output_create_global(wlr_output);
+ wlr_output_create_global(wlr_output, server->wl_display);
}
static void output_surface_handle_destroy(struct wl_listener *listener,
diff --git a/examples/scene-graph.c b/examples/scene-graph.c
index 03ad8141..be1070e9 100644
--- a/examples/scene-graph.c
+++ b/examples/scene-graph.c
@@ -90,7 +90,7 @@ static void server_handle_new_output(struct wl_listener *listener, void *data) {
wlr_output_commit_state(wlr_output, &state);
wlr_output_state_finish(&state);
- wlr_output_create_global(wlr_output);
+ wlr_output_create_global(wlr_output, server->display);
}
static void surface_handle_commit(struct wl_listener *listener, void *data) {
diff --git a/include/wlr/types/wlr_output.h b/include/wlr/types/wlr_output.h
index 47c7672e..e81ba02e 100644
--- a/include/wlr/types/wlr_output.h
+++ b/include/wlr/types/wlr_output.h
@@ -279,7 +279,7 @@ struct wlr_surface;
* wlr_output_commit().
*/
void wlr_output_enable(struct wlr_output *output, bool enable);
-void wlr_output_create_global(struct wlr_output *output);
+void wlr_output_create_global(struct wlr_output *output, struct wl_display *display);
void wlr_output_destroy_global(struct wlr_output *output);
/**
* Initialize the output's rendering subsystem with the provided allocator and
diff --git a/types/output/output.c b/types/output/output.c
index 08a71d83..ccb36c08 100644
--- a/types/output/output.c
+++ b/types/output/output.c
@@ -128,11 +128,11 @@ static void output_bind(struct wl_client *wl_client, void *data,
wl_signal_emit_mutable(&output->events.bind, &evt);
}
-void wlr_output_create_global(struct wlr_output *output) {
+void wlr_output_create_global(struct wlr_output *output, struct wl_display *display) {
if (output->global != NULL) {
return;
}
- output->global = wl_global_create(output->display,
+ output->global = wl_global_create(display,
&wl_output_interface, OUTPUT_VERSION, output, output_bind);
if (output->global == NULL) {
wlr_log(WLR_ERROR, "Failed to allocate wl_output global");
diff --git a/types/wlr_output_layout.c b/types/wlr_output_layout.c
index 94ba779e..fa96e74a 100644
--- a/types/wlr_output_layout.c
+++ b/types/wlr_output_layout.c
@@ -115,10 +115,11 @@ static void output_layout_reconfigure(struct wlr_output_layout *layout) {
wl_signal_emit_mutable(&layout->events.change, layout);
}
-static void output_update_global(struct wlr_output *output) {
+static void output_update_global(struct wlr_output_layout *layout,
+ struct wlr_output *output) {
// Don't expose the output if it doesn't have a current mode
if (wl_list_empty(&output->modes) || output->current_mode != NULL) {
- wlr_output_create_global(output);
+ wlr_output_create_global(output, layout->display);
} else {
wlr_output_destroy_global(output);
}
@@ -133,7 +134,7 @@ static void handle_output_commit(struct wl_listener *listener, void *data) {
WLR_OUTPUT_STATE_TRANSFORM |
WLR_OUTPUT_STATE_MODE)) {
output_layout_reconfigure(l_output->layout);
- output_update_global(l_output->output);
+ output_update_global(l_output->layout, l_output->output);
}
}
@@ -193,7 +194,7 @@ static struct wlr_output_layout_output *output_layout_add(struct wlr_output_layo
l_output->auto_configured = auto_configured;
output_layout_reconfigure(layout);
- output_update_global(output);
+ output_update_global(layout, output);
if (is_new) {
wl_signal_emit_mutable(&layout->events.add, l_output);