diff --git a/legacy/evas/src/modules/engines/gl_x11/evas_engine.c b/legacy/evas/src/modules/engines/gl_x11/evas_engine.c index 1a6c08304b..05cd5b06b4 100644 --- a/legacy/evas/src/modules/engines/gl_x11/evas_engine.c +++ b/legacy/evas/src/modules/engines/gl_x11/evas_engine.c @@ -39,6 +39,10 @@ static int gl_wins = 0; #endif typedef void (*_eng_fn) (void); +typedef _eng_fn (*glsym_func_eng_fn) (); +typedef void (*glsym_func_void) (); +typedef void *(*glsym_func_void_ptr) (); + _eng_fn (*glsym_eglGetProcAddress) (const char *a) = NULL; void (*glsym_eglBindTexImage) (EGLDisplay a, EGLSurface b, int c) = NULL; void (*glsym_eglReleaseTexImage) (EGLDisplay a, EGLSurface b, int c) = NULL; @@ -48,6 +52,11 @@ void (*glsym_glEGLImageTargetTexture2DOES) (int a, void *b) = NULL; #else typedef void (*_eng_fn) (void); +typedef _eng_fn (*glsym_func_eng_fn) (); +typedef void (*glsym_func_void) (); +typedef int (*glsym_func_int) (); +typedef XID (*glsym_func_xid) (); + _eng_fn (*glsym_glXGetProcAddress) (const char *a) = NULL; void (*glsym_glXBindTexImage) (Display *a, GLXDrawable b, int c, int *d) = NULL; void (*glsym_glXReleaseTexImage) (Display *a, GLXDrawable b, int c) = NULL; @@ -66,68 +75,68 @@ _sym_init(void) if (done) return; #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) -#define FINDSYM(dst, sym) \ - if ((!dst) && (glsym_eglGetProcAddress)) dst = glsym_eglGetProcAddress(sym); \ - if (!dst) dst = dlsym(RTLD_DEFAULT, sym) +#define FINDSYM(dst, sym, typ) \ + if ((!dst) && (glsym_eglGetProcAddress)) dst = (typ)glsym_eglGetProcAddress(sym); \ + if (!dst) dst = (typ)dlsym(RTLD_DEFAULT, sym) - FINDSYM(glsym_eglGetProcAddress, "eglGetProcAddress"); - FINDSYM(glsym_eglGetProcAddress, "eglGetProcAddressEXT"); - FINDSYM(glsym_eglGetProcAddress, "eglGetProcAddressARB"); - FINDSYM(glsym_eglGetProcAddress, "eglGetProcAddressKHR"); + FINDSYM(glsym_eglGetProcAddress, "eglGetProcAddress", glsym_func_eng_fn); + FINDSYM(glsym_eglGetProcAddress, "eglGetProcAddressEXT", glsym_func_eng_fn); + FINDSYM(glsym_eglGetProcAddress, "eglGetProcAddressARB", glsym_func_eng_fn); + FINDSYM(glsym_eglGetProcAddress, "eglGetProcAddressKHR", glsym_func_eng_fn); - FINDSYM(glsym_eglBindTexImage, "eglBindTexImage"); - FINDSYM(glsym_eglBindTexImage, "eglBindTexImageEXT"); - FINDSYM(glsym_eglBindTexImage, "eglBindTexImageARB"); - FINDSYM(glsym_eglBindTexImage, "eglBindTexImageKHR"); + FINDSYM(glsym_eglBindTexImage, "eglBindTexImage", glsym_func_void); + FINDSYM(glsym_eglBindTexImage, "eglBindTexImageEXT", glsym_func_void); + FINDSYM(glsym_eglBindTexImage, "eglBindTexImageARB", glsym_func_void); + FINDSYM(glsym_eglBindTexImage, "eglBindTexImageKHR", glsym_func_void); - FINDSYM(glsym_eglReleaseTexImage, "eglReleaseTexImage"); - FINDSYM(glsym_eglReleaseTexImage, "eglReleaseTexImageEXT"); - FINDSYM(glsym_eglReleaseTexImage, "eglReleaseTexImageARB"); - FINDSYM(glsym_eglReleaseTexImage, "eglReleaseTexImageKHR"); + FINDSYM(glsym_eglReleaseTexImage, "eglReleaseTexImage", glsym_func_void); + FINDSYM(glsym_eglReleaseTexImage, "eglReleaseTexImageEXT", glsym_func_void); + FINDSYM(glsym_eglReleaseTexImage, "eglReleaseTexImageARB", glsym_func_void); + FINDSYM(glsym_eglReleaseTexImage, "eglReleaseTexImageKHR", glsym_func_void); - FINDSYM(glsym_eglCreateImage, "eglCreateImage"); - FINDSYM(glsym_eglCreateImage, "eglCreateImageEXT"); - FINDSYM(glsym_eglCreateImage, "eglCreateImageARB"); - FINDSYM(glsym_eglCreateImage, "eglCreateImageKHR"); + FINDSYM(glsym_eglCreateImage, "eglCreateImage", glsym_func_void_ptr); + FINDSYM(glsym_eglCreateImage, "eglCreateImageEXT", glsym_func_void_ptr); + FINDSYM(glsym_eglCreateImage, "eglCreateImageARB", glsym_func_void_ptr); + FINDSYM(glsym_eglCreateImage, "eglCreateImageKHR", glsym_func_void_ptr); - FINDSYM(glsym_eglDestroyImage, "eglDestroyImage"); - FINDSYM(glsym_eglDestroyImage, "eglDestroyImageEXT"); - FINDSYM(glsym_eglDestroyImage, "eglDestroyImageARB"); - FINDSYM(glsym_eglDestroyImage, "eglDestroyImageKHR"); + FINDSYM(glsym_eglDestroyImage, "eglDestroyImage", glsym_func_void); + FINDSYM(glsym_eglDestroyImage, "eglDestroyImageEXT", glsym_func_void); + FINDSYM(glsym_eglDestroyImage, "eglDestroyImageARB", glsym_func_void); + FINDSYM(glsym_eglDestroyImage, "eglDestroyImageKHR", glsym_func_void); FINDSYM(glsym_glEGLImageTargetTexture2DOES, "glEGLImageTargetTexture2DOES"); #else -#define FINDSYM(dst, sym) \ - if ((!dst) && (glsym_glXGetProcAddress)) dst = glsym_glXGetProcAddress(sym); \ - if (!dst) dst = dlsym(RTLD_DEFAULT, sym) +#define FINDSYM(dst, sym, typ) \ + if ((!dst) && (glsym_glXGetProcAddress)) dst = (typ)glsym_glXGetProcAddress(sym); \ + if (!dst) dst = (typ)dlsym(RTLD_DEFAULT, sym) - FINDSYM(glsym_glXGetProcAddress, "glXGetProcAddress"); - FINDSYM(glsym_glXGetProcAddress, "glXGetProcAddressEXT"); - FINDSYM(glsym_glXGetProcAddress, "glXGetProcAddressARB"); + FINDSYM(glsym_glXGetProcAddress, "glXGetProcAddress", glsym_func_eng_fn); + FINDSYM(glsym_glXGetProcAddress, "glXGetProcAddressEXT", glsym_func_eng_fn); + FINDSYM(glsym_glXGetProcAddress, "glXGetProcAddressARB", glsym_func_eng_fn); - FINDSYM(glsym_glXBindTexImage, "glXBindTexImage"); - FINDSYM(glsym_glXBindTexImage, "glXBindTexImageEXT"); - FINDSYM(glsym_glXBindTexImage, "glXBindTexImageARB"); + FINDSYM(glsym_glXBindTexImage, "glXBindTexImage", glsym_func_void); + FINDSYM(glsym_glXBindTexImage, "glXBindTexImageEXT", glsym_func_void); + FINDSYM(glsym_glXBindTexImage, "glXBindTexImageARB", glsym_func_void); - FINDSYM(glsym_glXReleaseTexImage, "glXReleaseTexImage"); - FINDSYM(glsym_glXReleaseTexImage, "glXReleaseTexImageEXT"); - FINDSYM(glsym_glXReleaseTexImage, "glXReleaseTexImageARB"); + FINDSYM(glsym_glXReleaseTexImage, "glXReleaseTexImage", glsym_func_void); + FINDSYM(glsym_glXReleaseTexImage, "glXReleaseTexImageEXT", glsym_func_void); + FINDSYM(glsym_glXReleaseTexImage, "glXReleaseTexImageARB", glsym_func_void); - FINDSYM(glsym_glXGetVideoSync, "glXGetVideoSyncSGI"); + FINDSYM(glsym_glXGetVideoSync, "glXGetVideoSyncSGI", glsym_func_int); - FINDSYM(glsym_glXWaitVideoSync, "glXWaitVideoSyncSGI"); + FINDSYM(glsym_glXWaitVideoSync, "glXWaitVideoSyncSGI", glsym_func_int); - FINDSYM(glsym_glXCreatePixmap, "glXCreatePixmap"); - FINDSYM(glsym_glXCreatePixmap, "glXCreatePixmapEXT"); - FINDSYM(glsym_glXCreatePixmap, "glXCreatePixmapARB"); + FINDSYM(glsym_glXCreatePixmap, "glXCreatePixmap", glsym_func_xid); + FINDSYM(glsym_glXCreatePixmap, "glXCreatePixmapEXT", glsym_func_xid); + FINDSYM(glsym_glXCreatePixmap, "glXCreatePixmapARB", glsym_func_xid); - FINDSYM(glsym_glXDestroyPixmap, "glXDestroyPixmap"); - FINDSYM(glsym_glXDestroyPixmap, "glXDestroyPixmapEXT"); - FINDSYM(glsym_glXDestroyPixmap, "glXDestroyPixmapARB"); + FINDSYM(glsym_glXDestroyPixmap, "glXDestroyPixmap", glsym_func_void); + FINDSYM(glsym_glXDestroyPixmap, "glXDestroyPixmapEXT", glsym_func_void); + FINDSYM(glsym_glXDestroyPixmap, "glXDestroyPixmapARB", glsym_func_void); - FINDSYM(glsym_glXQueryDrawable, "glXQueryDrawable"); - FINDSYM(glsym_glXQueryDrawable, "glXQueryDrawableEXT"); - FINDSYM(glsym_glXQueryDrawable, "glXQueryDrawableARB"); + FINDSYM(glsym_glXQueryDrawable, "glXQueryDrawable", glsym_func_void); + FINDSYM(glsym_glXQueryDrawable, "glXQueryDrawableEXT", glsym_func_void); + FINDSYM(glsym_glXQueryDrawable, "glXQueryDrawableARB", glsym_func_void); #endif } @@ -1712,7 +1721,11 @@ eng_image_stride_get(void *data __UNUSED__, void *image, int *stride) { Evas_GL_Image *im = image; *stride = im->w; - if ((im->tex) && (im->tex->pt->dyn.img)) *stride = im->tex->pt->dyn.w; + if ((im->tex) && (im->tex->pt->dyn.img)) + { + *stride = im->tex->pt->dyn.w * 4; + // FIXME: for other image formats (yuv etc.) different stride needed + } } static void