evas_gl_generic: fix wrong gl context set
authorJiyoun Park <jy0703.park@samsung.com>
Thu, 14 Mar 2019 08:53:50 +0000 (08:53 +0000)
committerYeongjong Lee <yj34.lee@samsung.com>
Tue, 2 Apr 2019 03:45:17 +0000 (12:45 +0900)
example:
...
im=evas_object_image_add()
evas_gl_surface_create
...
evas_object_image_native_surface_set(im, xx)-> MAIN CONTEXT
evas_gl_make_current -> CONTEXT A
.....
evas_object_image_size_set(im, x,x) ->WRONG CONTEXT A

evas_object_image_size_set of image have native_surface finally calls
eng_image_size_set function of gl_generic.

eng_image_size_set cannot get the proper context related with
evas_gl_common_image_native_enable.
It ruined gl context and texture of main context has gone wrong.

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D8338

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

index d6d1580..abfd0f7 100755 (executable)
@@ -644,6 +644,7 @@ eng_image_size_set(void *engine, void *image, int w, int h)
    Evas_GL_Image *im_old;
 
    if (!im) return NULL;
+   gl_context = gl_generic_context_find(engine, 1);
    if (im->native.data)
      {
         im->w = w;
@@ -651,7 +652,6 @@ eng_image_size_set(void *engine, void *image, int w, int h)
         evas_gl_common_image_native_enable(im);
         return image;
      }
-   gl_context = gl_generic_context_find(engine, 1);
    if ((im->tex) && (im->tex->pt->dyn.img))
      {
         evas_gl_common_texture_free(im->tex, EINA_TRUE);