fix evas gl_x11 in 16bpp (and similar depths).
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>
Thu, 18 Apr 2013 06:16:40 +0000 (15:16 +0900)
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>
Thu, 18 Apr 2013 06:17:10 +0000 (15:17 +0900)
ChangeLog
NEWS
src/modules/evas/engines/gl_x11/evas_x_main.c

index 3d26874..322a183 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-04-14  Carsten Haitzler (The Rasterman)
+
+        * Evas: Fix evas gl_x11 to use default depth when visual
+        matching so lower depth displays work
+
 2013-04-15  ChunEon Park
         * Evas: If an object goes to be hidden without replacing the cur/prev
         state info, the object context can be corrupted at the next show time.
diff --git a/NEWS b/NEWS
index 860ec51..ba08f8b 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -249,4 +249,4 @@ Fixes:
     * Evas: fix gif bug related with scale down decode.
     * Evas textblock: Fixed a bug with deletion of ranges that end just a visual format.
     * Evas: If an object goes to be hidden without replacing the cur/prev state info, the object context can be corrupted at the next show time. Now it replaces the cur/prev in that rare case.
-
+    * Evas: Fix evas gl_x11 in 16bpp and lower depths than 24/32 bpp.
index 5c75984..d0de1df 100644 (file)
@@ -669,7 +669,7 @@ eng_best_visual_get(Evas_Engine_Info_GL_X11 *einfo)
              config_attrs[i++] = GLX_RED_SIZE;
              config_attrs[i++] = 1;
              config_attrs[i++] = GLX_GREEN_SIZE;
-             config_attrs[i++] =1;
+             config_attrs[i++] = 1;
              config_attrs[i++] = GLX_BLUE_SIZE;
              config_attrs[i++] = 1;
              if (alpha)
@@ -715,11 +715,17 @@ eng_best_visual_get(Evas_Engine_Info_GL_X11 *einfo)
                   if (!alpha)
                     {
                        config = configs[i];
-                       _evas_gl_x11_vi = malloc(sizeof(XVisualInfo));
-                       memcpy(_evas_gl_x11_vi, visinfo, sizeof(XVisualInfo));
-                       fbconf = config;
-                       XFree(visinfo);
-                       break;
+                       // ensure depth matches default depth!
+                       if (DefaultDepth(einfo->info.display, 0) ==
+                           visinfo->depth)
+                         {
+                            _evas_gl_x11_vi = malloc(sizeof(XVisualInfo));
+                            memcpy(_evas_gl_x11_vi, visinfo,
+                                   sizeof(XVisualInfo));
+                            fbconf = config;
+                            XFree(visinfo);
+                            break;
+                         }
                     }
                   else
                     {