From: Emil Velikov Date: Wed, 9 Nov 2016 21:45:07 +0000 (+0000) Subject: Revert "egl: remove explicit config_id management from dri2_add_config()" X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=aeaf21ab3e6cb3e628ff0219461cbd06f3a99d34;p=mesa.git Revert "egl: remove explicit config_id management from dri2_add_config()" This reverts commit 3652d1d5942a857f225700d67ce2c900396982f2. Self nack/reject on this one. The base.ConfigID is overwritten immediately after we store the current value, thus one memcpy [further down] the wrong value will be copied. --- diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 403f3d3b729..d9e2ad701b7 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -166,6 +166,7 @@ dri2_add_config(_EGLDisplay *disp, const __DRIconfig *dri_config, int id, unsigned int dri_masks[4] = { 0, 0, 0, 0 }; _EGLConfig *matching_config; EGLint num_configs = 0; + EGLint config_id; int i; _eglInitConfig(&base, disp, id); @@ -285,6 +286,7 @@ dri2_add_config(_EGLDisplay *disp, const __DRIconfig *dri_config, int id, return NULL; } + config_id = base.ConfigID; base.ConfigID = EGL_DONT_CARE; base.SurfaceType = EGL_DONT_CARE; num_configs = _eglFilterArray(disp->Configs, (void **) &matching_config, 1, @@ -313,6 +315,7 @@ dri2_add_config(_EGLDisplay *disp, const __DRIconfig *dri_config, int id, memcpy(&conf->base, &base, sizeof base); conf->base.SurfaceType = 0; + conf->base.ConfigID = config_id; _eglLinkConfig(&conf->base); }