evas: factorize call to info and info_free.

This commit is contained in:
Cedric BAIL 2017-08-25 10:48:13 -07:00
parent 1e2bbf8fea
commit 46e1df839b
18 changed files with 126 additions and 317 deletions

View File

@ -1038,13 +1038,26 @@ evas_output_method_set(Evas *eo_e, int render_method)
e->engine.module = em; e->engine.module = em;
evas_module_ref(em); evas_module_ref(em);
/* get the engine info struct */ /* get the engine info struct */
if (e->engine.func->output_info) if (e->engine.func->info_size)
{ {
Efl_Canvas_Output *output; Efl_Canvas_Output *output;
Eina_List *l; Eina_List *l;
EINA_LIST_FOREACH(e->outputs, l, output) EINA_LIST_FOREACH(e->outputs, l, output)
if (!output->info) output->info = e->engine.func->output_info(); if (!output->info)
{
output->info = calloc(1, e->engine.func->info_size);
if (!output->info) continue ;
output->info->magic = rand();
output->info_magic = output->info->magic;
if (e->engine.func->output_info_setup)
e->engine.func->output_info_setup(output->info);
}
}
else
{
CRI("Engine not up to date no info size provided.");
} }
// Wayland/drm already handles seats. // Wayland/drm already handles seats.

View File

@ -38,11 +38,22 @@ efl_canvas_output_add(Evas *canvas)
// The engine is already initialized, use it // The engine is already initialized, use it
// right away to setup the info structure // right away to setup the info structure
if (e->engine.func->output_info) if (e->engine.func->info_size)
{ {
r->info = e->engine.func->output_info(); r->info = calloc(1, e->engine.func->info_size);
if (!r->info) goto on_error;
r->info->magic = rand();
r->info_magic = r->info->magic;
if (e->engine.func->output_info_setup)
e->engine.func->output_info_setup(r->info);
}
else
{
CRI("Engine not up to date no info size provided.");
} }
on_error:
return r; return r;
} }
@ -62,7 +73,8 @@ efl_canvas_output_del(Efl_Canvas_Output *output)
output->ector); output->ector);
e->engine.func->output_free(_evas_engine_context(e), e->engine.func->output_free(_evas_engine_context(e),
output->output); output->output);
e->engine.func->output_info_free(output->info); free(output->info);
output->info = NULL;
} }
e->outputs = eina_list_remove(e->outputs, output); e->outputs = eina_list_remove(e->outputs, output);

View File

@ -1334,7 +1334,8 @@ struct _Efl_Canvas_Output
Ector_Surface *ector; Ector_Surface *ector;
void *info, *output; Evas_Engine_Info *info;
void *output;
Evas_Coord x, y, w, h; Evas_Coord x, y, w, h;
int info_magic; int info_magic;
@ -1393,10 +1394,9 @@ struct _Evas_Object_Func
struct _Evas_Func struct _Evas_Func
{ {
void *(*output_info) (void); void (*output_info_setup) (void *info);
void (*output_info_free) (void *info); void *(*output_setup) (void *engine, void *info, unsigned int w, unsigned int h);
void *(*output_setup) (void *engine, void *info, unsigned int w, unsigned int h); int (*output_update) (void *engine, void *data, void *info, unsigned int w, unsigned int h);
int (*output_update) (void *engine, void *data, void *info, unsigned int w, unsigned int h);
void (*output_free) (void *engine, void *data); void (*output_free) (void *engine, void *data);
void (*output_resize) (void *engine, void *data, int w, int h); void (*output_resize) (void *engine, void *data, int w, int h);
@ -1616,6 +1616,8 @@ struct _Evas_Func
Evas_Filter_Support (*gfx_filter_supports) (void *engine, Evas_Filter_Command *cmd); Evas_Filter_Support (*gfx_filter_supports) (void *engine, Evas_Filter_Command *cmd);
Eina_Bool (*gfx_filter_process) (void *engine, Evas_Filter_Command *cmd); Eina_Bool (*gfx_filter_process) (void *engine, Evas_Filter_Command *cmd);
unsigned int info_size;
}; };
struct _Evas_Image_Save_Func struct _Evas_Image_Save_Func

