wayland-drm: constify the callbacks struct, take 2
Now that wayland-drm (correctly) keeps a local copy of the callbacks, this should not longer cause explosions. After all the symbol is a local, constant data. Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Reviewed-by: Daniel Stone <daniels@collabora.com> Tested-by: Derek Foreman <derekf@osg.samsung.com>
This commit is contained in:

committed by
Emil Velikov

parent
0cfd6f6cfc
commit
acb84ffbc7
@@ -2745,17 +2745,16 @@ dri2_wl_release_buffer(void *user_data, struct wl_drm_buffer *buffer)
|
||||
dri2_dpy->image->destroyImage(buffer->driver_buffer);
|
||||
}
|
||||
|
||||
static struct wayland_drm_callbacks wl_drm_callbacks = {
|
||||
.authenticate = NULL,
|
||||
.reference_buffer = dri2_wl_reference_buffer,
|
||||
.release_buffer = dri2_wl_release_buffer
|
||||
};
|
||||
|
||||
static EGLBoolean
|
||||
dri2_bind_wayland_display_wl(_EGLDriver *drv, _EGLDisplay *disp,
|
||||
struct wl_display *wl_dpy)
|
||||
{
|
||||
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
|
||||
const struct wayland_drm_callbacks wl_drm_callbacks = {
|
||||
.authenticate = (int(*)(void *, uint32_t)) dri2_dpy->vtbl->authenticate,
|
||||
.reference_buffer = dri2_wl_reference_buffer,
|
||||
.release_buffer = dri2_wl_release_buffer
|
||||
};
|
||||
int flags = 0;
|
||||
uint64_t cap;
|
||||
|
||||
@@ -2764,9 +2763,6 @@ dri2_bind_wayland_display_wl(_EGLDriver *drv, _EGLDisplay *disp,
|
||||
if (dri2_dpy->wl_server_drm)
|
||||
return EGL_FALSE;
|
||||
|
||||
wl_drm_callbacks.authenticate =
|
||||
(int(*)(void *, uint32_t)) dri2_dpy->vtbl->authenticate;
|
||||
|
||||
if (drmGetCap(dri2_dpy->fd, DRM_CAP_PRIME, &cap) == 0 &&
|
||||
cap == (DRM_PRIME_CAP_IMPORT | DRM_PRIME_CAP_EXPORT) &&
|
||||
dri2_dpy->image->base.version >= 7 &&
|
||||
|
@@ -259,7 +259,7 @@ wayland_drm_buffer_get(struct wl_drm *drm, struct wl_resource *resource)
|
||||
|
||||
struct wl_drm *
|
||||
wayland_drm_init(struct wl_display *display, char *device_name,
|
||||
struct wayland_drm_callbacks *callbacks, void *user_data,
|
||||
const struct wayland_drm_callbacks *callbacks, void *user_data,
|
||||
uint32_t flags)
|
||||
{
|
||||
struct wl_drm *drm;
|
||||
|
@@ -34,7 +34,7 @@ wayland_drm_buffer_get(struct wl_drm *drm, struct wl_resource *resource);
|
||||
|
||||
struct wl_drm *
|
||||
wayland_drm_init(struct wl_display *display, char *device_name,
|
||||
struct wayland_drm_callbacks *callbacks, void *user_data,
|
||||
const struct wayland_drm_callbacks *callbacks, void *user_data,
|
||||
uint32_t flags);
|
||||
|
||||
void
|
||||
|
Reference in New Issue
Block a user