Revert "egl: remove explicit config_id management from dri2_add_config()"
authorEmil Velikov <emil.l.velikov@gmail.com>
Wed, 9 Nov 2016 21:45:07 +0000 (21:45 +0000)
committerEmil Velikov <emil.l.velikov@gmail.com>
Wed, 9 Nov 2016 21:48:50 +0000 (21:48 +0000)
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.

src/egl/drivers/dri2/egl_dri2.c

index 403f3d3b72954e02b4e150a0381a8964c63c9c6b..d9e2ad701b79586208acb8d9b875086d1a9ead01 100644 (file)
@@ -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);
    }