View File

@ -22,8 +22,6 @@ typedef Render_Output_Software_Generic Render_Engine;
/* prototypes we will use here */ /* prototypes we will use here */
static void *_output_setup(int w, int h, void *dest_buffer, int dest_buffer_row_bytes, int depth_type, int use_color_key, int alpha_threshold, int color_key_r, int color_key_g, int color_key_b, void *(*new_update_region) (int x, int y, int w, int h, int *row_bytes), void (*free_update_region) (int x, int y, int w, int h, void *data), void *(*switch_buffer) (void *data, void *dest_buffer), void *switch_data); static void *_output_setup(int w, int h, void *dest_buffer, int dest_buffer_row_bytes, int depth_type, int use_color_key, int alpha_threshold, int color_key_r, int color_key_g, int color_key_b, void *(*new_update_region) (int x, int y, int w, int h, int *row_bytes), void (*free_update_region) (int x, int y, int w, int h, void *data), void *(*switch_buffer) (void *data, void *dest_buffer), void *switch_data);
static void *eng_output_info(void);
static void eng_output_info_free(void *info);
static void eng_output_free(void *engine EINA_UNUSED, void *data); static void eng_output_free(void *engine EINA_UNUSED, void *data);
/* internal engine routines */ /* internal engine routines */
@ -107,23 +105,12 @@ _output_setup(int w,
} }
/* engine api this module provides */ /* engine api this module provides */
static void *
eng_output_info(void)
{
Evas_Engine_Info_Buffer *info;
info = calloc(1, sizeof(Evas_Engine_Info_Buffer));
if (!info) return NULL;
info->magic.magic = rand();
info->render_mode = EVAS_RENDER_MODE_BLOCKING;
return info;
}
static void static void
eng_output_info_free(void *info) eng_output_info_setup(void *info)
{ {
Evas_Engine_Info_Buffer *in; Evas_Engine_Info_Buffer *einfo = info;
in = (Evas_Engine_Info_Buffer *)info;
free(in); einfo->render_mode = EVAS_RENDER_MODE_BLOCKING;
} }
static void * static void *
@ -190,11 +177,13 @@ module_open(Evas_Module *em)
func = pfunc; func = pfunc;
/* now to override methods */ /* now to override methods */
#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_) #define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
ORD(output_info); ORD(output_info_setup);
ORD(output_info_free);
ORD(output_setup); ORD(output_setup);
ORD(canvas_alpha_get); ORD(canvas_alpha_get);
ORD(output_free); ORD(output_free);
func.info_size = sizeof (Evas_Engine_Info_Buffer);
/* now advertise out own api */ /* now advertise out own api */
em->functions = (void *)(&func); em->functions = (void *)(&func);
return 1; return 1;

View File

