47 lines
1.8 KiB
Diff
47 lines
1.8 KiB
Diff
|
From 4206d0e15363d188f30f2f3dbcc212fef206fc1d Mon Sep 17 00:00:00 2001
|
||
|
From: Simon Ser <contact@emersion.fr>
|
||
|
Date: Mon, 11 Mar 2024 23:48:17 +0100
|
||
|
Subject: [PATCH] Make wl_drm optional
|
||
|
|
||
|
Don't error out when vtable->wl_interface is NULL.
|
||
|
|
||
|
Fetching wl_drm_interface from libEGL used to work but doesn't
|
||
|
anymore: it's now a private symbol (wayland-scanner private-code).
|
||
|
---
|
||
|
src/i965_output_wayland.c | 8 ++++----
|
||
|
1 file changed, 4 insertions(+), 4 deletions(-)
|
||
|
|
||
|
diff --git a/src/i965_output_wayland.c b/src/i965_output_wayland.c
|
||
|
index a6120b7b2..a002cae5b 100644
|
||
|
--- a/src/i965_output_wayland.c
|
||
|
+++ b/src/i965_output_wayland.c
|
||
|
@@ -154,7 +154,7 @@ registry_handle_global(
|
||
|
struct va_wl_output * const wl_output = i965->wl_output;
|
||
|
struct wl_vtable * const wl_vtable = &wl_output->vtable;
|
||
|
|
||
|
- if (strcmp(interface, "wl_drm") == 0) {
|
||
|
+ if (strcmp(interface, "wl_drm") == 0 && wl_vtable->drm_interface) {
|
||
|
wl_output->wl_drm_name = name;
|
||
|
wl_output->wl_drm = registry_bind(wl_vtable, wl_output->wl_registry,
|
||
|
name, wl_vtable->drm_interface,
|
||
|
@@ -472,6 +472,7 @@ i965_output_wayland_init(VADriverContextP ctx)
|
||
|
|
||
|
wl_vtable = &i965->wl_output->vtable;
|
||
|
|
||
|
+ /* drm_interface is optional */
|
||
|
if (vtable->wl_interface)
|
||
|
wl_vtable->drm_interface = vtable->wl_interface;
|
||
|
else {
|
||
|
@@ -483,9 +484,8 @@ i965_output_wayland_init(VADriverContextP ctx)
|
||
|
}
|
||
|
|
||
|
dso_handle = i965->wl_output->libegl_handle;
|
||
|
- if (!dso_get_symbols(dso_handle, wl_vtable, sizeof(*wl_vtable),
|
||
|
- libegl_symbols))
|
||
|
- goto error;
|
||
|
+ dso_get_symbols(dso_handle, wl_vtable, sizeof(*wl_vtable),
|
||
|
+ libegl_symbols);
|
||
|
}
|
||
|
|
||
|
i965->wl_output->libwl_client_handle = dso_open(LIBWAYLAND_CLIENT_NAME);
|