egl: Minor changes to the _EGLConfig interface.
authorChia-I Wu <olv@lunarg.com>
Fri, 22 Oct 2010 16:47:22 +0000 (00:47 +0800)
committerChia-I Wu <olv@lunarg.com>
Sat, 23 Oct 2010 03:20:40 +0000 (11:20 +0800)
Mainly to rename _eglAddConfig to _eglLinkConfig, along with a few clean
ups.

src/egl/drivers/dri2/egl_dri2.c
src/egl/drivers/glx/egl_glx.c
src/egl/main/eglconfig.c
src/egl/main/eglconfig.h
src/gallium/state_trackers/egl/common/egl_g3d.c

index eb8996f7a7551bfc1463024d5ba761554a5c5bf7..75aa29f55b970a136ed7cb8e7a1cadd021c55dd3 100644 (file)
@@ -272,7 +272,7 @@ dri2_add_config(_EGLDisplay *disp, const __DRIconfig *dri_config, int id,
    if (conf != NULL) {
       memcpy(&conf->base, &base, sizeof base);
       conf->dri_config = dri_config;
-      _eglAddConfig(disp, &conf->base);
+      _eglLinkConfig(&conf->base);
    }
 
    return conf;
index 9bebc61de9cbad33b1859c9a84ec3910dae0f98c..256de57ed873c6d39e7223426bb828823aa27ba2 100644 (file)
@@ -452,7 +452,7 @@ create_configs(_EGLDisplay *dpy, struct GLX_egl_display *GLX_dpy,
          memcpy(GLX_conf, &template, sizeof(template));
          GLX_conf->index = i;
 
-         _eglAddConfig(dpy, &GLX_conf->Base);
+         _eglLinkConfig(&GLX_conf->Base);
          id++;
       }
    }
index 4d313a9bb5b44e29cdd6f3e513dbad1e250b9468..fec94fb20cd52f70086e39f27fa65d99961aa260 100644 (file)
@@ -40,16 +40,18 @@ _eglInitConfig(_EGLConfig *conf, _EGLDisplay *dpy, EGLint id)
 
 
 /**
- * Link a config to a display and return the handle of the link.
+ * Link a config to its display and return the handle of the link.
  * The handle can be passed to client directly.
  *
  * Note that we just save the ptr to the config (we don't copy the config).
  */
-EGLConfig
-_eglAddConfig(_EGLDisplay *dpy, _EGLConfig *conf)
+PUBLIC EGLConfig
+_eglLinkConfig(_EGLConfig *conf)
 {
+   _EGLDisplay *dpy = conf->Display;
+
    /* sanity check */
-   assert(conf->ConfigID > 0);
+   assert(dpy && conf->ConfigID > 0);
 
    if (!dpy->Configs) {
       dpy->Configs = _eglCreateArray("Config", 16);
@@ -57,23 +59,29 @@ _eglAddConfig(_EGLDisplay *dpy, _EGLConfig *conf)
          return (EGLConfig) NULL;
    }
 
-   conf->Display = dpy;
    _eglAppendArray(dpy->Configs, (void *) conf);
 
    return (EGLConfig) conf;
 }
 
 
-EGLBoolean
-_eglCheckConfigHandle(EGLConfig config, _EGLDisplay *dpy)
+/**
+ * Lookup a handle to find the linked config.
+ * Return NULL if the handle has no corresponding linked config.
+ */
+_EGLConfig *
+_eglLookupConfig(EGLConfig config, _EGLDisplay *dpy)
 {
    _EGLConfig *conf;
 
+   if (!dpy)
+      return NULL;
+
    conf = (_EGLConfig *) _eglFindArray(dpy->Configs, (void *) config);
    if (conf)
       assert(conf->Display == dpy);
 
-   return (conf != NULL);
+   return conf;
 }
 
 
@@ -464,10 +472,13 @@ _eglIsConfigAttribValid(_EGLConfig *conf, EGLint attr)
  * Return EGL_FALSE if any of the attribute is invalid.
  */
 EGLBoolean