@ -57,30 +57,12 @@ err:
return NULL; return NULL;
} }
static void *
eng_output_info(void)
{
Evas_Engine_Info_Drm *info;
/* try to allocate space for our engine info structure */
info = calloc(1, sizeof(Evas_Engine_Info_Drm));
if (!info) return NULL;
/* set some engine default properties */
info->magic.magic = rand();
info->render_mode = EVAS_RENDER_MODE_BLOCKING;
return info;
}
static void static void
eng_output_info_free(void *einfo) eng_output_info_setup(void *info)
{ {
Evas_Engine_Info_Drm *info; Evas_Engine_Info_Drm *einfo = info;
/* free the engine info */ einfo->render_mode = EVAS_RENDER_MODE_BLOCKING;
info = (Evas_Engine_Info_Drm *)einfo;
free(info);
} }
static void * static void *
@ -251,14 +233,15 @@ module_open(Evas_Module *em)
func = pfunc; func = pfunc;
/* override the methods we provide */ /* override the methods we provide */
EVAS_API_OVERRIDE(output_info, &func, eng_); EVAS_API_OVERRIDE(output_info_setup, &func, eng_);
EVAS_API_OVERRIDE(output_info_free, &func, eng_);
EVAS_API_OVERRIDE(output_setup, &func, eng_); EVAS_API_OVERRIDE(output_setup, &func, eng_);
EVAS_API_OVERRIDE(output_update, &func, eng_); EVAS_API_OVERRIDE(output_update, &func, eng_);
EVAS_API_OVERRIDE(output_free, &func, eng_); EVAS_API_OVERRIDE(output_free, &func, eng_);
EVAS_API_OVERRIDE(image_plane_assign, &func, eng_); EVAS_API_OVERRIDE(image_plane_assign, &func, eng_);
EVAS_API_OVERRIDE(image_plane_release, &func, eng_); EVAS_API_OVERRIDE(image_plane_release, &func, eng_);
func.info_size = sizeof (Evas_Engine_Info_Drm);
/* advertise our engine functions */ /* advertise our engine functions */
em->functions = (void *)(&func); em->functions = (void *)(&func);

View File

@ -670,28 +670,12 @@ _native_cb_free(void *image)
} }
/* engine specific override functions */ /* engine specific override functions */
static void *
eng_output_info(void)
{
Evas_Engine_Info_Eglfs *info;
/* try to allocate space for our engine info */
if (!(info = calloc(1, sizeof(Evas_Engine_Info_Eglfs))))
return NULL;
info->magic.magic = rand();
info->render_mode = EVAS_RENDER_MODE_BLOCKING;
return info;
}
static void static void
eng_output_info_free(void *in) eng_output_info_setup(void *info)
{ {
Evas_Engine_Info_Eglfs *info; Evas_Engine_Info_Eglfs *einfo = info;
if ((info = (Evas_Engine_Info_Eglfs *)in)) einfo->render_mode = EVAS_RENDER_MODE_BLOCKING;
free(info);
} }
static void * static void *
@ -1128,7 +1112,6 @@ module_open(Evas_Module *em)
/* now to override methods */ /* now to override methods */
EVAS_API_OVERRIDE(output_info, &func, eng_); EVAS_API_OVERRIDE(output_info, &func, eng_);
EVAS_API_OVERRIDE(output_info_free, &func, eng_);
EVAS_API_OVERRIDE(output_setup, &func, eng_); EVAS_API_OVERRIDE(output_setup, &func, eng_);
EVAS_API_OVERRIDE(output_update, &func, eng_); EVAS_API_OVERRIDE(output_update, &func, eng_);
EVAS_API_OVERRIDE(canvas_alpha_get, &func, eng_); EVAS_API_OVERRIDE(canvas_alpha_get, &func, eng_);
@ -1136,6 +1119,8 @@ module_open(Evas_Module *em)
EVAS_API_OVERRIDE(output_dump, &func, eng_); EVAS_API_OVERRIDE(output_dump, &func, eng_);
EVAS_API_OVERRIDE(image_native_set, &func, eng_); EVAS_API_OVERRIDE(image_native_set, &func, eng_);
func.info_size = sizeof (Evas_Engine_Info_Eglfs);
setenv("EGL_PLATFORM", "fbdev", 1); setenv("EGL_PLATFORM", "fbdev", 1);
gl_symbols(); gl_symbols();

View File

