diff --git a/src/modules/evas/engines/gl_x11/evas_engine.c b/src/modules/evas/engines/gl_x11/evas_engine.c index 8939ded4ca..f6e5a5c34d 100644 --- a/src/modules/evas/engines/gl_x11/evas_engine.c +++ b/src/modules/evas/engines/gl_x11/evas_engine.c @@ -82,7 +82,7 @@ void (*glsym_eglDestroyImage) (EGLDisplay a, void *b) = NULL; void (*glsym_glEGLImageTargetTexture2DOES) (int a, void *b) = NULL; void *(*glsym_eglMapImageSEC) (void *a, void *b, int c, int d) = NULL; unsigned int (*glsym_eglUnmapImageSEC) (void *a, void *b, int c) = NULL; -void (*glsym_eglSwapBuffersRegion) (EGLDisplay a, void *b, EGLint c, const EGLint *d) = NULL; +void (*glsym_eglSwapBuffersWithDamage) (EGLDisplay a, void *b, const EGLint *d, EGLint c) = NULL; #else @@ -629,8 +629,9 @@ gl_symbols(void) FINDSYM(glsym_eglMapImageSEC, "eglMapImageSEC", glsym_func_void_ptr); FINDSYM(glsym_eglUnmapImageSEC, "eglUnmapImageSEC", glsym_func_uint); - FINDSYM(glsym_eglSwapBuffersRegion, "eglSwapBuffersRegionSEC", glsym_func_void_ptr); - FINDSYM(glsym_eglSwapBuffersRegion, "eglSwapBuffersRegion", glsym_func_void_ptr); + FINDSYM(glsym_eglSwapBuffersWithDamage, "eglSwapBuffersWithDamageEXT", glsym_func_void_ptr); + FINDSYM(glsym_eglSwapBuffersWithDamage, "eglSwapBuffersWithDamageINTEL", glsym_func_void_ptr); + FINDSYM(glsym_eglSwapBuffersWithDamage, "eglSwapBuffersWithDamage", glsym_func_void_ptr); #else @@ -695,6 +696,10 @@ gl_extn_veto(Render_Engine *re) { extn_have_buffer_age = 0; } + if (!strstr(str, "swap_buffers_with_damage")) + { + glsym_eglSwapBuffersWithDamage = NULL; + } } else { @@ -1443,7 +1448,7 @@ eng_output_flush(void *data, Evas_Render_Mode render_mode) { re->info->callback.pre_swap(re->info->callback.data, re->evas); } - if ((glsym_eglSwapBuffersRegion) && (re->mode != MODE_FULL)) + if ((glsym_eglSwapBuffersWithDamage) && (re->mode != MODE_FULL)) { EGLint num = 0, *rects = NULL, i = 0; Tilebuf_Rect *r; @@ -1494,9 +1499,9 @@ eng_output_flush(void *data, Evas_Render_Mode render_mode) } i += 4; } - glsym_eglSwapBuffersRegion(re->win->egl_disp, - re->win->egl_surface[0], - num, rects); + glsym_eglSwapBuffersWithDamage(re->win->egl_disp, + re->win->egl_surface[0], + rects, num); } } else