-_eglParseConfigAttribList(_EGLConfig *conf, const EGLint *attrib_list)
+_eglParseConfigAttribList(_EGLConfig *conf, _EGLDisplay *dpy,
+                          const EGLint *attrib_list)
 {
    EGLint attr, val, i;
 
+   _eglInitConfig(conf, dpy, EGL_DONT_CARE);
+
    /* reset to default values */
    for (i = 0; i < ARRAY_SIZE(_eglValidationTable); i++) {
       attr = _eglValidationTable[i].attr;
@@ -494,7 +505,7 @@ _eglParseConfigAttribList(_EGLConfig *conf, const EGLint *attrib_list)
       return EGL_FALSE;
 
    /* ignore other attributes when EGL_CONFIG_ID is given */
-   if (conf->ConfigID > 0) {
+   if (conf->ConfigID != EGL_DONT_CARE) {
       for (i = 0; i < ARRAY_SIZE(_eglValidationTable); i++) {
          attr = _eglValidationTable[i].attr;
          if (attr != EGL_CONFIG_ID)
@@ -683,8 +694,7 @@ _eglChooseConfig(_EGLDriver *drv, _EGLDisplay *disp, const EGLint *attrib_list,
    if (!num_configs)
       return _eglError(EGL_BAD_PARAMETER, "eglChooseConfigs");
 
-   _eglInitConfig(&criteria, disp, 0);
-   if (!_eglParseConfigAttribList(&criteria, attrib_list))
+   if (!_eglParseConfigAttribList(&criteria, disp, attrib_list))
       return _eglError(EGL_BAD_ATTRIBUTE, "eglChooseConfig");
 
    configList = (_EGLConfig **) _eglFilterArray(disp->Configs, &count,
index 892815fa6310b9caf055fb3d628266ba687cd32e..3457670bfa5622cd39c1a97cd0ac79ff665590e9 100644 (file)
@@ -136,34 +136,20 @@ _eglInitConfig(_EGLConfig *config, _EGLDisplay *dpy, EGLint id);
 
 
 PUBLIC EGLConfig
-_eglAddConfig(_EGLDisplay *dpy, _EGLConfig *conf);
+_eglLinkConfig(_EGLConfig *conf);
 
 
-extern EGLBoolean
-_eglCheckConfigHandle(EGLConfig config, _EGLDisplay *dpy);
-
-
-/**
- * Lookup a handle to find the linked config.
- * Return NULL if the handle has no corresponding linked config.
- */
-static INLINE _EGLConfig *
-_eglLookupConfig(EGLConfig config, _EGLDisplay *dpy)
-{
-   _EGLConfig *conf = (_EGLConfig *) config;
-   if (!dpy || !_eglCheckConfigHandle(config, dpy))
-      conf = NULL;
-   return conf;
-}
+extern _EGLConfig *
+_eglLookupConfig(EGLConfig config, _EGLDisplay *dpy);
 
 
 /**
- * Return the handle of a linked config, or NULL.
+ * Return the handle of a linked config.
  */
 static INLINE EGLConfig
 _eglGetConfigHandle(_EGLConfig *conf)
 {
-   return (EGLConfig) ((conf && conf->Display) ? conf : NULL);
+   return (EGLConfig) conf;
 }
 
 
@@ -176,7 +162,8 @@ _eglMatchConfig(const _EGLConfig *conf, const _EGLConfig *criteria);
 
 
 PUBLIC EGLBoolean
-_eglParseConfigAttribList(_EGLConfig *conf, const EGLint *attrib_list);
+_eglParseConfigAttribList(_EGLConfig *conf, _EGLDisplay *dpy,
+                          const EGLint *attrib_list);
 
 
 PUBLIC EGLint
index aaa2ff6bb2f81c563e4e92824a52f16b4031d5df..8999b86e9b9bc3e12debf429dd8b4fc8ec578200 100644 (file)
@@ -373,7 +373,7 @@ egl_g3d_add_configs(_EGLDriver *drv, _EGLDisplay *dpy, EGLint id)
                break;
             }
 
-            _eglAddConfig(dpy, &gconf->base);
+            _eglLinkConfig(&gconf->base);
             id++;
          }
       }