@ -61,23 +61,12 @@ _output_setup(int w, int h, int rot, int vt, int dev, int refresh)
} }
/* engine api this module provides */ /* engine api this module provides */
static void *
eng_output_info(void)
{
Evas_Engine_Info_FB *info;
info = calloc(1, sizeof(Evas_Engine_Info_FB));
if (!info) return NULL;
info->magic.magic = rand();
info->render_mode = EVAS_RENDER_MODE_BLOCKING;
return info;
}
static void static void
eng_output_info_free(void *info) eng_output_info_setup(void *info)
{ {
Evas_Engine_Info_FB *in; Evas_Engine_Info_FB *einfo = info;
in = (Evas_Engine_Info_FB *)info;
free(in); einfo->render_mode = EVAS_RENDER_MODE_BLOCKING;
} }
static void * static void *
@ -135,11 +124,13 @@ module_open(Evas_Module *em)
func = pfunc; func = pfunc;
/* now to override methods */ /* now to override methods */
#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_) #define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
ORD(output_info); ORD(output_info_setup);
ORD(output_info_free);
ORD(output_setup); ORD(output_setup);
ORD(canvas_alpha_get); ORD(canvas_alpha_get);
ORD(output_free); ORD(output_free);
func.info_size = sizeof (Evas_Engine_Info_FB);
/* now advertise out own api */ /* now advertise out own api */
em->functions = (void *)(&func); em->functions = (void *)(&func);
return 1; return 1;

View File

@ -125,29 +125,6 @@ static const EVGL_Interface evgl_funcs =
NULL, // native_win_surface_config_get NULL, // native_win_surface_config_get
}; };
static void *
eng_output_info(void)
{
Evas_Engine_Info_GL_Cocoa *info;
info = calloc(1, sizeof(*info));
if (EINA_UNLIKELY(!info))
{
CRI("Failed to allocate memory");
return NULL;
}
info->magic.magic = rand();
return info;
}
static void
eng_output_info_free(void *info)
{
Evas_Engine_Info_GL_Cocoa *const in = info;
free(in);
}
static void * static void *
eng_output_setup(void *engine EINA_UNUSED, void *in, unsigned int w, unsigned int h) eng_output_setup(void *engine EINA_UNUSED, void *in, unsigned int w, unsigned int h)
{ {
@ -306,13 +283,13 @@ module_open(Evas_Module *em)
/* now to override methods */ /* now to override methods */
#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_) #define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
ORD(output_info);
ORD(output_info_free);
ORD(output_setup); ORD(output_setup);
ORD(output_update); ORD(output_update);
ORD(canvas_alpha_get); ORD(canvas_alpha_get);
ORD(output_free); ORD(output_free);
func.info_size = sizeof (Evas_Engine_Info_GL_Cocoa);
_gl_symbols(); _gl_symbols();
/* now advertise out own api */ /* now advertise out own api */

View File

@ -891,28 +891,12 @@ _native_cb_free(void *image)
} }
/* engine specific override functions */ /* engine specific override functions */
static void *
eng_output_info(void)
{
Evas_Engine_Info_GL_Drm *info;
/* try to allocate space for our engine info */
if (!(info = calloc(1, sizeof(Evas_Engine_Info_GL_Drm))))
return NULL;
info->magic.magic = rand();
info->render_mode = EVAS_RENDER_MODE_BLOCKING;
return info;
}
static void static void
eng_output_info_free(void *in) eng_output_info_setup(void *info)
{ {
Evas_Engine_Info_GL_Drm *info; Evas_Engine_Info_GL_Drm *einfo = info;
if ((info = (Evas_Engine_Info_GL_Drm *)in)) einfo->render_mode = EVAS_RENDER_MODE_BLOCKING;
free(info);
} }
static Render_Engine_Merge_Mode static Render_Engine_Merge_Mode
@ -1489,8 +1473,7 @@ module_open(Evas_Module *em)
func = pfunc; func = pfunc;
/* now to override methods */ /* now to override methods */
EVAS_API_OVERRIDE(output_info, &func, eng_); EVAS_API_OVERRIDE(output_info_setup, &func, eng_);
EVAS_API_OVERRIDE(output_info_free, &func, eng_);
EVAS_API_OVERRIDE(output_setup, &func, eng_); EVAS_API_OVERRIDE(output_setup, &func, eng_);
EVAS_API_OVERRIDE(output_update, &func, eng_); EVAS_API_OVERRIDE(output_update, &func, eng_);
EVAS_API_OVERRIDE(canvas_alpha_get, &func, eng_); EVAS_API_OVERRIDE(canvas_alpha_get, &func, eng_);
@ -1502,6 +1485,8 @@ module_open(Evas_Module *em)
EVAS_API_OVERRIDE(image_plane_assign, &func, eng_); EVAS_API_OVERRIDE(image_plane_assign, &func, eng_);
EVAS_API_OVERRIDE(image_plane_release, &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() ) /* Mesa's EGL driver loads wayland egl by default. (called by eglGetProcaddr() )
* implicit env set (EGL_PLATFORM=drm) prevent that. */ * implicit env set (EGL_PLATFORM=drm) prevent that. */
setenv("EGL_PLATFORM", "drm", 1); setenv("EGL_PLATFORM", "drm", 1);

