mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 15:38:09 +02:00
egl: Add _eglConvertIntsToAttribs()
This function converts an attribute list from EGLint[] to EGLAttrib[]. Will be used in following patches to cleanup EGLSync attribute parsing. Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
This commit is contained in:
parent
f2c2f43d4e
commit
3e0d575a6d
2 changed files with 43 additions and 0 deletions
|
|
@ -251,6 +251,47 @@ _eglUnlockDisplay(_EGLDisplay *dpy)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Convert an attribute list from EGLint[] to EGLAttrib[].
|
||||
*
|
||||
* Return an EGL error code. The output parameter out_attrib_list is modified
|
||||
* only on success.
|
||||
*/
|
||||
EGLint
|
||||
_eglConvertIntsToAttribs(const EGLint *int_list, EGLAttrib **out_attrib_list)
|
||||
{
|
||||
size_t len = 0;
|
||||
EGLAttrib *attrib_list;
|
||||
|
||||
if (int_list) {
|
||||
while (int_list[2*len] != EGL_NONE)
|
||||
++len;
|
||||
}
|
||||
|
||||
if (len == 0) {
|
||||
*out_attrib_list = NULL;
|
||||
return EGL_SUCCESS;
|
||||
}
|
||||
|
||||
if (2*len + 1 > SIZE_MAX / sizeof(EGLAttrib))
|
||||
return EGL_BAD_ALLOC;
|
||||
|
||||
attrib_list = malloc((2*len + 1) * sizeof(EGLAttrib));
|
||||
if (!attrib_list)
|
||||
return EGL_BAD_ALLOC;
|
||||
|
||||
for (size_t i = 0; i < len; ++i) {
|
||||
attrib_list[2*i + 0] = int_list[2*i + 0];
|
||||
attrib_list[2*i + 1] = int_list[2*i + 1];
|
||||
}
|
||||
|
||||
attrib_list[2*len] = EGL_NONE;
|
||||
|
||||
*out_attrib_list = attrib_list;
|
||||
return EGL_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
static EGLint *
|
||||
_eglConvertAttribsToInt(const EGLAttrib *attr_list)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -199,6 +199,8 @@ struct _egl_api
|
|||
struct mesa_glinterop_export_out *out);
|
||||
};
|
||||
|
||||
EGLint _eglConvertIntsToAttribs(const EGLint *int_list,
|
||||
EGLAttrib **out_attrib_list);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue