Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f9606df4 authored by Mathias Agopian's avatar Mathias Agopian
Browse files

revert last change to EGLUtils::selectConfigForPixelFormat

EGLUtils::selectConfigForPixelFormat is only used by
command line tests and it simply selects a config
based on the EGL_NATIVE_VISUAL_ID.
parent 29c70bca
Loading
Loading
Loading
Loading
+19 −39
Original line number Diff line number Diff line
@@ -24,8 +24,6 @@

#include <EGL/egl.h>

#include <system/graphics.h>

#include <private/ui/android_natives_priv.h>

// ----------------------------------------------------------------------------
@@ -69,50 +67,32 @@ status_t EGLUtils::selectConfigForPixelFormat(
        return BAD_VALUE;
    
    // Get all the "potential match" configs...
    if (eglChooseConfig(dpy, attrs, 0, 0, &numConfigs) == EGL_FALSE)
    if (eglGetConfigs(dpy, NULL, 0, &numConfigs) == EGL_FALSE)
        return BAD_VALUE;

    if (numConfigs) {
        EGLConfig* const configs = new EGLConfig[numConfigs];
    EGLConfig* const configs = (EGLConfig*)malloc(sizeof(EGLConfig)*numConfigs);
    if (eglChooseConfig(dpy, attrs, configs, numConfigs, &n) == EGL_FALSE) {
            delete [] configs;
        free(configs);
        return BAD_VALUE;
    }
    
        bool hasAlpha = false;
        switch (format) {
            case HAL_PIXEL_FORMAT_RGBA_8888:
            case HAL_PIXEL_FORMAT_BGRA_8888:
            case HAL_PIXEL_FORMAT_RGBA_5551:
            case HAL_PIXEL_FORMAT_RGBA_4444:
                hasAlpha = true;
                break;
        }

        // The first config is guaranteed to over-satisfy the constraints
        EGLConfig config = configs[0];

        // go through the list and skip configs that over-satisfy our needs
    int i;
    EGLConfig config = NULL;
    for (i=0 ; i<n ; i++) {
            if (!hasAlpha) {
                EGLint alphaSize;
                eglGetConfigAttrib(dpy, configs[i], EGL_ALPHA_SIZE, &alphaSize);
                if (alphaSize > 0) {
                    continue;
                }
            }
        EGLint nativeVisualId = 0;
        eglGetConfigAttrib(dpy, configs[i], EGL_NATIVE_VISUAL_ID, &nativeVisualId);
        if (nativeVisualId>0 && format == nativeVisualId) {
            config = configs[i];
            break;
        }
    }

        delete [] configs;
    free(configs);
    
    if (i<n) {
        *outConfig = config;
        return NO_ERROR;
    }
    }

    return NAME_NOT_FOUND;
}