View File

@ -266,26 +266,6 @@ static const EVGL_Interface evgl_funcs =
NULL, // native_win_surface_config_get NULL, // native_win_surface_config_get
}; };
static void *
eng_output_info(void)
{
Evas_Engine_Info_GL_SDL *info;
info = calloc(1, sizeof(Evas_Engine_Info_GL_SDL));
if (!info) return NULL;
info->magic.magic = rand();
return info;
}
static void
eng_output_info_free(void *info)
{
Evas_Engine_Info_GL_SDL *in;
in = (Evas_Engine_Info_GL_SDL *)info;
free(in);
}
static void * static void *
eng_output_setup(void *engine EINA_UNUSED, void *in, unsigned int w, unsigned int h) eng_output_setup(void *engine EINA_UNUSED, void *in, unsigned int w, unsigned int h)
{ {
@ -400,13 +380,13 @@ module_open(Evas_Module *em)
func = pfunc; func = pfunc;
/* now to override methods */ /* now to override methods */
#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_) #define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
ORD(output_info);
ORD(output_info_free);
ORD(output_setup); ORD(output_setup);
ORD(canvas_alpha_get); ORD(canvas_alpha_get);
ORD(output_free); ORD(output_free);
ORD(output_dump); ORD(output_dump);
func.info_size = sizeof (Evas_Engine_Info_GL_SDL);
gl_symbols(); gl_symbols();
/* now advertise out own api */ /* now advertise out own api */

View File

@ -1549,28 +1549,15 @@ int _evas_engine_GL_X11_log_dom = -1;
/* function tables - filled in later (func and parent func) */ /* function tables - filled in later (func and parent func) */
static Evas_Func func, pfunc; static Evas_Func func, pfunc;
static void *
eng_output_info(void)
{
Evas_Engine_Info_GL_X11 *info;
info = calloc(1, sizeof(Evas_Engine_Info_GL_X11));
info->magic.magic = rand();
info->func.best_visual_get = eng_best_visual_get;
info->func.best_colormap_get = eng_best_colormap_get;
info->func.best_depth_get = eng_best_depth_get;
info->render_mode = EVAS_RENDER_MODE_BLOCKING;
return info;
}
static void static void
eng_output_info_free(void *info) eng_output_info_setup(void *info)
{ {
Evas_Engine_Info_GL_X11 *in; Evas_Engine_Info_GL_X11 *einfo = info;
// dont free! why bother? its not worth it
// eina_log_domain_unregister(_evas_engine_GL_X11_log_dom); einfo->func.best_visual_get = eng_best_visual_get;
in = (Evas_Engine_Info_GL_X11 *)info; einfo->func.best_colormap_get = eng_best_colormap_get;
free(in); einfo->func.best_depth_get = eng_best_depth_get;
einfo->render_mode = EVAS_RENDER_MODE_BLOCKING;
} }
static void static void
@ -3044,8 +3031,7 @@ module_open(Evas_Module *em)
func = pfunc; func = pfunc;
/* now to override methods */ /* now to override methods */
#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_) #define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
ORD(output_info); ORD(output_info_setup);
ORD(output_info_free);
ORD(output_setup); ORD(output_setup);
ORD(output_update); ORD(output_update);
ORD(canvas_alpha_get); ORD(canvas_alpha_get);
@ -3060,6 +3046,8 @@ module_open(Evas_Module *em)
// gl_current_surface_get is in gl generic // gl_current_surface_get is in gl generic
ORD(gl_current_context_get); ORD(gl_current_context_get);
func.info_size = sizeof (Evas_Engine_Info_GL_X11);
if (!(platform_env = getenv("EGL_PLATFORM"))) if (!(platform_env = getenv("EGL_PLATFORM")))
setenv("EGL_PLATFORM", "x11", 0); setenv("EGL_PLATFORM", "x11", 0);

View File

@ -98,30 +98,12 @@ _output_setup(int w, int h)
} }
/* engine api this module provides */ /* engine api this module provides */
static void *
eng_output_info(void)
{
Evas_Engine_Info_PSL1GHT *info;
printf ("eng_info called\n");
info = calloc(1, sizeof(Evas_Engine_Info_PSL1GHT));
if (!info)
return NULL;
info->magic.magic = rand();
info->render_mode = EVAS_RENDER_MODE_BLOCKING;
return info;
}
static void static void
eng_output_info_free(void *info) eng_output_info_setup(void *info)
{ {
Evas_Engine_Info_PSL1GHT *in; Evas_Engine_Info_PSL1GHT *einfo = info;
printf ("eng_info_free called\n"); einfo->render_mode = EVAS_RENDER_MODE_BLOCKING;
in = (Evas_Engine_Info_PSL1GHT *)info;
free(in);
} }
static void * static void *
@ -420,8 +402,7 @@ module_open(Evas_Module *em)
func = pfunc; func = pfunc;
/* now to override methods */ /* now to override methods */
#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_) #define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
ORD(output_info); ORD(output_info_setup);
ORD(output_info_free);
ORD(output_setup); ORD(output_setup);
ORD(canvas_alpha_get); ORD(canvas_alpha_get);
ORD(output_free); ORD(output_free);
@ -435,6 +416,8 @@ module_open(Evas_Module *em)
ORD(output_flush); ORD(output_flush);
ORD(output_idle_flush); ORD(output_idle_flush);
func.info_size = sizeof (Evas_Engine_Info_PSL1GHT);
/* now advertise out own api */ /* now advertise out own api */
em->functions = (void *)(&func); em->functions = (void *)(&func);
return 1; return 1;

