Evas masking: Fix rare issue of invalid rendering (GL)
authorJean-Philippe Andre <jp.andre@samsung.com>
Wed, 3 Jun 2015 02:02:44 +0000 (11:02 +0900)
committerJean-Philippe Andre <jp.andre@samsung.com>
Wed, 3 Jun 2015 02:03:29 +0000 (11:03 +0900)
Thanks Dongyeon for finding out this solution. Now that was
one nasty bug :)

Somehow the currently bound texture id would not match what
Evas expected, so Evas would not call glBindTexture when
required. As a result it was drawing black (sampling from tex 0).

@fix

src/modules/evas/engines/gl_generic/evas_engine.c

index 34d3f45..63fe2d8 100644 (file)
@@ -1190,6 +1190,13 @@ eng_image_scaled_update(void *data EINA_UNUSED, void *scaled, void *image,
        (dst->w == dst_w) && (dst->h == dst_h))
      return dst;
 
+   evas_gl_common_image_update(gc, src);
+   if (!src->tex)
+     {
+        ERR("No source texture.");
+        return NULL;
+     }
+
    if (dst)
      {
         if (dst->scaled.origin == src)
@@ -1206,12 +1213,6 @@ eng_image_scaled_update(void *data EINA_UNUSED, void *scaled, void *image,
           }
         evas_gl_common_image_free(dst);
      }
-   evas_gl_common_image_update(gc, src);
-   if (!src->tex)
-     {
-        ERR("No source texture.");
-        return NULL;
-     }
 
    dst = calloc(1, sizeof(Evas_GL_Image));
    if (!dst) return NULL;