mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-03 11:30:21 +01:00
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 <emil.velikov@collabora.com> Reviewed-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Miguel A. Vico <mvicomoya@nvidia.com>
This commit is contained in:
parent
ebc51ff932
commit
677edff5cf
1 changed files with 16 additions and 10 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue