Mesa (master): egl: Refactor _eglInitImage.

Chia-I Wu olv at kemper.freedesktop.org
Sun Jan 31 06:43:32 UTC 2010


Module: Mesa
Branch: master
Commit: e694ccad803157b71b2de78d63ee6dacc489faab
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e694ccad803157b71b2de78d63ee6dacc489faab

Author: Chia-I Wu <olvaffe at gmail.com>
Date:   Sun Jan 31 13:04:12 2010 +0800

egl: Refactor _eglInitImage.

Refactor attribute list parsing code to _eglParseImageAttribList.

---

 src/egl/main/eglimage.c |   50 +++++++++++++++++++++++++++++++++++++---------
 1 files changed, 40 insertions(+), 10 deletions(-)

diff --git a/src/egl/main/eglimage.c b/src/egl/main/eglimage.c
index 5044112..5b27df0 100644
--- a/src/egl/main/eglimage.c
+++ b/src/egl/main/eglimage.c
@@ -1,31 +1,61 @@
 #include <assert.h>
+#include <string.h>
 
 #include "eglimage.h"
-#include "egldisplay.h"
+#include "eglcurrent.h"
+#include "egllog.h"
 
 
 #ifdef EGL_KHR_image_base
 
 
-EGLBoolean
-_eglInitImage(_EGLDriver *drv, _EGLImage *img, const EGLint *attrib_list)
+/**
+ * Parse the list of image attributes and return the proper error code.
+ */
+static EGLint
+_eglParseImageAttribList(_EGLImage *img, const EGLint *attrib_list)
 {
-   EGLint i;
+   EGLint i, err = EGL_SUCCESS;
 
-   img->Preserved = EGL_FALSE;
+   if (!attrib_list)
+      return EGL_SUCCESS;
 
-   for (i = 0; attrib_list && attrib_list[i] != EGL_NONE; i++) {
-      switch (attrib_list[i]) {
+   for (i = 0; attrib_list[i] != EGL_NONE; i++) {
+      EGLint attr = attrib_list[i++];
+      EGLint val = attrib_list[i];
+
+      switch (attr) {
       case EGL_IMAGE_PRESERVED_KHR:
-         i++;
-         img->Preserved = attrib_list[i];
+         img->Preserved = val;
          break;
       default:
-         /* not an error */
+         err = EGL_BAD_ATTRIBUTE;
+         break;
+      }
+
+      if (err != EGL_SUCCESS) {
+         _eglLog(_EGL_DEBUG, "bad image attribute 0x%04x", attr);
          break;
       }
    }
 
+   return err;
+}
+
+
+EGLBoolean
+_eglInitImage(_EGLDriver *drv, _EGLImage *img, const EGLint *attrib_list)
+{
+   EGLint err;
+
+   memset(img, 0, sizeof(_EGLImage));
+
+   img->Preserved = EGL_FALSE;
+
+   err = _eglParseImageAttribList(img, attrib_list);
+   if (err != EGL_SUCCESS)
+      return _eglError(err, "eglCreateImageKHR");
+
    return EGL_TRUE;
 }
 




More information about the mesa-commit mailing list