From 485b6e02e836f0bd8d3983032f525072ecf185bb Mon Sep 17 00:00:00 2001 From: "r.kuznetsov" Date: Tue, 22 Dec 2015 18:32:38 +0300 Subject: [PATCH] Fixed EGL context creation which led to artifacts on Meizu MX4 --- .../com/mapswithme/opengl/android_gl_utils.cpp | 15 +++++++++++++-- .../com/mapswithme/opengl/android_gl_utils.hpp | 1 + 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/android/jni/com/mapswithme/opengl/android_gl_utils.cpp b/android/jni/com/mapswithme/opengl/android_gl_utils.cpp index 300187db05..ec51926c0b 100644 --- a/android/jni/com/mapswithme/opengl/android_gl_utils.cpp +++ b/android/jni/com/mapswithme/opengl/android_gl_utils.cpp @@ -13,7 +13,11 @@ ConfigComparator::ConfigComparator(EGLDisplay display) int ConfigComparator::operator()(EGLConfig const & l, EGLConfig const & r) const { - return configWeight(l) - configWeight(r); + int const weight = configWeight(l) - configWeight(r); + if (weight == 0) + return configAlphaSize(l) - configAlphaSize(r); + + return weight; } int ConfigComparator::configWeight(EGLConfig const & config) const @@ -34,6 +38,13 @@ int ConfigComparator::configWeight(EGLConfig const & config) const } } +int ConfigComparator::configAlphaSize(EGLConfig const & config) const +{ + int val = 0; + eglGetConfigAttrib(m_display, config, EGL_ALPHA_SIZE, &val); + return val; +} + namespace { @@ -71,4 +82,4 @@ void CheckEGL(my::SrcPoint const & src) } } -} // namespace android \ No newline at end of file +} // namespace android diff --git a/android/jni/com/mapswithme/opengl/android_gl_utils.hpp b/android/jni/com/mapswithme/opengl/android_gl_utils.hpp index b48f689585..22ee8909f0 100644 --- a/android/jni/com/mapswithme/opengl/android_gl_utils.hpp +++ b/android/jni/com/mapswithme/opengl/android_gl_utils.hpp @@ -15,6 +15,7 @@ public: int operator()(EGLConfig const & l, EGLConfig const & r) const; int configWeight(EGLConfig const & config) const; + int configAlphaSize(EGLConfig const & config) const; private: EGLDisplay m_display;