View File

@ -65,26 +65,12 @@ _output_setup(int width,
/* engine api this module provides */ /* engine api this module provides */
static void *
eng_output_info(void)
{
Evas_Engine_Info_Software_DDraw *info;
info = calloc(1, sizeof(Evas_Engine_Info_Software_DDraw));
if (!info) return NULL;
info->magic.magic = rand();
info->render_mode = EVAS_RENDER_MODE_BLOCKING;
return info;
}
static void static void
eng_output_info_free(void *info) eng_output_info_setup(void *info)
{ {
Evas_Engine_Info_Software_DDraw *in; Evas_Engine_Info_Software_DDraw *einfo = info;
in = (Evas_Engine_Info_Software_DDraw *)info; einfo->render_mode = EVAS_RENDER_MODE_BLOCKING;
free(in);
} }
static void * static void *
@ -136,11 +122,13 @@ module_open(Evas_Module *em)
func = pfunc; func = pfunc;
/* now to override methods */ /* now to override methods */
#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_) #define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
ORD(output_info); ORD(output_info_setup);
ORD(output_info_free);
ORD(output_setup); ORD(output_setup);
ORD(canvas_alpha_get); ORD(canvas_alpha_get);
ORD(output_free); ORD(output_free);
func.info_size = sizeof (Evas_Engine_Info_Software_DDraw);
/* now advertise out own api */ /* now advertise out own api */
em->functions = (void *)(&func); em->functions = (void *)(&func);
return 1; return 1;

View File

@ -71,25 +71,6 @@ _output_setup(int width,
/* engine api this module provides */ /* engine api this module provides */
static void *
eng_output_info(void)
{
Evas_Engine_Info_Software_Gdi *info;
info = calloc(1, sizeof(Evas_Engine_Info_Software_Gdi));
if (!info) return NULL;
info->magic.magic = rand();
return info;
}
static void
eng_output_info_free(void *info)
{
Evas_Engine_Info_Software_Gdi *in;
in = (Evas_Engine_Info_Software_Gdi *)info;
free(in);
}
static void * static void *
eng_output_setup(void *engine EINA_UNUSED, void *in, unsigned int w, unsigned int h) eng_output_setup(void *engine EINA_UNUSED, void *in, unsigned int w, unsigned int h)
{ {
@ -173,12 +154,12 @@ module_open(Evas_Module *em)
func = pfunc; func = pfunc;
/* now to override methods */ /* now to override methods */
#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_) #define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
ORD(output_info);
ORD(output_info_free);
ORD(output_setup); ORD(output_setup);
ORD(output_update); ORD(output_update);
ORD(canvas_alpha_get); ORD(canvas_alpha_get);
ORD(output_free); ORD(output_free);
func.info_size = sizeof (Evas_Engine_Info_Software_Gdi);
/* now advertise out own api */ /* now advertise out own api */
em->functions = (void *)(&func); em->functions = (void *)(&func);
return 1; return 1;

View File

@ -4659,8 +4659,7 @@ eng_gfx_filter_process(void *data EINA_UNUSED, Evas_Filter_Command *cmd)
static Evas_Func func = static Evas_Func func =
{ {
NULL, // eng_info NULL, // eng_info_setup
NULL, // eng_info_free
NULL, // eng_setup NULL, // eng_setup
NULL, // eng_update NULL, // eng_update
NULL, // eng_output_free NULL, // eng_output_free
@ -4852,8 +4851,9 @@ static Evas_Func func =
eng_ector_new, eng_ector_new,
eng_ector_free, eng_ector_free,
eng_gfx_filter_supports, eng_gfx_filter_supports,
eng_gfx_filter_process eng_gfx_filter_process,
/* FUTURE software generic calls go here */ /* FUTURE software generic calls go here */
0 // sizeof (Info)
}; };

View File

@ -231,32 +231,18 @@ _symbols(void)
} }
/* engine api this module provides */ /* engine api this module provides */
static void *
eng_output_info(void)
{
Evas_Engine_Info_Software_X11 *info;
if (!(info = calloc(1, sizeof(Evas_Engine_Info_Software_X11))))
return NULL;
info->magic.magic = rand();
info->info.debug = 0;
info->info.alloc_grayscale = 0;
info->info.alloc_colors_max = 216;
info->func.best_visual_get = _best_visual_get;
info->func.best_colormap_get = _best_colormap_get;
info->func.best_depth_get = _best_depth_get;
info->render_mode = EVAS_RENDER_MODE_BLOCKING;
return info;
}
static void static void
eng_output_info_free(void *info) eng_output_info_setup(void *info)
{ {
Evas_Engine_Info_Software_X11 *in; Evas_Engine_Info_Software_X11 *einfo = info;
in = (Evas_Engine_Info_Software_X11 *)info; einfo->info.debug = 0;
free(in); einfo->info.alloc_grayscale = 0;
einfo->info.alloc_colors_max = 216;
einfo->func.best_visual_get = _best_visual_get;
einfo->func.best_colormap_get = _best_colormap_get;
einfo->func.best_depth_get = _best_depth_get;
einfo->render_mode = EVAS_RENDER_MODE_BLOCKING;
} }
static void * static void *
@ -590,8 +576,7 @@ module_open(Evas_Module *em)
/* now to override methods */ /* now to override methods */
#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_) #define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
ORD(output_info); ORD(output_info_setup);
ORD(output_info_free);
ORD(output_setup); ORD(output_setup);
ORD(output_update); ORD(output_update);
ORD(canvas_alpha_get); ORD(canvas_alpha_get);
@ -601,6 +586,8 @@ module_open(Evas_Module *em)
ORD(image_native_set); ORD(image_native_set);
ORD(image_native_get); ORD(image_native_get);
func.info_size = sizeof (Evas_Engine_Info_Software_X11);
_symbols(); _symbols();
/* now advertise out own api */ /* now advertise out own api */
em->functions = (void *)(&func); em->functions = (void *)(&func);

View File

@ -502,28 +502,12 @@ static const EVGL_Interface evgl_funcs =
}; };
/* engine functions */ /* engine functions */
static void *
eng_output_info(void)
{
Evas_Engine_Info_Wayland *info;
/* try to allocate space for our engine info */
if (!(info = calloc(1, sizeof(Evas_Engine_Info_Wayland))))
return NULL;
info->magic.magic = rand();
info->render_mode = EVAS_RENDER_MODE_BLOCKING;
return info;
}
static void static void
eng_output_info_free(Evas *evas EINA_UNUSED, void *info) eng_output_info_setup(void *info)
{ {
Evas_Engine_Info_Wayland *inf; Evas_Engine_Info_Wayland *info = info;
if ((inf = (Evas_Engine_Info_Wayland *)info)) info->render_mode = EVAS_RENDER_MODE_BLOCKING;
free(inf);
} }
static Render_Engine_Swap_Mode static Render_Engine_Swap_Mode
@ -1430,8 +1414,7 @@ module_open(Evas_Module *em)
#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_) #define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
ORD(output_info); ORD(output_info_setup);
ORD(output_info_free);
ORD(output_setup); ORD(output_setup);
ORD(output_update); ORD(output_update);
ORD(canvas_alpha_get); ORD(canvas_alpha_get);
@ -1443,6 +1426,8 @@ module_open(Evas_Module *em)
ORD(image_native_init); ORD(image_native_init);
ORD(image_native_shutdown); ORD(image_native_shutdown);
func.info_size = sizeof (Evas_Engine_Info_Wayland);
symbols(); symbols();
/* advertise out which functions we support */ /* advertise out which functions we support */

