aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmil Velikov <[email protected]>2017-09-28 18:38:13 +0100
committerEmil Velikov <[email protected]>2017-10-02 16:29:38 +0100
commit677edff5cfdefdd1433beff4787a7d7987e07bd3 (patch)
tree21e5f0ac76feb7fd1a9235fe83a392e725b4d3bb
parentebc51ff932083ab1bda58a4b66b3e35f3b593fa0 (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.c26
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;
}