From: Cedric BAIL Date: Fri, 25 Aug 2017 17:48:20 +0000 (-0700) Subject: evas: make the info size a parameter of the function to make it safer to roll in. X-Git-Tag: submit/sandbox/upgrade/efl120/20180319.053334~2998 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=29cde0ee81fa697583cf4afc37712a5b99d3d5a7;p=platform%2Fupstream%2Fefl.git evas: make the info size a parameter of the function to make it safer to roll in. --- diff --git a/src/lib/evas/file/evas_module.c b/src/lib/evas/file/evas_module.c index 003c84c..5930e21 100644 --- a/src/lib/evas/file/evas_module.c +++ b/src/lib/evas/file/evas_module.c @@ -765,7 +765,7 @@ evas_module_shutdown(void) } EAPI int -_evas_module_engine_inherit(Evas_Func *funcs, char *name) +_evas_module_engine_inherit(Evas_Func *funcs, char *name, size_t info) { Evas_Module *em; @@ -778,6 +778,7 @@ _evas_module_engine_inherit(Evas_Func *funcs, char *name) evas_module_ref(em); evas_module_use(em); *funcs = *((Evas_Func *)(em->functions)); + funcs->info_size = info; return 1; } } diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h index 7f8eb35..1765464 100644 --- a/src/lib/evas/include/evas_private.h +++ b/src/lib/evas/include/evas_private.h @@ -2036,7 +2036,7 @@ EAPI void evas_module_task_register(Eina_Bool (*cancelled)(void *data), void *da EAPI void evas_module_task_unregister(void); // expose for use in engines -EAPI int _evas_module_engine_inherit(Evas_Func *funcs, char *name); +EAPI int _evas_module_engine_inherit(Evas_Func *funcs, char *name, size_t info); EAPI const char *_evas_module_libdir_get(void); const char *_evas_module_datadir_get(void); EAPI Eina_List *_evas_canvas_image_data_unset(Evas *eo_e); diff --git a/src/modules/evas/engines/buffer/evas_engine.c b/src/modules/evas/engines/buffer/evas_engine.c index 821e47d..7e21915 100644 --- a/src/modules/evas/engines/buffer/evas_engine.c +++ b/src/modules/evas/engines/buffer/evas_engine.c @@ -163,7 +163,7 @@ module_open(Evas_Module *em) { if (!em) return 0; /* get whatever engine module we inherit from */ - if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0; + if (!_evas_module_engine_inherit(&pfunc, "software_generic", sizeof (Evas_Engine_Info_Buffer))) return 0; _evas_engine_buffer_log_dom = eina_log_domain_register ("evas-buffer", EINA_COLOR_BLUE); @@ -182,8 +182,6 @@ module_open(Evas_Module *em) ORD(canvas_alpha_get); ORD(output_free); - func.info_size = sizeof (Evas_Engine_Info_Buffer); - /* now advertise out own api */ em->functions = (void *)(&func); return 1; diff --git a/src/modules/evas/engines/drm/evas_engine.c b/src/modules/evas/engines/drm/evas_engine.c index 927a17e..53fc902 100644 --- a/src/modules/evas/engines/drm/evas_engine.c +++ b/src/modules/evas/engines/drm/evas_engine.c @@ -214,10 +214,10 @@ module_open(Evas_Module *em) if (!em) return 0; /* try to inherit functions from software_generic engine */ - if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0; + if (!_evas_module_engine_inherit(&pfunc, "software_generic", sizeof (Evas_Engine_Info_Drm))) return 0; /* try to create eina logging domain */ - _evas_engine_drm_log_dom = + _evas_engine_drm_log_dom = eina_log_domain_register("evas-drm", EVAS_DEFAULT_LOG_COLOR); /* if we could not create a logging domain, error out */ @@ -240,15 +240,13 @@ module_open(Evas_Module *em) EVAS_API_OVERRIDE(image_plane_assign, &func, eng_); EVAS_API_OVERRIDE(image_plane_release, &func, eng_); - func.info_size = sizeof (Evas_Engine_Info_Drm); - /* advertise our engine functions */ em->functions = (void *)(&func); return 1; } -static void +static void module_close(Evas_Module *em EINA_UNUSED) { /* unregister the eina log domain for this engine */ diff --git a/src/modules/evas/engines/eglfs/evas_engine.c b/src/modules/evas/engines/eglfs/evas_engine.c index 0aa53db..e86155b 100644 --- a/src/modules/evas/engines/eglfs/evas_engine.c +++ b/src/modules/evas/engines/eglfs/evas_engine.c @@ -1091,7 +1091,7 @@ module_open(Evas_Module *em) if (!em) return 0; /* get whatever engine module we inherit from */ - if (!_evas_module_engine_inherit(&pfunc, "gl_generic")) return 0; + if (!_evas_module_engine_inherit(&pfunc, "gl_generic", sizeof (Evas_Engine_Info_Eglfs))) return 0; /* try to create eina logging domain */ if (_evas_engine_eglfs_log_dom < 0) @@ -1119,8 +1119,6 @@ module_open(Evas_Module *em) EVAS_API_OVERRIDE(output_dump, &func, eng_); EVAS_API_OVERRIDE(image_native_set, &func, eng_); - func.info_size = sizeof (Evas_Engine_Info_Eglfs); - setenv("EGL_PLATFORM", "fbdev", 1); gl_symbols(); diff --git a/src/modules/evas/engines/fb/evas_engine.c b/src/modules/evas/engines/fb/evas_engine.c index 630118a..227e511 100644 --- a/src/modules/evas/engines/fb/evas_engine.c +++ b/src/modules/evas/engines/fb/evas_engine.c @@ -111,7 +111,7 @@ module_open(Evas_Module *em) { if (!em) return 0; /* get whatever engine module we inherit from */ - if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0; + if (!_evas_module_engine_inherit(&pfunc, "software_generic", sizeof (Evas_Engine_Info_FB))) return 0; _evas_engine_fb_log_dom = eina_log_domain_register ("evas-fb", EVAS_DEFAULT_LOG_COLOR); if (_evas_engine_fb_log_dom < 0) @@ -129,8 +129,6 @@ module_open(Evas_Module *em) ORD(canvas_alpha_get); ORD(output_free); - func.info_size = sizeof (Evas_Engine_Info_FB); - /* now advertise out own api */ em->functions = (void *)(&func); return 1; diff --git a/src/modules/evas/engines/gl_cocoa/evas_engine.c b/src/modules/evas/engines/gl_cocoa/evas_engine.c index 500b118..92fcb31 100644 --- a/src/modules/evas/engines/gl_cocoa/evas_engine.c +++ b/src/modules/evas/engines/gl_cocoa/evas_engine.c @@ -265,7 +265,7 @@ module_open(Evas_Module *em) if (!em) return 0; /* get whatever engine module we inherit from */ - if (!_evas_module_engine_inherit(&pfunc, "gl_generic")) return 0; + if (!_evas_module_engine_inherit(&pfunc, "gl_generic", sizeof (Evas_Engine_Info_GL_Cocoa))) return 0; if (_evas_engine_gl_cocoa_log_dom < 0) { @@ -288,8 +288,6 @@ module_open(Evas_Module *em) ORD(canvas_alpha_get); ORD(output_free); - func.info_size = sizeof (Evas_Engine_Info_GL_Cocoa); - _gl_symbols(); /* now advertise out own api */ diff --git a/src/modules/evas/engines/gl_drm/evas_engine.c b/src/modules/evas/engines/gl_drm/evas_engine.c index 0951316..61e5bb8 100644 --- a/src/modules/evas/engines/gl_drm/evas_engine.c +++ b/src/modules/evas/engines/gl_drm/evas_engine.c @@ -1451,7 +1451,7 @@ module_open(Evas_Module *em) if (!em) return 0; /* get whatever engine module we inherit from */ - if (!_evas_module_engine_inherit(&pfunc, "gl_generic")) return 0; + if (!_evas_module_engine_inherit(&pfunc, "gl_generic", sizeof (Evas_Engine_Info_GL_Drm))) return 0; /* try to create eina logging domain */ if (_evas_engine_gl_drm_log_dom < 0) @@ -1485,8 +1485,6 @@ module_open(Evas_Module *em) EVAS_API_OVERRIDE(image_plane_assign, &func, eng_); EVAS_API_OVERRIDE(image_plane_release, &func, eng_); - func.info_size = sizeof (Evas_Engine_Info_GL_Drm); - /* Mesa's EGL driver loads wayland egl by default. (called by eglGetProcaddr() ) * implicit env set (EGL_PLATFORM=drm) prevent that. */ setenv("EGL_PLATFORM", "drm", 1); diff --git a/src/modules/evas/engines/gl_generic/evas_engine.c b/src/modules/evas/engines/gl_generic/evas_engine.c index 0f64092..66c6322 100644 --- a/src/modules/evas/engines/gl_generic/evas_engine.c +++ b/src/modules/evas/engines/gl_generic/evas_engine.c @@ -3107,7 +3107,7 @@ module_open(Evas_Module *em) if (!em) return 0; if (!evas_gl_common_module_open()) return 0; /* get whatever engine module we inherit from */ - if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0; + if (!_evas_module_engine_inherit(&pfunc, "software_generic", 0)) return 0; if (_evas_engine_GL_log_dom < 0) _evas_engine_GL_log_dom = eina_log_domain_register("evas-gl_generic", EVAS_DEFAULT_LOG_COLOR); if (_evas_engine_GL_log_dom < 0) diff --git a/src/modules/evas/engines/gl_sdl/evas_engine.c b/src/modules/evas/engines/gl_sdl/evas_engine.c index 940e74b..bec1189 100644 --- a/src/modules/evas/engines/gl_sdl/evas_engine.c +++ b/src/modules/evas/engines/gl_sdl/evas_engine.c @@ -367,7 +367,7 @@ module_open(Evas_Module *em) { if (!em) return 0; /* get whatever engine module we inherit from */ - if (!_evas_module_engine_inherit(&pfunc, "gl_generic")) return 0; + if (!_evas_module_engine_inherit(&pfunc, "gl_generic", sizeof (Evas_Engine_Info_GL_SDL))) return 0; if (_evas_engine_GL_SDL_log_dom < 0) _evas_engine_GL_SDL_log_dom = eina_log_domain_register ("evas-gl_sdl", EVAS_DEFAULT_LOG_COLOR); @@ -385,8 +385,6 @@ module_open(Evas_Module *em) ORD(output_free); ORD(output_dump); - func.info_size = sizeof (Evas_Engine_Info_GL_SDL); - gl_symbols(); /* now advertise out own api */ diff --git a/src/modules/evas/engines/gl_x11/evas_engine.c b/src/modules/evas/engines/gl_x11/evas_engine.c index d74ecce..b64733b 100644 --- a/src/modules/evas/engines/gl_x11/evas_engine.c +++ b/src/modules/evas/engines/gl_x11/evas_engine.c @@ -3010,7 +3010,7 @@ module_open(Evas_Module *em) } if (!em) return 0; /* get whatever engine module we inherit from */ - if (!_evas_module_engine_inherit(&pfunc, "gl_generic")) return 0; + if (!_evas_module_engine_inherit(&pfunc, "gl_generic", sizeof (Evas_Engine_Info_GL_X11))) return 0; if (_evas_engine_GL_X11_log_dom < 0) _evas_engine_GL_X11_log_dom = eina_log_domain_register ("evas-gl_x11", EVAS_DEFAULT_LOG_COLOR); @@ -3046,8 +3046,6 @@ module_open(Evas_Module *em) // gl_current_surface_get is in gl generic ORD(gl_current_context_get); - func.info_size = sizeof (Evas_Engine_Info_GL_X11); - if (!(platform_env = getenv("EGL_PLATFORM"))) setenv("EGL_PLATFORM", "x11", 0); diff --git a/src/modules/evas/engines/psl1ght/evas_engine.c b/src/modules/evas/engines/psl1ght/evas_engine.c index 5375fa5..168543b 100644 --- a/src/modules/evas/engines/psl1ght/evas_engine.c +++ b/src/modules/evas/engines/psl1ght/evas_engine.c @@ -389,7 +389,7 @@ module_open(Evas_Module *em) { if (!em) return 0; /* get whatever engine module we inherit from */ - if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0; + if (!_evas_module_engine_inherit(&pfunc, "software_generic", sizeof (Evas_Engine_Info_PSL1GHT))) return 0; _evas_engine_psl1ght_log_dom = eina_log_domain_register ("evas-psl1ght", EVAS_DEFAULT_LOG_COLOR); if (_evas_engine_psl1ght_log_dom < 0) @@ -416,8 +416,6 @@ module_open(Evas_Module *em) ORD(output_flush); ORD(output_idle_flush); - func.info_size = sizeof (Evas_Engine_Info_PSL1GHT); - /* now advertise out own api */ em->functions = (void *)(&func); return 1; diff --git a/src/modules/evas/engines/software_ddraw/evas_engine.c b/src/modules/evas/engines/software_ddraw/evas_engine.c index bf647cb..56bf3de 100644 --- a/src/modules/evas/engines/software_ddraw/evas_engine.c +++ b/src/modules/evas/engines/software_ddraw/evas_engine.c @@ -110,7 +110,7 @@ module_open(Evas_Module *em) { if (!em) return 0; /* get whatever engine module we inherit from */ - if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0; + if (!_evas_module_engine_inherit(&pfunc, "software_generic", sizeof (Evas_Engine_Info_Software_DDraw))) return 0; _evas_log_dom_module = eina_log_domain_register ("evas-software_ddraw", EVAS_DEFAULT_LOG_COLOR); if (_evas_log_dom_module < 0) @@ -127,8 +127,6 @@ module_open(Evas_Module *em) ORD(canvas_alpha_get); ORD(output_free); - func.info_size = sizeof (Evas_Engine_Info_Software_DDraw); - /* now advertise out own api */ em->functions = (void *)(&func); return 1; diff --git a/src/modules/evas/engines/software_gdi/evas_engine.c b/src/modules/evas/engines/software_gdi/evas_engine.c index eb17e0e..e399194 100644 --- a/src/modules/evas/engines/software_gdi/evas_engine.c +++ b/src/modules/evas/engines/software_gdi/evas_engine.c @@ -141,7 +141,7 @@ module_open(Evas_Module *em) { if (!em) return 0; /* get whatever engine module we inherit from */ - if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0; + if (!_evas_module_engine_inherit(&pfunc, "software_generic", sizeof (Evas_Engine_Info_Software_Gdi))) return 0; _evas_engine_soft_gdi_log_dom = eina_log_domain_register ("evas-software_gdi", EVAS_DEFAULT_LOG_COLOR); @@ -159,7 +159,6 @@ module_open(Evas_Module *em) ORD(canvas_alpha_get); ORD(output_free); - func.info_size = sizeof (Evas_Engine_Info_Software_Gdi); /* now advertise out own api */ em->functions = (void *)(&func); return 1; diff --git a/src/modules/evas/engines/software_x11/evas_engine.c b/src/modules/evas/engines/software_x11/evas_engine.c index fadb68b..c2b2ec9 100644 --- a/src/modules/evas/engines/software_x11/evas_engine.c +++ b/src/modules/evas/engines/software_x11/evas_engine.c @@ -560,7 +560,7 @@ module_open(Evas_Module *em) if (!em) return 0; /* get whatever engine module we inherit from */ - if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0; + if (!_evas_module_engine_inherit(&pfunc, "software_generic", sizeof (Evas_Engine_Info_Software_X11))) return 0; _evas_engine_soft_x11_log_dom = eina_log_domain_register("evas-software_x11", EVAS_DEFAULT_LOG_COLOR); @@ -586,8 +586,6 @@ module_open(Evas_Module *em) ORD(image_native_set); ORD(image_native_get); - func.info_size = sizeof (Evas_Engine_Info_Software_X11); - _symbols(); /* now advertise out own api */ em->functions = (void *)(&func); diff --git a/src/modules/evas/engines/wayland_egl/evas_engine.c b/src/modules/evas/engines/wayland_egl/evas_engine.c index 16ad004..28c6203 100644 --- a/src/modules/evas/engines/wayland_egl/evas_engine.c +++ b/src/modules/evas/engines/wayland_egl/evas_engine.c @@ -1394,7 +1394,7 @@ module_open(Evas_Module *em) if (!em) return 0; /* get whatever engine module we inherit from */ - if (!_evas_module_engine_inherit(&pfunc, "gl_generic")) return 0; + if (!_evas_module_engine_inherit(&pfunc, "gl_generic", sizeof (Evas_Engine_Info_Wayland))) return 0; /* setup logging domain */ if (_evas_engine_wl_egl_log_dom < 0) @@ -1426,8 +1426,6 @@ module_open(Evas_Module *em) ORD(image_native_init); ORD(image_native_shutdown); - func.info_size = sizeof (Evas_Engine_Info_Wayland); - symbols(); /* advertise out which functions we support */ diff --git a/src/modules/evas/engines/wayland_shm/evas_engine.c b/src/modules/evas/engines/wayland_shm/evas_engine.c index d5bdb6b..e9ca14a 100644 --- a/src/modules/evas/engines/wayland_shm/evas_engine.c +++ b/src/modules/evas/engines/wayland_shm/evas_engine.c @@ -314,7 +314,7 @@ eng_image_native_get(void *engine EINA_UNUSED, void *image) } /* EVAS MODULE FUNCTIONS */ -static int +static int module_open(Evas_Module *em) { LOGFN(__FILE__, __LINE__, __FUNCTION__); @@ -323,10 +323,10 @@ module_open(Evas_Module *em) if (!em) return 0; /* try to get functions from whatever engine module we inherit from */ - if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0; + if (!_evas_module_engine_inherit(&pfunc, "software_generic", sizeof (Evas_Engine_Info_Wayland))) return 0; /* try to create our logging domain */ - _evas_engine_way_shm_log_dom = + _evas_engine_way_shm_log_dom = eina_log_domain_register("evas-wayland_shm", EVAS_DEFAULT_LOG_COLOR); if (_evas_engine_way_shm_log_dom < 0) { @@ -349,8 +349,6 @@ module_open(Evas_Module *em) ORD(image_native_init); ORD(image_native_shutdown); - func.info_size = sizeof (Evas_Engine_Info_Wayland); - _symbols(); /* advertise our own engine functions */ em->functions = (void *)(&func); @@ -358,7 +356,7 @@ module_open(Evas_Module *em) return 1; } -static void +static void module_close(Evas_Module *em EINA_UNUSED) { LOGFN(__FILE__, __LINE__, __FUNCTION__);