diff options
author | Emil Velikov <[email protected]> | 2017-09-28 18:38:13 +0100 |
---|---|---|
committer | Emil Velikov <[email protected]> | 2017-10-02 16:29:38 +0100 |
commit | 677edff5cfdefdd1433beff4787a7d7987e07bd3 (patch) | |
tree | 21e5f0ac76feb7fd1a9235fe83a392e725b4d3bb | |
parent | ebc51ff932083ab1bda58a4b66b3e35f3b593fa0 (diff) |
wayland-egl: rework and simplify wl_egl_window initialization
Use calloc instead of malloc + explicitly zeroing the different fields.
We need special handling for the version field which is of type
const intptr_t.
As we're here document why keeping the constness is a good idea.
The wl_egl_window_resize() call is replaced with an explicit set of the
width/height.
Signed-off-by: Emil Velikov <[email protected]>
Reviewed-by: Daniel Stone <[email protected]>
Reviewed-by: Miguel A. Vico <[email protected]>
-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; } |