View File

@ -102,35 +102,14 @@ _symbols(void)
} }
/* ENGINE API FUNCTIONS WE PROVIDE */ /* ENGINE API FUNCTIONS WE PROVIDE */
static void *
eng_output_info(void)
{
Evas_Engine_Info_Wayland *einfo;
LOGFN(__FILE__, __LINE__, __FUNCTION__);
/* try to allocate space for new engine info */
if (!(einfo = calloc(1, sizeof(Evas_Engine_Info_Wayland))))
return NULL;
/* fill in engine info */
einfo->magic.magic = rand();
einfo->render_mode = EVAS_RENDER_MODE_BLOCKING;
/* return allocated engine info */
return einfo;
}
static void static void
eng_output_info_free(void *info) eng_output_info_setup(void *info)
{ {
Evas_Engine_Info_Wayland *einfo; Evas_Engine_Info_Wayland *einfo = info;
LOGFN(__FILE__, __LINE__, __FUNCTION__); LOGFN(__FILE__, __LINE__, __FUNCTION__);
/* try to free previously allocated engine info */ einfo->render_mode = EVAS_RENDER_MODE_BLOCKING;
if ((einfo = (Evas_Engine_Info_Wayland *)info))
free(einfo);
} }
static void * static void *
@ -360,8 +339,7 @@ module_open(Evas_Module *em)
/* override engine specific functions */ /* override engine specific functions */
#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_) #define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
ORD(output_info); ORD(output_info_setup);
ORD(output_info_free);
ORD(output_setup); ORD(output_setup);
ORD(output_update); ORD(output_update);
ORD(output_free); ORD(output_free);
@ -371,6 +349,8 @@ module_open(Evas_Module *em)
ORD(image_native_init); ORD(image_native_init);
ORD(image_native_shutdown); ORD(image_native_shutdown);
func.info_size = sizeof (Evas_Engine_Info_Wayland);
_symbols(); _symbols();
/* advertise our own engine functions */ /* advertise our own engine functions */
em->functions = (void *)(&func); em->functions = (void *)(&func);