diff options
Diffstat (limited to 'src/egl/wayland/wayland-egl/wayland-egl.c')
-rw-r--r-- | src/egl/wayland/wayland-egl/wayland-egl.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/src/egl/wayland/wayland-egl/wayland-egl.c b/src/egl/wayland/wayland-egl/wayland-egl.c index 4501c6dc956..e7cea895ece 100644 --- a/src/egl/wayland/wayland-egl/wayland-egl.c +++ b/src/egl/wayland/wayland-egl/wayland-egl.c @@ -61,26 +61,32 @@ WL_EGL_EXPORT struct wl_egl_window * wl_egl_window_create(struct wl_surface *surface, int width, int height) { - struct wl_egl_window _INIT_ = { .version = WL_EGL_WINDOW_VERSION }; struct wl_egl_window *egl_window; if (width <= 0 || height <= 0) return NULL; - egl_window = malloc(sizeof *egl_window); + egl_window = calloc(1, sizeof *egl_window); if (!egl_window) return NULL; - memcpy(egl_window, &_INIT_, sizeof *egl_window); + /* Cast away the constness to set the version number. + * + * We want the const notation since it gives an explicit + * feedback to the backend implementation, should it try to + * change it. + * + * The latter in itself is not too surprising as these days APIs + * tend to provide bidirectional version field. + */ + intptr_t *version = (intptr_t *)&egl_window->version; + *version = WL_EGL_WINDOW_VERSION; egl_window->surface = surface; - egl_window->private = NULL; - egl_window->resize_callback = NULL; - egl_window->destroy_window_callback = NULL; - wl_egl_window_resize(egl_window, width, height, 0, 0); - egl_window->attached_width = 0; - egl_window->attached_height = 0; - + + egl_window->width = width; + egl_window->height = height; + return egl_window; } |