mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-10 04:27:45 -05:00
wayland: Use wl_output_release with wl_output v3
wl_output_release, the use of which was recently introduced, is not available until wl_output interface version 3. However, only wl_output version 2 was bound. This lead to protocol errors when a display was disconnected, causing foot to terminate. Instead, only use wl_output_release if wl_output version 3 is provided and bound. Otherwise, just use wl_output_destroy. Closes: https://codeberg.org/dnkl/foot/issues/219
This commit is contained in:
parent
90edc09697
commit
ab6327da26
2 changed files with 11 additions and 4 deletions
13
wayland.c
13
wayland.c
|
|
@ -841,11 +841,12 @@ handle_global(void *data, struct wl_registry *registry,
|
|||
return;
|
||||
|
||||
struct wl_output *output = wl_registry_bind(
|
||||
wayl->registry, name, &wl_output_interface, required);
|
||||
wayl->registry, name, &wl_output_interface, min(version, 3));
|
||||
|
||||
tll_push_back(
|
||||
wayl->monitors,
|
||||
((struct monitor){.wayl = wayl, .output = output, .wl_name = name}));
|
||||
((struct monitor){.wayl = wayl, .output = output, .wl_name = name,
|
||||
.use_output_release = version >= WL_OUTPUT_RELEASE_SINCE_VERSION}));
|
||||
|
||||
struct monitor *mon = &tll_back(wayl->monitors);
|
||||
wl_output_add_listener(output, &output_listener, mon);
|
||||
|
|
@ -901,8 +902,12 @@ monitor_destroy(struct monitor *mon)
|
|||
{
|
||||
if (mon->xdg != NULL)
|
||||
zxdg_output_v1_destroy(mon->xdg);
|
||||
if (mon->output != NULL)
|
||||
wl_output_release(mon->output);
|
||||
if (mon->output != NULL) {
|
||||
if (mon->use_output_release)
|
||||
wl_output_release(mon->output);
|
||||
else
|
||||
wl_output_destroy(mon->output);
|
||||
}
|
||||
free(mon->make);
|
||||
free(mon->model);
|
||||
free(mon->name);
|
||||
|
|
|
|||
|
|
@ -294,6 +294,8 @@ struct monitor {
|
|||
char *description;
|
||||
|
||||
float inch; /* e.g. 24" */
|
||||
|
||||
bool use_output_release;
|
||||
};
|
||||
|
||||
struct wayland;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue