diff --git a/legacy/evas/AUTHORS b/legacy/evas/AUTHORS index dab9a99745..c6855027ab 100644 --- a/legacy/evas/AUTHORS +++ b/legacy/evas/AUTHORS @@ -9,3 +9,4 @@ Nathan Ingersoll Willem Monsuwe Jose O Gonzalez Bernhard Nemec +Jorge Luis Zapata Muga diff --git a/legacy/evas/configure.in b/legacy/evas/configure.in index 7b338a64cc..ecfcc16e9b 100644 --- a/legacy/evas/configure.in +++ b/legacy/evas/configure.in @@ -17,6 +17,10 @@ AM_ENABLE_SHARED AM_PROG_LIBTOOL AC_FUNC_ALLOCA +MODULE_ARCH="$host_os-$host_cpu" +AC_SUBST(MODULE_ARCH) +AC_DEFINE_UNQUOTED(MODULE_ARCH, "$MODULE_ARCH", "Module architecture") + dnl Add the languages which your application supports here. if test "x${bindir}" = 'x${exec_prefix}/bin'; then @@ -1609,18 +1613,20 @@ src/lib/file/Makefile src/lib/imaging/Makefile src/lib/engines/Makefile src/lib/engines/common/Makefile -src/lib/engines/software_x11/Makefile -src/lib/engines/software_xcb/Makefile -src/lib/engines/fb/Makefile -src/lib/engines/buffer/Makefile -src/lib/engines/software_win32_gdi/Makefile -src/lib/engines/software_qtopia/Makefile -src/lib/engines/directfb/Makefile -src/lib/engines/gl_common/Makefile -src/lib/engines/gl_x11/Makefile -src/lib/engines/cairo_common/Makefile -src/lib/engines/cairo_x11/Makefile -src/lib/engines/xrender_x11/Makefile +src/modules/Makefile +src/modules/engines/Makefile +src/modules/engines/software_x11/Makefile +src/modules/engines/software_xcb/Makefile +src/modules/engines/fb/Makefile +src/modules/engines/buffer/Makefile +src/modules/engines/software_win32_gdi/Makefile +src/modules/engines/software_qtopia/Makefile +src/modules/engines/directfb/Makefile +src/modules/engines/gl_common/Makefile +src/modules/engines/gl_x11/Makefile +src/modules/engines/cairo_common/Makefile +src/modules/engines/cairo_x11/Makefile +src/modules/engines/xrender_x11/Makefile src/lib/include/Makefile proj/Makefile proj/win32_gdi/Makefile diff --git a/legacy/evas/src/Makefile.am b/legacy/evas/src/Makefile.am index a8590b2f0d..f9da2bbae3 100644 --- a/legacy/evas/src/Makefile.am +++ b/legacy/evas/src/Makefile.am @@ -1,3 +1,3 @@ MAINTAINERCLEANFILES = Makefile.in -SUBDIRS = lib bin +SUBDIRS = lib modules bin diff --git a/legacy/evas/src/bin/Makefile.am b/legacy/evas/src/bin/Makefile.am index 647a1da38b..7d8d679fd3 100644 --- a/legacy/evas/src/bin/Makefile.am +++ b/legacy/evas/src/bin/Makefile.am @@ -1,7 +1,7 @@ MAINTAINERCLEANFILES = Makefile.in moc_evas_software_qtopia_main.cpp INCLUDES = \ --I. -I$(top_srcdir)/src/lib -I$(top_srcdir) \ +-I. -I$(top_srcdir)/src/modules/engines -I$(top_srcdir)/src/lib -I$(top_srcdir) \ @DIRECTFB_CFLAGS@ @qt_cflags@ @gl_cflags@ bin_PROGRAMS = \ diff --git a/legacy/evas/src/bin/evas_buffer_main.c b/legacy/evas/src/bin/evas_buffer_main.c index b5f36de5ac..6738a63ee0 100644 --- a/legacy/evas/src/bin/evas_buffer_main.c +++ b/legacy/evas/src/bin/evas_buffer_main.c @@ -14,6 +14,7 @@ main(int argc, char **argv) if ((argc >= 3) && (!strcmp(argv[1], "-rot"))) rot = atoi(argv[2]); + evas_init(); evas = evas_new(); evas_output_method_set(evas, evas_render_method_lookup("buffer")); evas_output_size_set(evas, win_w, win_h); @@ -42,5 +43,6 @@ main(int argc, char **argv) loop(); evas_render(evas); } + evas_shutdown(); return 0; } diff --git a/legacy/evas/src/bin/evas_cairo_x11_main.c b/legacy/evas/src/bin/evas_cairo_x11_main.c index 0c2b1e91c0..eebb549ced 100644 --- a/legacy/evas/src/bin/evas_cairo_x11_main.c +++ b/legacy/evas/src/bin/evas_cairo_x11_main.c @@ -23,6 +23,7 @@ main(int argc, char **argv) exit(-1); } /* test evas_free.... :) */ + evas_init(); evas = evas_new(); evas_output_method_set(evas, evas_render_method_lookup("cairo_x11")); evas_output_size_set(evas, win_w, win_h); @@ -134,4 +135,5 @@ main(int argc, char **argv) usleep(100000); } return 0; + evas_shutdown(); } diff --git a/legacy/evas/src/bin/evas_directfb_main.c b/legacy/evas/src/bin/evas_directfb_main.c index 5b40f99602..8c39d319a9 100644 --- a/legacy/evas/src/bin/evas_directfb_main.c +++ b/legacy/evas/src/bin/evas_directfb_main.c @@ -57,6 +57,7 @@ main(int argc, char *argv[]) DFBCHECK(dfb->GetInputDevice(dfb, DIDID_MOUSE, &mouse)); DFBCHECK (dfb->CreateInputEventBuffer (dfb, DICAPS_ALL, DFB_TRUE, &buffer)); + evas_init(); evas = evas_new(); evas_output_method_set(evas, evas_render_method_lookup("directfb")); evas_output_size_set(evas, win_w, win_h); @@ -127,5 +128,6 @@ main(int argc, char *argv[]) primary->Release(primary); dfb->Release(dfb); - return 42; + evas_shutdown(); + return 0; } diff --git a/legacy/evas/src/bin/evas_directfb_window.c b/legacy/evas/src/bin/evas_directfb_window.c index e183e5db15..9dec9109a7 100644 --- a/legacy/evas/src/bin/evas_directfb_window.c +++ b/legacy/evas/src/bin/evas_directfb_window.c @@ -237,6 +237,7 @@ int main( int argc, char *argv[] ) window1->RaiseToTop( window1 ); upper = window1; { + evas_init(); evas = evas_new(); evas_output_method_set(evas, evas_render_method_lookup("directfb")); evas_output_size_set(evas, 240, 320); @@ -413,5 +414,6 @@ int main( int argc, char *argv[] ) bgsurface->Release( bgsurface ); dfb->Release( dfb ); - return 42; + evas_shutdown(); + return 0; } diff --git a/legacy/evas/src/bin/evas_fb_main.c b/legacy/evas/src/bin/evas_fb_main.c index 78dcada0ed..ed211d8a43 100644 --- a/legacy/evas/src/bin/evas_fb_main.c +++ b/legacy/evas/src/bin/evas_fb_main.c @@ -13,6 +13,7 @@ main(int argc, char **argv) if ((argc >= 3) && (!strcmp(argv[1], "-rot"))) rot = atoi(argv[2]); + evas_init(); evas = evas_new(); evas_output_method_set(evas, evas_render_method_lookup("fb")); evas_output_size_set(evas, win_w, win_h); @@ -37,5 +38,6 @@ main(int argc, char **argv) loop(); evas_render(evas); } + evas_shutdown(); return 0; } diff --git a/legacy/evas/src/bin/evas_gl_x11_main.c b/legacy/evas/src/bin/evas_gl_x11_main.c index 13638d9b23..da1daee156 100644 --- a/legacy/evas/src/bin/evas_gl_x11_main.c +++ b/legacy/evas/src/bin/evas_gl_x11_main.c @@ -27,6 +27,7 @@ main(int argc, char **argv) exit(-1); } /* test evas_free.... :) */ + evas_init(); evas = evas_new(); evas_output_method_set(evas, evas_render_method_lookup("gl_x11")); evas_output_size_set(evas, win_w, win_h); @@ -137,5 +138,6 @@ main(int argc, char **argv) if (pause_me == 2) usleep(100000); } + evas_shutdown(); return 0; } diff --git a/legacy/evas/src/bin/evas_software_qtopia_main.cpp b/legacy/evas/src/bin/evas_software_qtopia_main.cpp index 9664e38f84..c6af2350b1 100644 --- a/legacy/evas/src/bin/evas_software_qtopia_main.cpp +++ b/legacy/evas/src/bin/evas_software_qtopia_main.cpp @@ -95,6 +95,7 @@ EvasTestApp::EvasTestApp(QWidget *parent, const char *name, int wFlags) evas_target_widget = new EvasTargetWidget(this, "EvasTargetWidget"); + evas_init(); evas = evas_new(); evas_output_method_set(evas, evas_render_method_lookup("software_qtopia")); evas_output_size_set(evas, win_w, win_h); @@ -114,6 +115,7 @@ EvasTestApp::EvasTestApp(QWidget *parent, const char *name, int wFlags) EvasTestApp::~EvasTestApp() { + evas_shutdown(); } QSizePolicy EvasTestApp::sizePolicy() const diff --git a/legacy/evas/src/bin/evas_software_x11_perf_load.c b/legacy/evas/src/bin/evas_software_x11_perf_load.c index ff70d58526..6dd52d7c91 100644 --- a/legacy/evas/src/bin/evas_software_x11_perf_load.c +++ b/legacy/evas/src/bin/evas_software_x11_perf_load.c @@ -60,6 +60,7 @@ main(int argc, char **argv) XSetWMNormalHints(disp, win, &szhints); XMapWindow(disp, win); + evas_init(); evas = evas_new(); evas_output_method_set(evas, evas_render_method_lookup("software_x11")); evas_output_size_set(evas, win_w, win_h); @@ -175,5 +176,6 @@ main(int argc, char **argv) } } + evas_shutdown(); return 0; } diff --git a/legacy/evas/src/bin/evas_software_x11_perf_test.c b/legacy/evas/src/bin/evas_software_x11_perf_test.c index 344df16b94..10f03d39cd 100644 --- a/legacy/evas/src/bin/evas_software_x11_perf_test.c +++ b/legacy/evas/src/bin/evas_software_x11_perf_test.c @@ -61,6 +61,7 @@ main(int argc, char **argv) XSync(disp, False); sleep(1); + evas_init(); evas = evas_new(); evas_output_method_set(evas, evas_render_method_lookup("software_x11")); evas_output_size_set(evas, win_w, win_h); @@ -158,5 +159,6 @@ main(int argc, char **argv) } } + evas_shutdown(); return 0; } diff --git a/legacy/evas/src/bin/evas_software_xcb_perf_load.c b/legacy/evas/src/bin/evas_software_xcb_perf_load.c index 9afbcd5286..5508e94dd4 100644 --- a/legacy/evas/src/bin/evas_software_xcb_perf_load.c +++ b/legacy/evas/src/bin/evas_software_xcb_perf_load.c @@ -133,6 +133,7 @@ main(int argc, char **argv) XCBMapWindow (c, win.window); + evas_init(); evas = evas_new(); evas_output_method_set(evas, evas_render_method_lookup("software_xcb")); evas_output_size_set(evas, win_w, win_h); @@ -256,5 +257,6 @@ main(int argc, char **argv) } } + evas_shutdown(); return 0; } diff --git a/legacy/evas/src/bin/evas_software_xcb_perf_test.c b/legacy/evas/src/bin/evas_software_xcb_perf_test.c index b98aad283d..89796dcb30 100644 --- a/legacy/evas/src/bin/evas_software_xcb_perf_test.c +++ b/legacy/evas/src/bin/evas_software_xcb_perf_test.c @@ -134,6 +134,7 @@ main(int argc, char **argv) XCBSync(c, 0); sleep(1); + evas_init(); evas = evas_new(); evas_output_method_set(evas, evas_render_method_lookup("software_xcb")); evas_output_size_set(evas, win_w, win_h); @@ -230,5 +231,6 @@ main(int argc, char **argv) } } + evas_shutdown(); return 0; } diff --git a/legacy/evas/src/bin/evas_xrender_x11_main.c b/legacy/evas/src/bin/evas_xrender_x11_main.c index 038a46314f..46295e75d7 100644 --- a/legacy/evas/src/bin/evas_xrender_x11_main.c +++ b/legacy/evas/src/bin/evas_xrender_x11_main.c @@ -50,6 +50,7 @@ main(int argc, char **argv) XSync(disp, False); /* test evas_free.... :) */ + evas_init(); evas = evas_new(); evas_output_method_set(evas, evas_render_method_lookup("xrender_x11")); evas_output_size_set(evas, win_w, win_h); @@ -128,5 +129,6 @@ main(int argc, char **argv) if (pause_me == 2) usleep(100000); } + evas_shutdown(); return 0; } diff --git a/legacy/evas/src/lib/Evas.h b/legacy/evas/src/lib/Evas.h index 97042faf0b..f53fd55b0c 100644 --- a/legacy/evas/src/lib/Evas.h +++ b/legacy/evas/src/lib/Evas.h @@ -27,6 +27,68 @@ * @brief These routines are used for Evas library interaction. */ +/* the evas module api */ +/***********************/ +/* the module api version */ +#define EVAS_MODULE_API_VERSION 1 + +/* the module types */ +typedef enum _Evas_Module_Type +{ + EVAS_MODULE_TYPE_ENGINE, + EVAS_MODULE_TYPE_OBJECT +} Evas_Module_Type; + +/* the module api structure, all modules should define this struct */ +typedef struct _Evas_Module_Api Evas_Module_Api; +struct _Evas_Module_Api +{ + int version; + Evas_Module_Type type; + const char *name; + const char *author; +}; + +/* the module structure */ +typedef struct _Evas_Module Evas_Module; +struct _Evas_Module +{ + Evas_Module_Api *api; + void *handle; /* the dlopen handle */ + char *path; /* the path where this modules is */ + char *name; /* the name of the dir where this module is */ + Evas_Module_Type type; /* the type detected by the path */ + struct + { + int (*open)(Evas_Module *); + void (*close)(Evas_Module *); + } func; + unsigned char loaded : 1; + + void *functions; /* this are the functions exported by the module */ + void *data; /* some internal data for the module i.e the id for engines */ +}; + + +/* the internals of the module api use this struct to reference a path with a module type + * instead of deduce the type from the path. + * */ +typedef struct _Evas_Module_Path Evas_Module_Path; +struct _Evas_Module_Path +{ + Evas_Module_Type type; + const char *path; +}; + +typedef struct _Evas_Module_Engine Evas_Module_Engine; +struct _Evas_Module_Engine +{ + int id; +}; + +/* end of evas module api */ +/**************************/ + typedef enum _Evas_Callback_Type { EVAS_CALLBACK_MOUSE_IN, /**< Mouse In Event */ diff --git a/legacy/evas/src/lib/Makefile.am b/legacy/evas/src/lib/Makefile.am index 58a4ee1d36..fad06dc2db 100644 --- a/legacy/evas/src/lib/Makefile.am +++ b/legacy/evas/src/lib/Makefile.am @@ -7,123 +7,12 @@ AUTOMAKE_OPTIONS = 1.4 foreign INCLUDES = -I. \ -I$(top_srcdir)/src/lib \ -I$(top_srcdir)/src/lib/include \ - @FREETYPE_CFLAGS@ @x_cflags@ @xcb_cflags@ @qt_cflags@ @DIRECTFB_CFLAGS@ @gl_cflags@ + @FREETYPE_CFLAGS@ lib_LTLIBRARIES = libevas.la -EXTRA_DIST = \ -Evas_Engine_Software_X11.h \ -Evas_Engine_Software_Xcb.h \ -Evas_Engine_DirectFB.h \ -Evas_Engine_FB.h \ -Evas_Engine_Buffer.h \ -Evas_Engine_Software_Win32_GDI.h \ -Evas_Engine_Software_Qtopia.h \ -Evas_Engine_GL_X11.h \ -Evas_Engine_Cairo_X11.h \ -Evas_Engine_XRender_X11.h - -if BUILD_ENGINE_SOFTWARE_X11 -ENGINE_SOFTWARE_X11 = engines/software_x11/libevas_engine_software_x11.la -ENGINE_SOFTWARE_X11_INC = Evas_Engine_Software_X11.h -else -ENGINE_SOFTWARE_X11 = -ENGINE_SOFTWARE_X11_INC = -endif - -if BUILD_ENGINE_SOFTWARE_XCB -ENGINE_SOFTWARE_XCB = engines/software_xcb/libevas_engine_software_xcb.la -ENGINE_SOFTWARE_XCB_INC = Evas_Engine_Software_Xcb.h -else -ENGINE_SOFTWARE_XCB = -ENGINE_SOFTWARE_XCB_INC = -endif - -if BUILD_ENGINE_DIRECTFB -ENGINE_DIRECTFB = engines/directfb/libevas_engine_directfb.la -ENGINE_DIRECTFB_INC = Evas_Engine_DirectFB.h -else -ENGINE_DIRECTFB = -ENGINE_DIRECTFB_INC = -endif - -if BUILD_ENGINE_FB -ENGINE_FB = engines/fb/libevas_engine_fb.la -ENGINE_FB_INC = Evas_Engine_FB.h -else -ENGINE_FB = -ENGINE_FB_INC = -endif - -if BUILD_ENGINE_BUFFER -ENGINE_BUFFER = engines/buffer/libevas_engine_buffer.la -ENGINE_BUFFER_INC = Evas_Engine_Buffer.h -else -ENGINE_BUFFER = -ENGINE_BUFFER_INC = -endif - -if BUILD_ENGINE_SOFTWARE_QTOPIA -ENGINE_SOFTWARE_QTOPIA = engines/software_qtopia/libevas_engine_software_qtopia.la -ENGINE_SOFTWARE_QTOPIA_INC = Evas_Engine_Software_Qtopia.h -else -ENGINE_SOFTWARE_QTOPIA = -ENGINE_SOFTWARE_QTOPIA_INC = -endif - -if BUILD_ENGINE_GL_COMMON -ENGINE_GL_COMMON = engines/gl_common/libevas_engine_gl_common.la -ENGINE_GL_COMMON_INC = -else -ENGINE_GL_COMMON = -ENGINE_GL_COMMON_INC = -endif - -if BUILD_ENGINE_GL_X11 -ENGINE_GL_X11 = engines/gl_x11/libevas_engine_gl_x11.la -ENGINE_GL_X11_INC = Evas_Engine_GL_X11.h -else -ENGINE_GL_X11 = -ENGINE_GL_X11_INC = -endif - -if BUILD_ENGINE_CAIRO_COMMON -ENGINE_CAIRO_COMMON = engines/cairo_common/libevas_engine_cairo_common.la -ENGINE_CAIRO_COMMON_INC = -else -ENGINE_CAIRO_COMMON = -ENGINE_CAIRO_COMMON_INC = -endif - -if BUILD_ENGINE_CAIRO_X11 -ENGINE_CAIRO_X11 = engines/cairo_x11/libevas_engine_cairo_x11.la -ENGINE_CAIRO_X11_INC = Evas_Engine_Cairo_X11.h -else -ENGINE_CAIRO_X11 = -ENGINE_CAIRO_X11_INC = -endif - -if BUILD_ENGINE_XRENDER_X11 -ENGINE_XRENDER_X11 = engines/xrender_x11/libevas_engine_xrender_x11.la -ENGINE_XRENDER_X11_INC = Evas_Engine_XRender_X11.h -else -ENGINE_XRENDER_X11 = -ENGINE_XRENDER_X11_INC = -endif - include_HEADERS = \ -Evas.h \ -$(ENGINE_SOFTWARE_X11_INC) \ -$(ENGINE_SOFTWARE_XCB_INC) \ -$(ENGINE_DIRECTFB_INC) \ -$(ENGINE_FB_INC) \ -$(ENGINE_BUFFER_INC) \ -$(ENGINE_SOFTWARE_QTOPIA_INC) \ -$(ENGINE_GL_COMMON_INC) \ -$(ENGINE_GL_X11_INC) \ -$(ENGINE_CAIRO_COMMON_INC) \ -$(ENGINE_CAIRO_X11_INC) \ -$(ENGINE_XRENDER_X11_INC) +Evas.h libevas_la_SOURCES = \ main.c @@ -135,20 +24,9 @@ libevas_la_LIBADD = \ imaging/libevas_imaging.la \ engines/common/libevas_engine_common.la \ -lm \ + -ldl \ @FREETYPE_LIBS@ \ - @png_libs@ @jpeg_libs@ @eet_libs@ @edb_libs@ \ - $(ENGINE_SOFTWARE_X11) \ - $(ENGINE_SOFTWARE_XCB) \ - $(ENGINE_DIRECTFB) \ - $(ENGINE_FB) \ - $(ENGINE_BUFFER) \ - $(ENGINE_SOFTWARE_QTOPIA) \ - $(ENGINE_GL_COMMON) \ - $(ENGINE_GL_X11) \ - $(ENGINE_CAIRO_COMMON) \ - $(ENGINE_CAIRO_X11) \ - $(ENGINE_XRENDER_X11) - + @png_libs@ @jpeg_libs@ @eet_libs@ @edb_libs@ libevas_la_DEPENDENCIES = \ $(top_builddir)/config.h \ @@ -156,17 +34,5 @@ libevas_la_DEPENDENCIES = \ data/libevas_data.la \ file/libevas_file.la \ imaging/libevas_imaging.la \ - engines/common/libevas_engine_common.la \ - $(ENGINE_SOFTWARE_X11) \ - $(ENGINE_SOFTWARE_XCB) \ - $(ENGINE_DIRECTFB) \ - $(ENGINE_FB) \ - $(ENGINE_BUFFER) \ - $(ENGINE_SOFTWARE_QTOPIA) \ - $(ENGINE_GL_COMMON) \ - $(ENGINE_GL_X11) \ - $(ENGINE_CAIRO_COMMON) \ - $(ENGINE_CAIRO_X11) \ - $(ENGINE_XRENDER_X11) - + engines/common/libevas_engine_common.la libevas_la_LDFLAGS = -version-info 1:0:0 diff --git a/legacy/evas/src/lib/canvas/Makefile.am b/legacy/evas/src/lib/canvas/Makefile.am index 966cac530f..90ea18b7f9 100644 --- a/legacy/evas/src/lib/canvas/Makefile.am +++ b/legacy/evas/src/lib/canvas/Makefile.am @@ -8,8 +8,7 @@ MAINTAINERCLEANFILES = Makefile.in INCLUDES = -I. \ -I$(top_srcdir)/src/lib \ -I$(top_srcdir)/src/lib/include \ - @FREETYPE_CFLAGS@ @x_cflags@ @DIRECTFB_CFLAGS@ \ - @eet_cflags@ @xcb_cflags@ + @FREETYPE_CFLAGS@ @eet_cflags@ noinst_LTLIBRARIES = libevas_canvas.la libevas_canvas_la_SOURCES = \ diff --git a/legacy/evas/src/lib/canvas/evas_main.c b/legacy/evas/src/lib/canvas/evas_main.c index 7104ca2b1d..77fa53802f 100644 --- a/legacy/evas/src/lib/canvas/evas_main.c +++ b/legacy/evas/src/lib/canvas/evas_main.c @@ -1,49 +1,24 @@ #include "evas_common.h" #include "evas_private.h" -#ifdef BUILD_ENGINE_SOFTWARE_X11 -#include "evas_engine_api_software_x11.h" -#endif -#ifdef BUILD_ENGINE_SOFTWARE_XCB -#include "evas_engine_api_software_xcb.h" -#endif -#ifdef BUILD_ENGINE_DIRECTFB -#include "evas_engine_api_directfb.h" -#endif -#ifdef BUILD_ENGINE_FB -#include "evas_engine_api_fb.h" -#endif -#ifdef BUILD_ENGINE_BUFFER -#include "evas_engine_api_buffer.h" -#endif -#ifdef BUILD_ENGINE_SOFTWARE_WIN32_GDI -#include "evas_engine_api_software_win32_gdi.h" -#endif -#ifdef BUILD_ENGINE_SOFTWARE_QTOPIA -#include "evas_engine_api_software_qtopia.h" -#endif -#ifdef BUILD_ENGINE_GL_X11 -#include "evas_engine_api_gl_x11.h" -#endif -#ifdef BUILD_ENGINE_CAIRO_X11 -#include "evas_engine_api_cairo_x11.h" -#endif -#ifdef BUILD_ENGINE_XRENDER_X11 -#include "evas_engine_api_xrender_x11.h" -#endif +extern Evas_List *evas_modules; static int initcount = 0; EAPI int evas_init(void) { + if (initcount == 0) + evas_module_init(); return ++initcount; } EAPI int evas_shutdown(void) { - if (--initcount == 0) + initcount--; + if (initcount == 0) { + evas_module_shutdown(); evas_font_dir_cache_free(); evas_common_shutdown(); } @@ -216,6 +191,7 @@ evas_free(Evas *e) EAPI void evas_output_method_set(Evas *e, int render_method) { + Evas_List *l; MAGIC_CHECK(e, Evas, MAGIC_EVAS); return; MAGIC_CHECK_END(); @@ -224,63 +200,24 @@ evas_output_method_set(Evas *e, int render_method) if (render_method == RENDER_METHOD_INVALID) return; /* if the engine is already set up - abort */ if (e->output.render_method != RENDER_METHOD_INVALID) return; - /* set the render method */ - e->output.render_method = render_method; -#ifdef BUILD_ENGINE_SOFTWARE_X11 - if (e->output.render_method == RENDER_METHOD_SOFTWARE_X11) - e->engine.func = &evas_engine_software_x11_func; - else -#endif -#ifdef BUILD_ENGINE_XRENDER_X11 - if (e->output.render_method == RENDER_METHOD_XRENDER_X11) - e->engine.func = &evas_engine_xrender_x11_func; - else -#endif -#ifdef BUILD_ENGINE_SOFTWARE_XCB - if (e->output.render_method == RENDER_METHOD_SOFTWARE_XCB) - e->engine.func = &evas_engine_software_xcb_func; - else -#endif -#ifdef BUILD_ENGINE_GL_X11 - if (e->output.render_method == RENDER_METHOD_GL_X11) - e->engine.func = &evas_engine_gl_x11_func; - else -#endif -#ifdef BUILD_ENGINE_CAIRO_X11 - if (e->output.render_method == RENDER_METHOD_CAIRO_X11) - e->engine.func = &evas_engine_cairo_x11_func; - else -#endif -#ifdef BUILD_ENGINE_DIRECTFB - if (e->output.render_method == RENDER_METHOD_DIRECTFB) - e->engine.func = &evas_engine_directfb_func; - else -#endif -#ifdef BUILD_ENGINE_FB - if (e->output.render_method == RENDER_METHOD_FB) - e->engine.func = &evas_engine_fb_func; - else -#endif -#ifdef BUILD_ENGINE_BUFFER - if (e->output.render_method == RENDER_METHOD_BUFFER) - e->engine.func = &evas_engine_buffer_func; - else -#endif -#ifdef BUILD_ENGINE_SOFTWARE_WIN32_GDI - if (e->output.render_method == RENDER_METHOD_SOFTWARE_WIN32_GDI) - e->engine.func = &evas_engine_software_win32_gdi_func; - else -#endif -#ifdef BUILD_ENGINE_SOFTWARE_QTOPIA - if (e->output.render_method == RENDER_METHOD_SOFTWARE_QTOPIA) - e->engine.func = &evas_engine_software_qtopia_func; - else -#endif - return; - /* get the engine info struct */ - if (e->output.render_method != RENDER_METHOD_INVALID) + /* iterate trough the list to find the id */ + for (l = evas_modules; l; l = l->next) { + Evas_Module *em; + Evas_Module_Engine *eme; + + em = l->data; + if (em->type != EVAS_MODULE_TYPE_ENGINE) continue; + if (!em->data) continue; + eme = (Evas_Module_Engine *)em->data; + if (eme->id != render_method) continue; + if (!evas_module_load(em)) return; + /* set the correct render */ + e->output.render_method = render_method; + e->engine.func = (em->functions); + /* get the engine info struct */ if (e->engine.func->info) e->engine.info = e->engine.func->info(e); + return; } } @@ -681,39 +618,25 @@ evas_coord_world_y_to_screen(Evas *e, Evas_Coord y) EAPI int evas_render_method_lookup(const char *name) { + static int i = 1; + Evas_Module *em; + Evas_Module_Engine *eem; + if (!name) return RENDER_METHOD_INVALID; - -#ifdef BUILD_ENGINE_SOFTWARE_X11 - if (!strcmp(name, "software_x11")) return RENDER_METHOD_SOFTWARE_X11; -#endif -#ifdef BUILD_ENGINE_XRENDER_X11 - if (!strcmp(name, "xrender_x11")) return RENDER_METHOD_XRENDER_X11; -#endif -#ifdef BUILD_ENGINE_SOFTWARE_XCB - if (!strcmp(name, "software_xcb")) return RENDER_METHOD_SOFTWARE_XCB; -#endif -#ifdef BUILD_ENGINE_GL_X11 - if (!strcmp(name, "gl_x11")) return RENDER_METHOD_GL_X11; -#endif -#ifdef BUILD_ENGINE_CAIRO_X11 - if (!strcmp(name, "cairo_x11")) return RENDER_METHOD_CAIRO_X11; -#endif -#ifdef BUILD_ENGINE_DIRECTFB - if (!strcmp(name, "directfb")) return RENDER_METHOD_DIRECTFB; -#endif -#ifdef BUILD_ENGINE_FB - if (!strcmp(name, "fb")) return RENDER_METHOD_FB; -#endif -#ifdef BUILD_ENGINE_BUFFER - if (!strcmp(name, "buffer")) return RENDER_METHOD_BUFFER; -#endif -#ifdef BUILD_ENGINE_SOFTWARE_WIN32_GDI - if (!strcmp(name, "software_win32_gdi")) return RENDER_METHOD_SOFTWARE_WIN32_GDI; -#endif -#ifdef BUILD_ENGINE_SOFTWARE_QTOPIA - if (!strcmp(name, "software_qtopia")) return RENDER_METHOD_SOFTWARE_QTOPIA; -#endif - return RENDER_METHOD_INVALID; + /* search on the engines list for the name */ + em = evas_module_find_type(EVAS_MODULE_TYPE_ENGINE, name); + + if(!em) return RENDER_METHOD_INVALID; + + eem = (Evas_Module_Engine *)em->data; + if(!eem) + { + eem = malloc(sizeof(Evas_Module_Engine)); + em->data = eem; + eem->id = i; + i++; + } + return eem->id; } /** @@ -756,6 +679,7 @@ evas_render_method_list(void) { Evas_List *methods = NULL; + /* FIXME: get from modules */ #ifdef BUILD_ENGINE_SOFTWARE_X11 methods = evas_list_append(methods, strdup("software_x11")); #endif diff --git a/legacy/evas/src/lib/engines/Makefile.am b/legacy/evas/src/lib/engines/Makefile.am index 36ecbbf48c..114f0837c2 100644 --- a/legacy/evas/src/lib/engines/Makefile.am +++ b/legacy/evas/src/lib/engines/Makefile.am @@ -1,16 +1,4 @@ MAINTAINERCLEANFILES = Makefile.in SUBDIRS = \ -common \ -software_x11 \ -software_xcb \ -fb \ -buffer \ -software_win32_gdi \ -software_qtopia \ -directfb \ -gl_common \ -gl_x11 \ -cairo_common \ -cairo_x11 \ -xrender_x11 +common diff --git a/legacy/evas/src/lib/engines/buffer/.cvsignore b/legacy/evas/src/lib/engines/buffer/.cvsignore deleted file mode 100644 index 21adad52b6..0000000000 --- a/legacy/evas/src/lib/engines/buffer/.cvsignore +++ /dev/null @@ -1,7 +0,0 @@ -Makefile.in -Makefile -.deps -.libs -libevas_engine_buffer.la -evas_engine.lo -evas_outbuf.lo diff --git a/legacy/evas/src/lib/engines/cairo_common/.cvsignore b/legacy/evas/src/lib/engines/cairo_common/.cvsignore deleted file mode 100644 index 8fccc281fb..0000000000 --- a/legacy/evas/src/lib/engines/cairo_common/.cvsignore +++ /dev/null @@ -1,6 +0,0 @@ -Makefile.in -Makefile -.deps -.libs -libevas_engine_cairo_common.la -*.lo diff --git a/legacy/evas/src/lib/engines/cairo_x11/.cvsignore b/legacy/evas/src/lib/engines/cairo_x11/.cvsignore deleted file mode 100644 index 8af4e82642..0000000000 --- a/legacy/evas/src/lib/engines/cairo_x11/.cvsignore +++ /dev/null @@ -1,6 +0,0 @@ -Makefile.in -Makefile -.deps -.libs -libevas_engine_cairo_x11.la -*.lo diff --git a/legacy/evas/src/lib/engines/directfb/.cvsignore b/legacy/evas/src/lib/engines/directfb/.cvsignore deleted file mode 100644 index dc4caac801..0000000000 --- a/legacy/evas/src/lib/engines/directfb/.cvsignore +++ /dev/null @@ -1,6 +0,0 @@ -Makefile.in -Makefile -.deps -.libs -*.lo -*.la diff --git a/legacy/evas/src/lib/engines/fb/.cvsignore b/legacy/evas/src/lib/engines/fb/.cvsignore deleted file mode 100644 index c0084e3498..0000000000 --- a/legacy/evas/src/lib/engines/fb/.cvsignore +++ /dev/null @@ -1,8 +0,0 @@ -Makefile.in -Makefile -.deps -.libs -libevas_engine_fb.la -evas_engine.lo -evas_fb_main.lo -evas_outbuf.lo diff --git a/legacy/evas/src/lib/engines/gl_common/.cvsignore b/legacy/evas/src/lib/engines/gl_common/.cvsignore deleted file mode 100644 index 50219633fd..0000000000 --- a/legacy/evas/src/lib/engines/gl_common/.cvsignore +++ /dev/null @@ -1,14 +0,0 @@ -Makefile.in -Makefile -.deps -.libs -libevas_engine_gl_common.la -evas_gl_font.lo -evas_gl_gradient.lo -evas_gl_image.lo -evas_gl_line.lo -evas_gl_misc.lo -evas_gl_polygon.lo -evas_gl_texture.lo -evas_gl_context.lo -evas_gl_rectangle.lo diff --git a/legacy/evas/src/lib/engines/gl_x11/.cvsignore b/legacy/evas/src/lib/engines/gl_x11/.cvsignore deleted file mode 100644 index 371a1bf8d1..0000000000 --- a/legacy/evas/src/lib/engines/gl_x11/.cvsignore +++ /dev/null @@ -1,7 +0,0 @@ -Makefile.in -Makefile -.deps -.libs -libevas_engine_gl_x11.la -evas_engine.lo -evas_x_main.lo diff --git a/legacy/evas/src/lib/engines/software_qtopia/.cvsignore b/legacy/evas/src/lib/engines/software_qtopia/.cvsignore deleted file mode 100644 index 8cb5c0556b..0000000000 --- a/legacy/evas/src/lib/engines/software_qtopia/.cvsignore +++ /dev/null @@ -1,4 +0,0 @@ -Makefile.in -Makefile -.deps -.libs diff --git a/legacy/evas/src/lib/engines/software_qtopia/evas_qt_main.cpp b/legacy/evas/src/lib/engines/software_qtopia/evas_qt_main.cpp deleted file mode 100644 index bca95bab19..0000000000 --- a/legacy/evas/src/lib/engines/software_qtopia/evas_qt_main.cpp +++ /dev/null @@ -1,109 +0,0 @@ -#include "evas_common.h" -#include "evas_engine.h" -#include -#include -#include -#include -#include - -//#define QVFB_BUG - -extern "C" { - QT_Direct * - evas_qt_main_direct_start(void *target) - { - QT_Direct *d; - QDirectPainter *dp; - QWidget *widget; - int i; - - widget = (QWidget *)target; - dp = new QDirectPainter(widget); - if (!dp) return NULL; - d = (QT_Direct *)calloc(1, sizeof(QT_Direct)); - if (!d) return NULL; - d->target = target; - d->direct = (void *)dp; - d->fb.data = dp->frameBuffer(); - d->fb.bpp = dp->depth(); - d->fb.width = dp->lineStep() / (d->fb.bpp / 8); - if (dp->depth() == 16) - { - d->fb.mask.r = 0xf800; - d->fb.mask.g = 0x07e0; - d->fb.mask.b = 0x001f; - } - else if (dp->depth() == 32) - { - d->fb.mask.r = 0x00ff0000; - d->fb.mask.g = 0x0000ff00; - d->fb.mask.b = 0x000000ff; - } - else - { - delete dp; - free(d); - return NULL; - } - d->fb.rotation = dp->transformOrientation() * 90; - d->rects.count = dp->numRects(); - if (d->rects.count > 0) - { - d->rects.r = (QT_Direct_Rect *)calloc(d->rects.count, sizeof(QT_Direct_Rect)); - if (d->rects.r) - { - for (i = 0; i < d->rects.count; i++) - { - QRect r; - - r = dp->rect(i); - if (d->fb.rotation == 0) - { - d->rects.r[i].x = r.x(); - d->rects.r[i].y = r.y(); - d->rects.r[i].w = r.width(); - d->rects.r[i].h = r.height(); - } - else if (d->fb.rotation == 270) - { - d->rects.r[i].x = r.y(); - d->rects.r[i].y = d->fb.width - r.x() - r.width(); - d->rects.r[i].w = r.height(); - d->rects.r[i].h = r.width(); - } - else if (d->fb.rotation == 90) - { - // FIXME: do - } - } - } - else - d->rects.count = 0; - } - d->location.x = dp->xOffset(); - d->location.y = dp->yOffset(); - d->location.w = dp->width(); - d->location.h = dp->height(); - return d; - } - void - evas_qt_main_direct_stop(QT_Direct *d) - { - QDirectPainter *dp; - -#ifdef QVFB_BUG - { - QWidget *target = (QWidget *)d->target; - QRect rect(d->updated.x, d->updated.y, - d->updated.w, d->updated.h); - QPainter p(target); - - p.fillRect(rect, QBrush::NoBrush); - } -#endif - dp = (QDirectPainter *)d->direct; - delete dp; - if (d->rects.r) free(d->rects.r); - free(d); - } -} diff --git a/legacy/evas/src/lib/engines/software_win32_gdi/.cvsignore b/legacy/evas/src/lib/engines/software_win32_gdi/.cvsignore deleted file mode 100644 index 8cb5c0556b..0000000000 --- a/legacy/evas/src/lib/engines/software_win32_gdi/.cvsignore +++ /dev/null @@ -1,4 +0,0 @@ -Makefile.in -Makefile -.deps -.libs diff --git a/legacy/evas/src/lib/engines/software_x11/.cvsignore b/legacy/evas/src/lib/engines/software_x11/.cvsignore deleted file mode 100644 index 01ff799c47..0000000000 --- a/legacy/evas/src/lib/engines/software_x11/.cvsignore +++ /dev/null @@ -1,10 +0,0 @@ -Makefile.in -Makefile -.deps -.libs -libevas_engine_software_x11.la -evas_engine.lo -evas_outbuf.lo -evas_x_color.lo -evas_x_main.lo -evas_x_buffer.lo diff --git a/legacy/evas/src/lib/engines/software_xcb/.cvsignore b/legacy/evas/src/lib/engines/software_xcb/.cvsignore deleted file mode 100644 index da7b4816bb..0000000000 --- a/legacy/evas/src/lib/engines/software_xcb/.cvsignore +++ /dev/null @@ -1,5 +0,0 @@ -.deps -.libs -Makefile -Makefile.in -*.lo diff --git a/legacy/evas/src/lib/engines/xrender_x11/.cvsignore b/legacy/evas/src/lib/engines/xrender_x11/.cvsignore deleted file mode 100644 index c22f260e44..0000000000 --- a/legacy/evas/src/lib/engines/xrender_x11/.cvsignore +++ /dev/null @@ -1,17 +0,0 @@ -Makefile.in -Makefile -.deps -.libs -libevas_engine_xrender_x11.la -evas_engine_font.lo -evas_engine_font.o -evas_engine_gradient.lo -evas_engine_gradient.o -evas_engine_image.lo -evas_engine_image.o -evas_engine.lo -evas_engine.o -evas_engine_ximage.lo -evas_engine_ximage.o -evas_engine_xrender.lo -evas_engine_xrender.o diff --git a/legacy/evas/src/lib/file/Makefile.am b/legacy/evas/src/lib/file/Makefile.am index 9514353b0e..6c7ed63369 100644 --- a/legacy/evas/src/lib/file/Makefile.am +++ b/legacy/evas/src/lib/file/Makefile.am @@ -12,6 +12,7 @@ INCLUDES = -I. \ noinst_LTLIBRARIES = libevas_file.la libevas_file_la_SOURCES = \ -evas_path.c +evas_path.c \ +evas_module.c libevas_file_la_DEPENDENCIES = $(top_builddir)/config.h diff --git a/legacy/evas/src/lib/file/evas_module.c b/legacy/evas/src/lib/file/evas_module.c new file mode 100644 index 0000000000..791cab8c7f --- /dev/null +++ b/legacy/evas/src/lib/file/evas_module.c @@ -0,0 +1,263 @@ +#ifdef __GNUC__ +# ifndef __USE_GNU +# define __USE_GNU +# endif +# ifndef _GNU_SOURCE +# define _GNU_SOURCE +# endif +# ifndef _BSD_SOURCE +# define _BSD_SOURCE +# endif +#endif + +#include // DIR, dirent +#include // dlopen,dlclose,etc + +#include +#include + +Evas_List *evas_modules = NULL; + +static Evas_List *evas_module_paths = NULL; + +static void +_evas_module_path_append(Evas_Module_Type type, char *path, char *subdir) +{ + Evas_Module_Path *mp; + char *buf; + + buf = evas_file_path_join(path, subdir); + if (!buf) return; + if (evas_file_path_exists(buf)) + { + mp = malloc(sizeof(Evas_Module_Path)); + mp->type = type; + mp->path = buf; + evas_module_paths = evas_list_append(evas_module_paths, mp); + } + else + free(buf); +} + + +/* this will alloc a list of paths to search for the modules */ +/* by now these are: */ +/* 1. ~/.evas/modules/ */ +/* 2. PREFIX/evas/modules/ */ +/* 3. dladdr/evas/modules/ */ +void +evas_module_paths_init(void) +{ + + char *prefix; + char *path; + int i; + Evas_List *paths = NULL; + Dl_info evas_dl; + + /* 1. ~/.evas/modules/ */ + prefix = getenv("HOME"); + path = malloc(strlen(prefix) + 1 + strlen("/.evas/modules")); + path[0] = 0; + strcpy(path, prefix); + strcat(path, "/.evas/modules"); + if (evas_file_path_exists(path)) + paths = evas_list_append(paths,path); + else + free(path); + +#ifdef HAVE_DLADDR + if (dladdr(evas_module_paths_init, &evas_dl)) + { + int length; + + length = strlen(rindex(evas_dl.dli_fname, '/')); + path = malloc(strlen(evas_dl.dli_fname) - length + strlen("/evas/modules") + 1); + strncpy(path, evas_dl.dli_fname, strlen(evas_dl.dli_fname) - length); + strcat(path, "/evas/modules"); + if (evas_file_path_exists(path)) + paths = evas_list_append(paths, path); + else + free(path); + } +#else + /* 2. PREFIX/evas/modules/ */ + prefix = PACKAGE_LIB_DIR; + path = malloc(strlen(prefix) + 1 + strlen("/evas/modules")); + strcpy(path, prefix); + strcat(path, "/evas/modules"); + if (evas_file_path_exists(path)) + paths = evas_list_append(paths, path); + else + free(path); +#endif + + /* append all the module types subdirs */ + while (paths) + { + /* here must be added all the types of modules and their subdirectory */ + /* do this on a separate function */ + /* 1. engines */ + _evas_module_path_append(EVAS_MODULE_TYPE_ENGINE, paths->data, "engines"); + _evas_module_path_append(EVAS_MODULE_TYPE_OBJECT, paths->data, "objects"); + free(paths->data); + paths = evas_list_remove_list(paths, paths); + } +} + +/* this will alloc an Evas_Module struct for each module + * it finds on the paths */ +void +evas_module_init(void) +{ + Evas_List *l; + int new_id = 1; + + printf("[init modules]\n"); + evas_module_paths_init(); + for (l = evas_module_paths; l; l = l->next) + { + Evas_Module_Path *mp; + DIR *dir; + struct dirent *de; + + mp = l->data; + + if (!(dir = opendir(mp->path))) break; + printf("[evas module] searching modules on %s\n", mp->path); + while (de = readdir(dir)) + { + char *buf; + + if ((!strcmp(de->d_name, ".")) || (!strcmp(de->d_name, ".."))) + continue; + buf = malloc(strlen(mp->path) + 1 + strlen(de->d_name) + 1); + sprintf(buf,"%s/%s", mp->path,de->d_name); + if (evas_file_path_is_dir(buf)) + { + Evas_Module *em; + + em = malloc(sizeof(Evas_Module)); + if (!em) continue; + em->name = strdup(de->d_name); + em->path = strdup(mp->path); + em->type = mp->type; + em->handle = NULL; + em->data = NULL; + if (em->type == EVAS_MODULE_TYPE_ENGINE) + { + Evas_Module_Engine *eme; + + eme = malloc(sizeof(Evas_Module_Engine)); + if (eme) + { + eme->id = new_id; + em->data = eme; + new_id++; + } + } + printf("[evas module] including module path %s/%s of type %d\n",em->path, em->name, em->type); + evas_modules = evas_list_append(evas_modules, em); + } + free(buf); + } + } +} + +/* will dlclose all the modules loaded and free all the structs */ +Evas_Module * +evas_module_find_type(Evas_Module_Type type, const char *name) +{ + Evas_List *l; + + for (l = evas_modules; l; l = l->next) + { + Evas_Module *em; + + em = (Evas_Module*)l->data; + if ((type == em->type) && (!strcmp(name,em->name))) + return em; + } + return NULL; +} + +int +evas_module_load(Evas_Module *em) +{ + char buf[4096]; + void *handle; + + snprintf(buf, sizeof(buf), "%s/%s/%s/module.so", + em->path, em->name, MODULE_ARCH); + if (!evas_file_path_exists(buf)) + { + printf("[evas module] error loading the module %s. It doesnt exists\n", buf); + free(buf); + return 0; + } + + handle = dlopen(buf, RTLD_LAZY); + if (handle) + { + em->handle = handle; + em->func.open = dlsym(em->handle, "module_open"); + em->func.close = dlsym(em->handle, "module_close"); + em->api = dlsym(em->handle, "evas_modapi"); + + if ((!em->func.open) || (!em->api) || (!em->func.close)) + goto error_dl; + /* check the api */ + if (em->api->version != EVAS_MODULE_API_VERSION) + { + printf("[evas module] error loading the modules %s. The version doesnt match\n", buf); + free(buf); + } + + em->func.open(em); + em->loaded = 1; + return 1; + } + error_dl: + { + char *err; + err = dlerror(); + printf("[evas module] error loading the module %s. %s\n", buf, err); + dlclose(handle); + em->handle = NULL; + free(buf); + return 0; + } +} + +void +evas_module_unload(Evas_Module *em) +{ + if (!em->loaded) + return; + if (em->handle) + { + em->func.close(em); + dlclose(em->handle); + em->loaded = 0; + } +} + +void +evas_module_shutdown(void) +{ + Evas_Module *em; + + while (evas_modules) + { + em = (Evas_Module *)evas_modules->data; + evas_module_unload(em); + if (em->name) free(em->name); + if (em->path) free(em->path); + if (em->data) free(em->data); + free(evas_modules->data); + evas_modules = evas_list_remove_list(evas_modules, evas_modules); + } +} + + + diff --git a/legacy/evas/src/lib/file/evas_path.c b/legacy/evas/src/lib/file/evas_path.c index 4bfa86491b..064d109ada 100644 --- a/legacy/evas/src/lib/file/evas_path.c +++ b/legacy/evas/src/lib/file/evas_path.c @@ -52,8 +52,8 @@ evas_file_path_exists(char *path) { struct stat st; - if (stat(path, &st) != -1) return 0; - return 1; + if (!stat(path, &st)) return 1; + return 0; } int @@ -61,7 +61,7 @@ evas_file_path_is_file(char *path) { struct stat st; - if (stat(path, &st) != -1) return 0; + if (stat(path, &st) == -1) return 0; if (S_ISREG(st.st_mode)) return 1; return 0; } @@ -71,7 +71,7 @@ evas_file_path_is_dir(char *path) { struct stat st; - if (stat(path, &st) != -1) return 0; + if (stat(path, &st) == -1) return 0; if (S_ISDIR(st.st_mode)) return 1; return 0; } diff --git a/legacy/evas/src/lib/include/Makefile.am b/legacy/evas/src/lib/include/Makefile.am index 8db86c5dea..3db9fcbaae 100644 --- a/legacy/evas/src/lib/include/Makefile.am +++ b/legacy/evas/src/lib/include/Makefile.am @@ -2,15 +2,6 @@ MAINTAINERCLEANFILES = Makefile.in EXTRA_DIST = \ evas_common.h \ -evas_engine_api_software_x11.h \ -evas_engine_api_software_xcb.h \ -evas_engine_api_directfb.h \ -evas_engine_api_fb.h \ -evas_engine_api_buffer.h \ -evas_engine_api_software_qtopia.h \ -evas_engine_api_gl_x11.h \ -evas_engine_api_cairo_x11.h \ -evas_engine_api_xrender_x11.h \ evas_gl_common.h \ evas_cairo_common.h \ evas_mmx.h \ diff --git a/legacy/evas/src/lib/include/evas_common.h b/legacy/evas/src/lib/include/evas_common.h index 3d5ca03a66..584fb3a6f3 100644 --- a/legacy/evas/src/lib/include/evas_common.h +++ b/legacy/evas/src/lib/include/evas_common.h @@ -12,6 +12,10 @@ #include "evas_options.h" +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif + #include #include #include diff --git a/legacy/evas/src/lib/include/evas_private.h b/legacy/evas/src/lib/include/evas_private.h index 09c3f47b49..be0742794a 100644 --- a/legacy/evas/src/lib/include/evas_private.h +++ b/legacy/evas/src/lib/include/evas_private.h @@ -10,17 +10,6 @@ /* complain when peole pass in wrong object types etc. */ #define MAGIC_DEBUG -#define RENDER_METHOD_SOFTWARE_X11 0x00000001 -#define RENDER_METHOD_DIRECTFB 0x00000002 -#define RENDER_METHOD_FB 0x00000003 -#define RENDER_METHOD_BUFFER 0x00000004 -#define RENDER_METHOD_SOFTWARE_WIN32_GDI 0x00000005 -#define RENDER_METHOD_SOFTWARE_QTOPIA 0x00000006 -#define RENDER_METHOD_GL_X11 0x00000007 -#define RENDER_METHOD_CAIRO_X11 0x00000008 -#define RENDER_METHOD_SOFTWARE_XCB 0x00000009 -#define RENDER_METHOD_XRENDER_X11 0x0000000a - #define RENDER_METHOD_INVALID 0x00000000 typedef struct _Evas_Layer Evas_Layer; @@ -646,7 +635,14 @@ struct _Evas_Mempool void *evas_mempool_malloc(Evas_Mempool *pool, int size); void evas_mempool_free(Evas_Mempool *pool, void *ptr); void *evas_mempool_calloc(Evas_Mempool *pool, int size); - + +void evas_module_paths_init(void); +void evas_module_init(void); +Evas_Module * evas_module_find_type(Evas_Module_Type type, const char *name); +int evas_module_load(Evas_Module *em); +void evas_module_unload(Evas_Module *em); +void evas_module_shutdown(void); + #ifdef __cplusplus } #endif diff --git a/legacy/evas/src/modules/Makefile.am b/legacy/evas/src/modules/Makefile.am new file mode 100644 index 0000000000..87cbd60410 --- /dev/null +++ b/legacy/evas/src/modules/Makefile.am @@ -0,0 +1,3 @@ +MAINTAINERCLEANFILES = Makefile.in + +SUBDIRS = engines diff --git a/legacy/evas/src/modules/engines/Evas_Engine_Buffer.h b/legacy/evas/src/modules/engines/Evas_Engine_Buffer.h new file mode 100644 index 0000000000..83eb57dc1d --- /dev/null +++ b/legacy/evas/src/modules/engines/Evas_Engine_Buffer.h @@ -0,0 +1,36 @@ +#ifndef _EVAS_ENGINE_BUFFER_H +#define _EVAS_ENGINE_BUFFER_H + +#define EVAS_ENGINE_BUFFER_DEPTH_ARGB32 0 +#define EVAS_ENGINE_BUFFER_DEPTH_BGRA32 1 +#define EVAS_ENGINE_BUFFER_DEPTH_RGB24 2 +#define EVAS_ENGINE_BUFFER_DEPTH_BGR24 3 + +typedef struct _Evas_Engine_Info_Buffer Evas_Engine_Info_Buffer; + +struct _Evas_Engine_Info_Buffer +{ + /* PRIVATE - don't mess with this baby or evas will poke its tongue out */ + /* at you and make nasty noises */ + Evas_Engine_Info magic; + + struct { + int depth_type; + + void *dest_buffer; + int dest_buffer_row_bytes; + + char use_color_key : 1; + int alpha_threshold; + int color_key_r; + int color_key_g; + int color_key_b; + struct { + 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); + } func; + } info; +}; +#endif + + diff --git a/legacy/evas/src/modules/engines/Evas_Engine_Cairo_X11.h b/legacy/evas/src/modules/engines/Evas_Engine_Cairo_X11.h new file mode 100644 index 0000000000..3a7d64aa54 --- /dev/null +++ b/legacy/evas/src/modules/engines/Evas_Engine_Cairo_X11.h @@ -0,0 +1,27 @@ +#ifndef _EVAS_ENGINE_CAIRO_X11_H +#define _EVAS_ENGINE_CAIRO_X11_H + +#include + +typedef struct _Evas_Engine_Info_Cairo_X11 Evas_Engine_Info_Cairo_X11; + +struct _Evas_Engine_Info_Cairo_X11 +{ + /* PRIVATE - don't mess with this baby or evas will poke its tongue out */ + /* at you and make nasty noises */ + Evas_Engine_Info magic; + + /* engine specific data & parameters it needs to set up */ + struct { + Display *display; + Drawable drawable; + Visual *visual; + Colormap colormap; + int depth; + } info; + /* engine specific function calls to query stuff about the destination */ + /* engine (what visual & colormap & depth to use, performance info etc. */ +}; +#endif + + diff --git a/legacy/evas/src/modules/engines/Evas_Engine_DirectFB.h b/legacy/evas/src/modules/engines/Evas_Engine_DirectFB.h new file mode 100644 index 0000000000..353e81c7a1 --- /dev/null +++ b/legacy/evas/src/modules/engines/Evas_Engine_DirectFB.h @@ -0,0 +1,22 @@ +#ifndef _EVAS_ENGINE_DIRECTFB_H +#define _EVAS_ENGINE_DIRECTFB_H + +#include + +typedef struct _Evas_Engine_Info_DirectFB Evas_Engine_Info_DirectFB; + +struct _Evas_Engine_Info_DirectFB +{ + /* PRIVATE - don't mess with this baby or evas will poke its tongue out */ + /* at you and make nasty noises */ + Evas_Engine_Info magic; + + struct { + IDirectFB *dfb; + IDirectFBSurface *surface; + DFBSurfaceDrawingFlags flags; + } info; +}; +#endif + + diff --git a/legacy/evas/src/modules/engines/Evas_Engine_FB.h b/legacy/evas/src/modules/engines/Evas_Engine_FB.h new file mode 100644 index 0000000000..7166e42a10 --- /dev/null +++ b/legacy/evas/src/modules/engines/Evas_Engine_FB.h @@ -0,0 +1,22 @@ +#ifndef _EVAS_ENGINE_FB_H +#define _EVAS_ENGINE_FB_H + +typedef struct _Evas_Engine_Info_FB Evas_Engine_Info_FB; + +struct _Evas_Engine_Info_FB +{ + /* PRIVATE - don't mess with this baby or evas will poke its tongue out */ + /* at you and make nasty noises */ + Evas_Engine_Info magic; + + struct { + + int virtual_terminal; + int device_number; + int refresh; + int rotation; + } info; +}; +#endif + + diff --git a/legacy/evas/src/modules/engines/Evas_Engine_GL_X11.h b/legacy/evas/src/modules/engines/Evas_Engine_GL_X11.h new file mode 100644 index 0000000000..853c2d9fe6 --- /dev/null +++ b/legacy/evas/src/modules/engines/Evas_Engine_GL_X11.h @@ -0,0 +1,32 @@ +#ifndef _EVAS_ENGINE_GL_X11_H +#define _EVAS_ENGINE_GL_X11_H + +#include + +typedef struct _Evas_Engine_Info_GL_X11 Evas_Engine_Info_GL_X11; + +struct _Evas_Engine_Info_GL_X11 +{ + /* PRIVATE - don't mess with this baby or evas will poke its tongue out */ + /* at you and make nasty noises */ + Evas_Engine_Info magic; + + /* engine specific data & parameters it needs to set up */ + struct { + Display *display; + Drawable drawable; + Visual *visual; + Colormap colormap; + int depth; + } info; + /* engine specific function calls to query stuff about the destination */ + /* engine (what visual & colormap & depth to use, performance info etc. */ + struct { + Visual * (*best_visual_get) (Display *disp, int screen); + Colormap (*best_colormap_get) (Display *disp, int screen); + int (*best_depth_get) (Display *disp, int screen); + } func; +}; +#endif + + diff --git a/legacy/evas/src/modules/engines/Evas_Engine_Software_Qtopia.h b/legacy/evas/src/modules/engines/Evas_Engine_Software_Qtopia.h new file mode 100644 index 0000000000..5b863b0e22 --- /dev/null +++ b/legacy/evas/src/modules/engines/Evas_Engine_Software_Qtopia.h @@ -0,0 +1,31 @@ +#ifndef _EVAS_ENGINE_SOFTWARE_QTOPIA_H +#define _EVAS_ENGINE_SOFTWARE_QTOPIA_H + +#ifdef EVAS_COMMON_H +#ifdef EVAS_PRIVATE_H +typedef void QWidget; +#endif +#endif + +#ifndef EVAS_COMMON_H +#ifndef EVAS_PRIVATE_H +#include +#endif +#endif + +typedef struct _Evas_Engine_Info_Software_Qtopia Evas_Engine_Info_Software_Qtopia; + +struct _Evas_Engine_Info_Software_Qtopia +{ + /* PRIVATE - don't mess with this baby or evas will poke its tongue out */ + /* at you and make nasty noises */ + Evas_Engine_Info magic; + + struct { + QWidget *target; + int rotation; + } info; +}; +#endif + + diff --git a/legacy/evas/src/modules/engines/Evas_Engine_Software_Win32_GDI.h b/legacy/evas/src/modules/engines/Evas_Engine_Software_Win32_GDI.h new file mode 100644 index 0000000000..22129b2209 --- /dev/null +++ b/legacy/evas/src/modules/engines/Evas_Engine_Software_Win32_GDI.h @@ -0,0 +1,28 @@ +#ifndef _EVAS_ENGINE_SOFTWARE_WIN32_GDI_H +#define _EVAS_ENGINE_SOFTWARE_WIN32_GDI_H + +typedef struct _Evas_Engine_Info_Software_Win32_GDI Evas_Engine_Info_Software_Win32_GDI; + +struct _Evas_Engine_Info_Software_Win32_GDI +{ + /* PRIVATE - don't mess with this baby or evas will poke its tongue out */ + /* at you and make nasty noises */ + Evas_Engine_Info magic; + + /* engine specific data & parameters it needs to set up */ + struct { + HWND hwnd; +/* + Colormap colormap; +*/ + + int depth; + int rotation; + + } info; + /* engine specific function calls to query stuff about the destination */ + /* engine (what visual & colormap & depth to use, performance info etc. */ +}; +#endif + + diff --git a/legacy/evas/src/modules/engines/Evas_Engine_Software_X11.h b/legacy/evas/src/modules/engines/Evas_Engine_Software_X11.h new file mode 100644 index 0000000000..93f791bbe3 --- /dev/null +++ b/legacy/evas/src/modules/engines/Evas_Engine_Software_X11.h @@ -0,0 +1,48 @@ +#ifndef _EVAS_ENGINE_SOFTWARE_X11_H +#define _EVAS_ENGINE_SOFTWARE_X11_H + +#include + +typedef struct _Evas_Engine_Info_Software_X11 Evas_Engine_Info_Software_X11; + +struct _Evas_Engine_Info_Software_X11 +{ + /* PRIVATE - don't mess with this baby or evas will poke its tongue out */ + /* at you and make nasty noises */ + Evas_Engine_Info magic; + + /* engine specific data & parameters it needs to set up */ + struct { + Display *display; + Drawable drawable; + Pixmap mask; + Visual *visual; + Colormap colormap; + int depth; + int rotation; + + int alloc_grayscale : 1; + int debug : 1; + int shape_dither : 1; + + int alloc_colors_max; + } info; + /* engine specific function calls to query stuff about the destination */ + /* engine (what visual & colormap & depth to use, performance info etc. */ + struct { + Visual * (*best_visual_get) (Display *disp, int screen); + Colormap (*best_colormap_get) (Display *disp, int screen); + int (*best_depth_get) (Display *disp, int screen); + + Evas_Performance *(*performance_test) (Evas *e, Display *disp, Visual *vis, Colormap cmap, Drawable draw, int depth); + void (*performance_free) (Evas_Performance *perf); + char * (*performance_data_get) (Evas_Performance *perf); + char * (*performance_key_get) (Evas_Performance *perf); + Evas_Performance *(*performance_new) (Evas *e, Display *disp, Visual *vis, Colormap cmap, Drawable draw, int depth); + void (*performance_build) (Evas_Performance *perf, const char *data); + void (*performance_device_store) (Evas_Performance *perf); + } func; +}; +#endif + + diff --git a/legacy/evas/src/modules/engines/Evas_Engine_Software_Xcb.h b/legacy/evas/src/modules/engines/Evas_Engine_Software_Xcb.h new file mode 100644 index 0000000000..9a31489db0 --- /dev/null +++ b/legacy/evas/src/modules/engines/Evas_Engine_Software_Xcb.h @@ -0,0 +1,58 @@ +#ifndef _EVAS_ENGINE_SOFTWARE_XCB_H +#define _EVAS_ENGINE_SOFTWARE_XCB_H + +#include + +typedef struct _Evas_Engine_Info_Software_Xcb Evas_Engine_Info_Software_Xcb; + +struct _Evas_Engine_Info_Software_Xcb +{ + /* PRIVATE - don't mess with this baby or evas will poke its tongue out */ + /* at you and make nasty noises */ + Evas_Engine_Info magic; + + /* engine specific data & parameters it needs to set up */ + struct { + XCBConnection *conn; + XCBDRAWABLE drawable; + XCBDRAWABLE mask; + XCBVISUALTYPE *visual; + XCBCOLORMAP colormap; + int depth; + int rotation; + + int alloc_grayscale : 1; + int debug : 1; + int shape_dither : 1; + + int alloc_colors_max; + } info; + /* engine specific function calls to query stuff about the destination */ + /* engine (what visual & colormap & depth to use, performance info etc. */ + struct { + XCBVISUALTYPE * (*best_visual_get) (XCBConnection *conn, int screen); + XCBCOLORMAP (*best_colormap_get) (XCBConnection *conn, int screen); + int (*best_depth_get) (XCBConnection *conn, int screen); + + Evas_Performance *(*performance_test) (Evas *e, + XCBConnection *conn, + XCBVISUALTYPE *vis, + XCBCOLORMAP cmap, + XCBDRAWABLE draw, + int depth); + void (*performance_free) (Evas_Performance *perf); + char * (*performance_data_get) (Evas_Performance *perf); + char * (*performance_key_get) (Evas_Performance *perf); + Evas_Performance *(*performance_new) (Evas *e, + XCBConnection *conn, + XCBVISUALTYPE *vis, + XCBCOLORMAP cmap, + XCBDRAWABLE draw, + int depth); + void (*performance_build) (Evas_Performance *perf, + const char *data); + void (*performance_device_store) (Evas_Performance *perf); + } func; +}; + +#endif /* _EVAS_ENGINE_SOFTWARE_XCB_H */ diff --git a/legacy/evas/src/modules/engines/Evas_Engine_XRender_X11.h b/legacy/evas/src/modules/engines/Evas_Engine_XRender_X11.h new file mode 100644 index 0000000000..3ce7744886 --- /dev/null +++ b/legacy/evas/src/modules/engines/Evas_Engine_XRender_X11.h @@ -0,0 +1,25 @@ +#ifndef _EVAS_ENGINE_XRENDER_X11_H +#define _EVAS_ENGINE_XRENDER_X11_H + +#include + +typedef struct _Evas_Engine_Info_XRender_X11 Evas_Engine_Info_XRender_X11; + +struct _Evas_Engine_Info_XRender_X11 +{ + /* PRIVATE - don't mess with this baby or evas will poke its tongue out */ + /* at you and make nasty noises */ + Evas_Engine_Info magic; + + /* engine specific data & parameters it needs to set up */ + struct { + Display *display; + Drawable drawable; + Pixmap mask; + Visual *visual; + unsigned char destination_alpha : 1; + } info; +}; +#endif + + diff --git a/legacy/evas/src/modules/engines/Makefile.am b/legacy/evas/src/modules/engines/Makefile.am new file mode 100644 index 0000000000..ecd2166cba --- /dev/null +++ b/legacy/evas/src/modules/engines/Makefile.am @@ -0,0 +1,14 @@ +MAINTAINERCLEANFILES = Makefile.in + +SUBDIRS = buffer \ +cairo_common \ +cairo_x11 \ +directfb \ +fb \ +gl_common \ +gl_x11 \ +software_qtopia \ +software_win32_gdi \ +software_x11 \ +software_xcb \ +xrender_x11 diff --git a/legacy/evas/src/lib/engines/buffer/Makefile.am b/legacy/evas/src/modules/engines/buffer/Makefile.am similarity index 64% rename from legacy/evas/src/lib/engines/buffer/Makefile.am rename to legacy/evas/src/modules/engines/buffer/Makefile.am index 4dbcb24357..5c705efbda 100644 --- a/legacy/evas/src/lib/engines/buffer/Makefile.am +++ b/legacy/evas/src/modules/engines/buffer/Makefile.am @@ -12,14 +12,20 @@ INCLUDES = -I. \ if BUILD_ENGINE_BUFFER -noinst_LTLIBRARIES = libevas_engine_buffer.la -libevas_engine_buffer_la_SOURCES = \ +pkgdir = $(libdir)/evas/modules/engines/buffer/$(MODULE_ARCH) + +pkg_LTLIBRARIES = module.la +module_la_SOURCES = \ evas_engine.h \ evas_engine.c \ evas_outbuf.c -libevas_engine_buffer_la_DEPENDENCIES = \ +module_la_LDFLAGS = -module -avoid-version \ + -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs + +module_la_DEPENDENCIES = \ $(top_builddir)/config.h + endif diff --git a/legacy/evas/src/lib/engines/buffer/evas_engine.c b/legacy/evas/src/modules/engines/buffer/evas_engine.c similarity index 99% rename from legacy/evas/src/lib/engines/buffer/evas_engine.c rename to legacy/evas/src/modules/engines/buffer/evas_engine.c index 7a5dcb4628..3072a6b832 100644 --- a/legacy/evas/src/lib/engines/buffer/evas_engine.c +++ b/legacy/evas/src/modules/engines/buffer/evas_engine.c @@ -1,7 +1,6 @@ #include "evas_common.h" #include "evas_private.h" #include "evas_engine.h" -#include "evas_engine_api_buffer.h" #include "Evas_Engine_Buffer.h" static void *evas_engine_buffer_info(Evas *e); @@ -1268,3 +1267,26 @@ evas_engine_buffer_font_cache_get(void *data) re = (Render_Engine *)data; return evas_common_font_cache_get(); } + + +int +module_open(Evas_Module *em) +{ + if (!em) return 0; + em->functions = (void *)(&evas_engine_buffer_func); + return 1; +} + +void +module_close(void) +{ + +} + +Evas_Module_Api evas_modapi = +{ + EVAS_MODULE_API_VERSION, + EVAS_MODULE_TYPE_ENGINE, + "buffer", + "none" +}; diff --git a/legacy/evas/src/lib/engines/buffer/evas_engine.h b/legacy/evas/src/modules/engines/buffer/evas_engine.h similarity index 100% rename from legacy/evas/src/lib/engines/buffer/evas_engine.h rename to legacy/evas/src/modules/engines/buffer/evas_engine.h diff --git a/legacy/evas/src/lib/engines/buffer/evas_outbuf.c b/legacy/evas/src/modules/engines/buffer/evas_outbuf.c similarity index 100% rename from legacy/evas/src/lib/engines/buffer/evas_outbuf.c rename to legacy/evas/src/modules/engines/buffer/evas_outbuf.c diff --git a/legacy/evas/src/lib/engines/cairo_common/Makefile.am b/legacy/evas/src/modules/engines/cairo_common/Makefile.am similarity index 100% rename from legacy/evas/src/lib/engines/cairo_common/Makefile.am rename to legacy/evas/src/modules/engines/cairo_common/Makefile.am diff --git a/legacy/evas/src/lib/engines/cairo_common/evas_cairo_main.c b/legacy/evas/src/modules/engines/cairo_common/evas_cairo_main.c similarity index 100% rename from legacy/evas/src/lib/engines/cairo_common/evas_cairo_main.c rename to legacy/evas/src/modules/engines/cairo_common/evas_cairo_main.c diff --git a/legacy/evas/src/lib/engines/cairo_common/evas_cairo_private.h b/legacy/evas/src/modules/engines/cairo_common/evas_cairo_private.h similarity index 100% rename from legacy/evas/src/lib/engines/cairo_common/evas_cairo_private.h rename to legacy/evas/src/modules/engines/cairo_common/evas_cairo_private.h diff --git a/legacy/evas/src/lib/engines/cairo_x11/Makefile.am b/legacy/evas/src/modules/engines/cairo_x11/Makefile.am similarity index 58% rename from legacy/evas/src/lib/engines/cairo_x11/Makefile.am rename to legacy/evas/src/modules/engines/cairo_x11/Makefile.am index 8111824558..5a014bd8ee 100644 --- a/legacy/evas/src/lib/engines/cairo_x11/Makefile.am +++ b/legacy/evas/src/modules/engines/cairo_x11/Makefile.am @@ -12,15 +12,19 @@ INCLUDES = -I. \ if BUILD_ENGINE_CAIRO_X11 -noinst_LTLIBRARIES = libevas_engine_cairo_x11.la -libevas_engine_cairo_x11_la_SOURCES = \ +pkgdir = $(libdir)/evas/modules/engines/cairo_x11/$(MODULE_ARCH) + +pkg_LTLIBRARIES = module.la + +module_la_SOURCES = \ evas_engine.h \ evas_engine.c \ evas_x_main.c -libevas_engine_cairo_x11_la_LIBADD = @x_libs@ @CAIRO_LIBS@ +module_la_LIBADD = @CAIRO_LIBS@ @x_libs@ ../cairo_common/libevas_engine_cairo_common.la +module_la_LDFLAGS = -module -avoid-version -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs -libevas_engine_cairo_x11_la_DEPENDENCIES = \ +module_la_DEPENDENCIES = \ $(top_builddir)/config.h endif diff --git a/legacy/evas/src/lib/engines/cairo_x11/evas_engine.c b/legacy/evas/src/modules/engines/cairo_x11/evas_engine.c similarity index 99% rename from legacy/evas/src/lib/engines/cairo_x11/evas_engine.c rename to legacy/evas/src/modules/engines/cairo_x11/evas_engine.c index abda2e085a..7028032baf 100644 --- a/legacy/evas/src/lib/engines/cairo_x11/evas_engine.c +++ b/legacy/evas/src/modules/engines/cairo_x11/evas_engine.c @@ -1285,3 +1285,23 @@ evas_engine_cairo_x11_font_cache_get(void *data) re = (Render_Engine *)data; return 0; } + +int module_open(Evas_Module *em) +{ + if (!em) return 0; + em->functions = (void *)(&evas_engine_cairo_x11_func); + return 1; +} + +void module_close(void) +{ + +} + +Evas_Module_Api evas_modapi = +{ + EVAS_MODULE_API_VERSION, + EVAS_MODULE_TYPE_ENGINE, + "cairo_x11", + "none" +}; diff --git a/legacy/evas/src/lib/engines/cairo_x11/evas_engine.h b/legacy/evas/src/modules/engines/cairo_x11/evas_engine.h similarity index 100% rename from legacy/evas/src/lib/engines/cairo_x11/evas_engine.h rename to legacy/evas/src/modules/engines/cairo_x11/evas_engine.h diff --git a/legacy/evas/src/lib/engines/cairo_x11/evas_x_main.c b/legacy/evas/src/modules/engines/cairo_x11/evas_x_main.c similarity index 100% rename from legacy/evas/src/lib/engines/cairo_x11/evas_x_main.c rename to legacy/evas/src/modules/engines/cairo_x11/evas_x_main.c diff --git a/legacy/evas/src/lib/engines/directfb/Makefile.am b/legacy/evas/src/modules/engines/directfb/Makefile.am similarity index 67% rename from legacy/evas/src/lib/engines/directfb/Makefile.am rename to legacy/evas/src/modules/engines/directfb/Makefile.am index a8985914e5..166114b987 100644 --- a/legacy/evas/src/lib/engines/directfb/Makefile.am +++ b/legacy/evas/src/modules/engines/directfb/Makefile.am @@ -12,16 +12,20 @@ INCLUDES = -I. \ if BUILD_ENGINE_DIRECTFB -noinst_LTLIBRARIES = libevas_engine_directfb.la -libevas_engine_directfb_la_SOURCES = \ +pkgdir = $(libdir)/evas/modules/engines/directfb/$(MODULE_ARCH) +pkg_LTLIBRARIES = module.la + +module_la_SOURCES = \ evas_engine_dfb.c \ evas_engine_dfb_image_objects.c \ evas_engine_dfb_image_objects.h \ evas_engine_dfb.h -libevas_engine_directfb_la_LIBADD = @DIRECTFB_LIBS@ +module_la_LIBADD = @DIRECTFB_LIBS@ +module_la_LDFLAGS = -module -avoid-version \ + -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs -libevas_engine_directfb_la_DEPENDENCIES = \ +module_la_DEPENDENCIES = \ $(top_builddir)/config.h endif diff --git a/legacy/evas/src/lib/engines/directfb/evas_engine_dfb.c b/legacy/evas/src/modules/engines/directfb/evas_engine_dfb.c similarity index 98% rename from legacy/evas/src/lib/engines/directfb/evas_engine_dfb.c rename to legacy/evas/src/modules/engines/directfb/evas_engine_dfb.c index f12b04a320..d7dba934db 100644 --- a/legacy/evas/src/lib/engines/directfb/evas_engine_dfb.c +++ b/legacy/evas/src/modules/engines/directfb/evas_engine_dfb.c @@ -127,7 +127,7 @@ evas_engine_directfb_setup(Evas * e, void *in) info = (Evas_Engine_Info_DirectFB *) in; /* if we arent set to directfb, why the hell do we get called?! */ - if (evas_output_method_get(e) != RENDER_METHOD_DIRECTFB) + if (evas_output_method_get(e) != evas_render_method_lookup("directfb")) return; /* lets just set up */ e->engine.data.output = evas_engine_directfb_output_setup(e->output.w, @@ -1085,3 +1085,24 @@ evas_engine_directfb_font_cache_get(void *data) return evas_common_font_cache_get(); } + +int module_open(Evas_Module *em) +{ + if (!em) return 0; + em->functions = (void *)(&evas_engine_directfb_func); + return 1; +} + +void module_close(void) +{ + +} + +Evas_Module_Api evas_modapi = +{ + EVAS_MODULE_API_VERSION, + EVAS_MODULE_TYPE_ENGINE, + "directfb", + "none" +}; + diff --git a/legacy/evas/src/lib/engines/directfb/evas_engine_dfb.h b/legacy/evas/src/modules/engines/directfb/evas_engine_dfb.h similarity index 99% rename from legacy/evas/src/lib/engines/directfb/evas_engine_dfb.h rename to legacy/evas/src/modules/engines/directfb/evas_engine_dfb.h index e9e8935689..4abd18625d 100644 --- a/legacy/evas/src/lib/engines/directfb/evas_engine_dfb.h +++ b/legacy/evas/src/modules/engines/directfb/evas_engine_dfb.h @@ -2,7 +2,6 @@ #define EVAS_ENGINE_DFB_H #include "evas_common.h" #include "evas_private.h" -#include "evas_engine_api_directfb.h" #include "Evas_Engine_DirectFB.h" #include "evas_engine_dfb_image_objects.h" diff --git a/legacy/evas/src/lib/engines/directfb/evas_engine_dfb_image_objects.c b/legacy/evas/src/modules/engines/directfb/evas_engine_dfb_image_objects.c similarity index 100% rename from legacy/evas/src/lib/engines/directfb/evas_engine_dfb_image_objects.c rename to legacy/evas/src/modules/engines/directfb/evas_engine_dfb_image_objects.c diff --git a/legacy/evas/src/lib/engines/directfb/evas_engine_dfb_image_objects.h b/legacy/evas/src/modules/engines/directfb/evas_engine_dfb_image_objects.h similarity index 100% rename from legacy/evas/src/lib/engines/directfb/evas_engine_dfb_image_objects.h rename to legacy/evas/src/modules/engines/directfb/evas_engine_dfb_image_objects.h diff --git a/legacy/evas/src/lib/engines/fb/Makefile.am b/legacy/evas/src/modules/engines/fb/Makefile.am similarity index 65% rename from legacy/evas/src/lib/engines/fb/Makefile.am rename to legacy/evas/src/modules/engines/fb/Makefile.am index 5f9d44c74b..f72bfe666d 100644 --- a/legacy/evas/src/lib/engines/fb/Makefile.am +++ b/legacy/evas/src/modules/engines/fb/Makefile.am @@ -13,17 +13,23 @@ INCLUDES = -I. \ if BUILD_ENGINE_FB -noinst_LTLIBRARIES = libevas_engine_fb.la -libevas_engine_fb_la_SOURCES = \ +pkgdir = $(libdir)/evas/modules/engines/fb/$(MODULE_ARCH) + +pkg_LTLIBRARIES = module.la +module_la_SOURCES = \ evas_engine.h \ evas_fb.h \ evas_engine.c \ evas_fb_main.c \ evas_outbuf.c -libevas_engine_fb_la_DEPENDENCIES = \ +module_la_DEPENDENCIES = \ $(top_builddir)/config.h +module_la_LDFLAGS = -module -avoid-version \ + -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs + + endif EXTRA_DIST = \ diff --git a/legacy/evas/src/lib/engines/fb/evas_engine.c b/legacy/evas/src/modules/engines/fb/evas_engine.c similarity index 99% rename from legacy/evas/src/lib/engines/fb/evas_engine.c rename to legacy/evas/src/modules/engines/fb/evas_engine.c index 2425ebea0a..25b832bcad 100644 --- a/legacy/evas/src/lib/engines/fb/evas_engine.c +++ b/legacy/evas/src/modules/engines/fb/evas_engine.c @@ -1,7 +1,6 @@ #include "evas_common.h" #include "evas_private.h" #include "evas_engine.h" -#include "evas_engine_api_fb.h" #include "Evas_Engine_FB.h" static void *evas_engine_fb_info(Evas *e); @@ -1179,3 +1178,24 @@ evas_engine_fb_font_cache_get(void *data) re = (Render_Engine *)data; return evas_common_font_cache_get(); } + +int module_open(Evas_Module *em) +{ + if (!em) return 0; + em->functions = (void *)(&evas_engine_fb_func); + return 1; +} + +void module_close(void) +{ + +} + +Evas_Module_Api evas_modapi = +{ + EVAS_MODULE_API_VERSION, + EVAS_MODULE_TYPE_ENGINE, + "fb", + "none" +}; + diff --git a/legacy/evas/src/lib/engines/fb/evas_engine.h b/legacy/evas/src/modules/engines/fb/evas_engine.h similarity index 100% rename from legacy/evas/src/lib/engines/fb/evas_engine.h rename to legacy/evas/src/modules/engines/fb/evas_engine.h diff --git a/legacy/evas/src/lib/engines/fb/evas_fb.h b/legacy/evas/src/modules/engines/fb/evas_fb.h similarity index 100% rename from legacy/evas/src/lib/engines/fb/evas_fb.h rename to legacy/evas/src/modules/engines/fb/evas_fb.h diff --git a/legacy/evas/src/lib/engines/fb/evas_fb_main.c b/legacy/evas/src/modules/engines/fb/evas_fb_main.c similarity index 100% rename from legacy/evas/src/lib/engines/fb/evas_fb_main.c rename to legacy/evas/src/modules/engines/fb/evas_fb_main.c diff --git a/legacy/evas/src/lib/engines/fb/evas_outbuf.c b/legacy/evas/src/modules/engines/fb/evas_outbuf.c similarity index 100% rename from legacy/evas/src/lib/engines/fb/evas_outbuf.c rename to legacy/evas/src/modules/engines/fb/evas_outbuf.c diff --git a/legacy/evas/src/lib/engines/gl_common/Makefile.am b/legacy/evas/src/modules/engines/gl_common/Makefile.am similarity index 100% rename from legacy/evas/src/lib/engines/gl_common/Makefile.am rename to legacy/evas/src/modules/engines/gl_common/Makefile.am diff --git a/legacy/evas/src/lib/engines/gl_common/evas_gl_context.c b/legacy/evas/src/modules/engines/gl_common/evas_gl_context.c similarity index 100% rename from legacy/evas/src/lib/engines/gl_common/evas_gl_context.c rename to legacy/evas/src/modules/engines/gl_common/evas_gl_context.c diff --git a/legacy/evas/src/lib/engines/gl_common/evas_gl_font.c b/legacy/evas/src/modules/engines/gl_common/evas_gl_font.c similarity index 100% rename from legacy/evas/src/lib/engines/gl_common/evas_gl_font.c rename to legacy/evas/src/modules/engines/gl_common/evas_gl_font.c diff --git a/legacy/evas/src/lib/engines/gl_common/evas_gl_gradient.c b/legacy/evas/src/modules/engines/gl_common/evas_gl_gradient.c similarity index 100% rename from legacy/evas/src/lib/engines/gl_common/evas_gl_gradient.c rename to legacy/evas/src/modules/engines/gl_common/evas_gl_gradient.c diff --git a/legacy/evas/src/lib/engines/gl_common/evas_gl_image.c b/legacy/evas/src/modules/engines/gl_common/evas_gl_image.c similarity index 100% rename from legacy/evas/src/lib/engines/gl_common/evas_gl_image.c rename to legacy/evas/src/modules/engines/gl_common/evas_gl_image.c diff --git a/legacy/evas/src/lib/engines/gl_common/evas_gl_line.c b/legacy/evas/src/modules/engines/gl_common/evas_gl_line.c similarity index 100% rename from legacy/evas/src/lib/engines/gl_common/evas_gl_line.c rename to legacy/evas/src/modules/engines/gl_common/evas_gl_line.c diff --git a/legacy/evas/src/lib/engines/gl_common/evas_gl_misc.c b/legacy/evas/src/modules/engines/gl_common/evas_gl_misc.c similarity index 100% rename from legacy/evas/src/lib/engines/gl_common/evas_gl_misc.c rename to legacy/evas/src/modules/engines/gl_common/evas_gl_misc.c diff --git a/legacy/evas/src/lib/engines/gl_common/evas_gl_polygon.c b/legacy/evas/src/modules/engines/gl_common/evas_gl_polygon.c similarity index 100% rename from legacy/evas/src/lib/engines/gl_common/evas_gl_polygon.c rename to legacy/evas/src/modules/engines/gl_common/evas_gl_polygon.c diff --git a/legacy/evas/src/lib/engines/gl_common/evas_gl_private.h b/legacy/evas/src/modules/engines/gl_common/evas_gl_private.h similarity index 100% rename from legacy/evas/src/lib/engines/gl_common/evas_gl_private.h rename to legacy/evas/src/modules/engines/gl_common/evas_gl_private.h diff --git a/legacy/evas/src/lib/engines/gl_common/evas_gl_rectangle.c b/legacy/evas/src/modules/engines/gl_common/evas_gl_rectangle.c similarity index 100% rename from legacy/evas/src/lib/engines/gl_common/evas_gl_rectangle.c rename to legacy/evas/src/modules/engines/gl_common/evas_gl_rectangle.c diff --git a/legacy/evas/src/lib/engines/gl_common/evas_gl_texture.c b/legacy/evas/src/modules/engines/gl_common/evas_gl_texture.c similarity index 100% rename from legacy/evas/src/lib/engines/gl_common/evas_gl_texture.c rename to legacy/evas/src/modules/engines/gl_common/evas_gl_texture.c diff --git a/legacy/evas/src/lib/engines/gl_x11/Makefile.am b/legacy/evas/src/modules/engines/gl_x11/Makefile.am similarity index 58% rename from legacy/evas/src/lib/engines/gl_x11/Makefile.am rename to legacy/evas/src/modules/engines/gl_x11/Makefile.am index efc2a865a9..8b276a020b 100644 --- a/legacy/evas/src/lib/engines/gl_x11/Makefile.am +++ b/legacy/evas/src/modules/engines/gl_x11/Makefile.am @@ -12,15 +12,19 @@ INCLUDES = -I. \ if BUILD_ENGINE_GL_X11 -noinst_LTLIBRARIES = libevas_engine_gl_x11.la -libevas_engine_gl_x11_la_SOURCES = \ +pkgdir = $(libdir)/evas/modules/engines/gl_x11/$(MODULE_ARCH) + +pkg_LTLIBRARIES = module.la + +module_la_SOURCES = \ evas_engine.h \ evas_engine.c \ evas_x_main.c -libevas_engine_gl_x11_la_LIBADD = @x_libs@ @gl_libs@ +module_la_LIBADD = @gl_libs@ @x_libs@ ../gl_common/libevas_engine_gl_common.la +module_la_LDFLAGS = -module -avoid-version -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs -libevas_engine_gl_x11_la_DEPENDENCIES = \ +module_la_DEPENDENCIES = \ $(top_builddir)/config.h endif diff --git a/legacy/evas/src/lib/engines/gl_x11/evas_engine.c b/legacy/evas/src/modules/engines/gl_x11/evas_engine.c similarity index 99% rename from legacy/evas/src/lib/engines/gl_x11/evas_engine.c rename to legacy/evas/src/modules/engines/gl_x11/evas_engine.c index a3a4504d1a..0b50d3f2d1 100644 --- a/legacy/evas/src/lib/engines/gl_x11/evas_engine.c +++ b/legacy/evas/src/modules/engines/gl_x11/evas_engine.c @@ -1216,3 +1216,23 @@ evas_engine_gl_x11_best_depth_get(Display *disp, int screen) if (!_evas_gl_x11_vi) return 0; return _evas_gl_x11_vi->depth; } + +int module_open(Evas_Module *em) +{ + if (!em) return 0; + em->functions = (void *)(&evas_engine_gl_x11_func); + return 1; +} + +void module_close(void) +{ + +} + +Evas_Module_Api evas_modapi = +{ + EVAS_MODULE_API_VERSION, + EVAS_MODULE_TYPE_ENGINE, + "gl_x11", + "none" +}; diff --git a/legacy/evas/src/lib/engines/gl_x11/evas_engine.h b/legacy/evas/src/modules/engines/gl_x11/evas_engine.h similarity index 100% rename from legacy/evas/src/lib/engines/gl_x11/evas_engine.h rename to legacy/evas/src/modules/engines/gl_x11/evas_engine.h diff --git a/legacy/evas/src/lib/engines/gl_x11/evas_x_main.c b/legacy/evas/src/modules/engines/gl_x11/evas_x_main.c similarity index 100% rename from legacy/evas/src/lib/engines/gl_x11/evas_x_main.c rename to legacy/evas/src/modules/engines/gl_x11/evas_x_main.c diff --git a/legacy/evas/src/lib/engines/software_qtopia/Makefile.am b/legacy/evas/src/modules/engines/software_qtopia/Makefile.am similarity index 62% rename from legacy/evas/src/lib/engines/software_qtopia/Makefile.am rename to legacy/evas/src/modules/engines/software_qtopia/Makefile.am index 7536b69770..8a5122480f 100644 --- a/legacy/evas/src/lib/engines/software_qtopia/Makefile.am +++ b/legacy/evas/src/modules/engines/software_qtopia/Makefile.am @@ -14,16 +14,20 @@ CXXFLAGS = $(CFLAGS) -DQT_QWS_EBX -DQT_QWS_CUSTOM -DQWS -DNO_DEBUG if BUILD_ENGINE_SOFTWARE_QTOPIA -noinst_LTLIBRARIES = libevas_engine_software_qtopia.la -libevas_engine_software_qtopia_la_SOURCES = \ +pkgdir = $(libdir)/evas/modules/engines/software_qtopia/$(MODULE_ARCH) + +pkg_LTLIBRARIES = module.la + +module_la_SOURCES = \ evas_engine.h \ evas_engine.c \ evas_outbuf.c \ evas_qt_main.cpp -libevas_engine_software_qtopia_la_LIBADD = @qt_libs@ +module_la_LIBADD = @@qt_libs@@ ../cairo_common/libevas_engine_cairo_common.la +module_la_LDFLAGS = -module -avoid-version -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs -libevas_engine_software_qtopia_la_DEPENDENCIES = \ +module_la_DEPENDENCIES = \ $(top_builddir)/config.h endif diff --git a/legacy/evas/src/lib/engines/software_qtopia/evas_engine.c b/legacy/evas/src/modules/engines/software_qtopia/evas_engine.c similarity index 100% rename from legacy/evas/src/lib/engines/software_qtopia/evas_engine.c rename to legacy/evas/src/modules/engines/software_qtopia/evas_engine.c diff --git a/legacy/evas/src/lib/engines/software_qtopia/evas_engine.h b/legacy/evas/src/modules/engines/software_qtopia/evas_engine.h similarity index 100% rename from legacy/evas/src/lib/engines/software_qtopia/evas_engine.h rename to legacy/evas/src/modules/engines/software_qtopia/evas_engine.h diff --git a/legacy/evas/src/lib/engines/software_qtopia/evas_outbuf.c b/legacy/evas/src/modules/engines/software_qtopia/evas_outbuf.c similarity index 100% rename from legacy/evas/src/lib/engines/software_qtopia/evas_outbuf.c rename to legacy/evas/src/modules/engines/software_qtopia/evas_outbuf.c diff --git a/legacy/evas/src/lib/engines/software_win32_gdi/Makefile.am b/legacy/evas/src/modules/engines/software_win32_gdi/Makefile.am similarity index 100% rename from legacy/evas/src/lib/engines/software_win32_gdi/Makefile.am rename to legacy/evas/src/modules/engines/software_win32_gdi/Makefile.am diff --git a/legacy/evas/src/lib/engines/software_win32_gdi/evas_engine.c b/legacy/evas/src/modules/engines/software_win32_gdi/evas_engine.c similarity index 100% rename from legacy/evas/src/lib/engines/software_win32_gdi/evas_engine.c rename to legacy/evas/src/modules/engines/software_win32_gdi/evas_engine.c diff --git a/legacy/evas/src/lib/engines/software_win32_gdi/evas_engine.h b/legacy/evas/src/modules/engines/software_win32_gdi/evas_engine.h similarity index 100% rename from legacy/evas/src/lib/engines/software_win32_gdi/evas_engine.h rename to legacy/evas/src/modules/engines/software_win32_gdi/evas_engine.h diff --git a/legacy/evas/src/lib/engines/software_win32_gdi/evas_outbuf.c b/legacy/evas/src/modules/engines/software_win32_gdi/evas_outbuf.c similarity index 100% rename from legacy/evas/src/lib/engines/software_win32_gdi/evas_outbuf.c rename to legacy/evas/src/modules/engines/software_win32_gdi/evas_outbuf.c diff --git a/legacy/evas/src/lib/engines/software_win32_gdi/evas_win32_buffer.c b/legacy/evas/src/modules/engines/software_win32_gdi/evas_win32_buffer.c similarity index 100% rename from legacy/evas/src/lib/engines/software_win32_gdi/evas_win32_buffer.c rename to legacy/evas/src/modules/engines/software_win32_gdi/evas_win32_buffer.c diff --git a/legacy/evas/src/lib/engines/software_win32_gdi/evas_win32_main.c b/legacy/evas/src/modules/engines/software_win32_gdi/evas_win32_main.c similarity index 100% rename from legacy/evas/src/lib/engines/software_win32_gdi/evas_win32_main.c rename to legacy/evas/src/modules/engines/software_win32_gdi/evas_win32_main.c diff --git a/legacy/evas/src/lib/engines/software_x11/Makefile.am b/legacy/evas/src/modules/engines/software_x11/Makefile.am similarity index 65% rename from legacy/evas/src/lib/engines/software_x11/Makefile.am rename to legacy/evas/src/modules/engines/software_x11/Makefile.am index 197b216226..679146dd1b 100644 --- a/legacy/evas/src/lib/engines/software_x11/Makefile.am +++ b/legacy/evas/src/modules/engines/software_x11/Makefile.am @@ -12,8 +12,11 @@ INCLUDES = -I. \ if BUILD_ENGINE_SOFTWARE_X11 -noinst_LTLIBRARIES = libevas_engine_software_x11.la -libevas_engine_software_x11_la_SOURCES = \ +pkgdir = $(libdir)/evas/modules/engines/software_x11/$(MODULE_ARCH) + +pkg_LTLIBRARIES = module.la + +module_la_SOURCES = \ evas_engine.h \ evas_engine.c \ evas_outbuf.c \ @@ -21,9 +24,11 @@ evas_x_buffer.c \ evas_x_color.c \ evas_x_main.c -libevas_engine_software_x11_la_LIBADD = @x_libs@ - -libevas_engine_software_x11_la_DEPENDENCIES = \ +module_la_LIBADD = @x_libs@ +module_la_LDFLAGS = -module -avoid-version \ + -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs + +module_la_DEPENDENCIES = \ $(top_builddir)/config.h endif diff --git a/legacy/evas/src/lib/engines/software_x11/evas_engine.c b/legacy/evas/src/modules/engines/software_x11/evas_engine.c similarity index 99% rename from legacy/evas/src/lib/engines/software_x11/evas_engine.c rename to legacy/evas/src/modules/engines/software_x11/evas_engine.c index 8b68fc6875..1042b10d1b 100644 --- a/legacy/evas/src/lib/engines/software_x11/evas_engine.c +++ b/legacy/evas/src/modules/engines/software_x11/evas_engine.c @@ -1,7 +1,6 @@ #include "evas_common.h" #include "evas_private.h" #include "evas_engine.h" -#include "evas_engine_api_software_x11.h" #include "Evas_Engine_Software_X11.h" static void *evas_engine_software_x11_info(Evas *e); @@ -1329,3 +1328,24 @@ evas_engine_software_x11_output_perf_device_store(Evas_Performance *perf) { evas_software_x11_outbuf_perf_store_x(perf); } + +int module_open(Evas_Module *em) +{ + if (!em) return 0; + em->functions = (void *)(&evas_engine_software_x11_func); + return 1; +} + +void module_close(void) +{ + +} + +Evas_Module_Api evas_modapi = +{ + EVAS_MODULE_API_VERSION, + EVAS_MODULE_TYPE_ENGINE, + "software_x11", + "none" +}; + diff --git a/legacy/evas/src/lib/engines/software_x11/evas_engine.h b/legacy/evas/src/modules/engines/software_x11/evas_engine.h similarity index 100% rename from legacy/evas/src/lib/engines/software_x11/evas_engine.h rename to legacy/evas/src/modules/engines/software_x11/evas_engine.h diff --git a/legacy/evas/src/lib/engines/software_x11/evas_outbuf.c b/legacy/evas/src/modules/engines/software_x11/evas_outbuf.c similarity index 100% rename from legacy/evas/src/lib/engines/software_x11/evas_outbuf.c rename to legacy/evas/src/modules/engines/software_x11/evas_outbuf.c diff --git a/legacy/evas/src/lib/engines/software_x11/evas_x_buffer.c b/legacy/evas/src/modules/engines/software_x11/evas_x_buffer.c similarity index 100% rename from legacy/evas/src/lib/engines/software_x11/evas_x_buffer.c rename to legacy/evas/src/modules/engines/software_x11/evas_x_buffer.c diff --git a/legacy/evas/src/lib/engines/software_x11/evas_x_color.c b/legacy/evas/src/modules/engines/software_x11/evas_x_color.c similarity index 100% rename from legacy/evas/src/lib/engines/software_x11/evas_x_color.c rename to legacy/evas/src/modules/engines/software_x11/evas_x_color.c diff --git a/legacy/evas/src/lib/engines/software_x11/evas_x_main.c b/legacy/evas/src/modules/engines/software_x11/evas_x_main.c similarity index 100% rename from legacy/evas/src/lib/engines/software_x11/evas_x_main.c rename to legacy/evas/src/modules/engines/software_x11/evas_x_main.c diff --git a/legacy/evas/src/lib/engines/software_xcb/Makefile.am b/legacy/evas/src/modules/engines/software_xcb/Makefile.am similarity index 63% rename from legacy/evas/src/lib/engines/software_xcb/Makefile.am rename to legacy/evas/src/modules/engines/software_xcb/Makefile.am index 29925cb01d..710e0af948 100644 --- a/legacy/evas/src/lib/engines/software_xcb/Makefile.am +++ b/legacy/evas/src/modules/engines/software_xcb/Makefile.am @@ -12,8 +12,11 @@ INCLUDES = -I. \ if BUILD_ENGINE_SOFTWARE_XCB -noinst_LTLIBRARIES = libevas_engine_software_xcb.la -libevas_engine_software_xcb_la_SOURCES = \ +pkgdir = $(libdir)/evas/modules/engines/software_xcb/$(MODULE_ARCH) + +pkg_LTLIBRARIES = module.la + +module_la_SOURCES = \ evas_engine.h \ evas_engine.c \ evas_outbuf.c \ @@ -21,9 +24,10 @@ evas_xcb_buffer.c \ evas_xcb_color.c \ evas_xcb_main.c -libevas_engine_software_xcb_la_LIBADD = @xcb_libs@ +module_la_LIBADD = @xcb_libs@ ../cairo_common/libevas_engine_cairo_common.la +module_la_LDFLAGS = -module -avoid-version -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs -libevas_engine_software_xcb_la_DEPENDENCIES = \ +module_la_DEPENDENCIES = \ $(top_builddir)/config.h endif diff --git a/legacy/evas/src/lib/engines/software_xcb/evas_engine.c b/legacy/evas/src/modules/engines/software_xcb/evas_engine.c similarity index 98% rename from legacy/evas/src/lib/engines/software_xcb/evas_engine.c rename to legacy/evas/src/modules/engines/software_xcb/evas_engine.c index a04dfb4f93..9304676cba 100644 --- a/legacy/evas/src/lib/engines/software_xcb/evas_engine.c +++ b/legacy/evas/src/modules/engines/software_xcb/evas_engine.c @@ -1293,16 +1293,15 @@ static XCBSCREEN * evas_engine_software_xcb_screen_get(XCBConnection *conn, int screen) { XCBSCREENIter i; + int cur; if (!conn) return NULL; i = XCBConnSetupSuccessRepRootsIter(XCBGetSetup(conn)); if (screen > i.rem - 1) return NULL; /* screen must be between 0 and i.rem - 1 */ - for (; i.rem; --screen, XCBSCREENNext(&i)) - if (screen == 0) - return i.data; + for (cur = 0; cur <= screen; XCBSCREENNext(&i), ++cur) {} - return NULL; + return i.data; } static XCBVISUALTYPE * @@ -1311,6 +1310,7 @@ evas_engine_software_xcb_best_visual_get(XCBConnection *conn, int screen) XCBSCREEN *scr; XCBDEPTH *d; XCBVISUALTYPEIter iter; + int cur; if (!conn) return NULL; scr = evas_engine_software_xcb_screen_get(conn, screen); @@ -1319,7 +1319,7 @@ evas_engine_software_xcb_best_visual_get(XCBConnection *conn, int screen) if (!d) return NULL; iter = XCBDEPTHVisualsIter(d); - for (; iter.rem ; XCBVISUALTYPENext(&iter)) + for (cur = 0 ; cur < iter.rem ; XCBVISUALTYPENext(&iter), ++cur) if (scr->root_visual.id == iter.data->visual_id.id) return iter.data; @@ -1395,3 +1395,23 @@ evas_engine_software_xcb_output_perf_device_store(Evas_Performance *perf) { evas_software_xcb_outbuf_perf_store_x(perf); } + +int module_open(Evas_Module *em) +{ + if (!em) return 0; + em->functions = (void *)(&evas_engine_software_xcb_func); + return 1; +} + +void module_close(void) +{ + +} + +Evas_Module_Api evas_modapi = +{ + EVAS_MODULE_API_VERSION, + EVAS_MODULE_TYPE_ENGINE, + "software_xcb", + "none" +}; diff --git a/legacy/evas/src/lib/engines/software_xcb/evas_engine.h b/legacy/evas/src/modules/engines/software_xcb/evas_engine.h similarity index 99% rename from legacy/evas/src/lib/engines/software_xcb/evas_engine.h rename to legacy/evas/src/modules/engines/software_xcb/evas_engine.h index 4224860100..86a26bae0a 100644 --- a/legacy/evas/src/lib/engines/software_xcb/evas_engine.h +++ b/legacy/evas/src/modules/engines/software_xcb/evas_engine.h @@ -4,8 +4,8 @@ #include #include #include - -#include "evas_common.h" +#include +#include typedef struct _Outbuf Outbuf; typedef struct _Outbuf_Perf Outbuf_Perf; diff --git a/legacy/evas/src/lib/engines/software_xcb/evas_outbuf.c b/legacy/evas/src/modules/engines/software_xcb/evas_outbuf.c similarity index 99% rename from legacy/evas/src/lib/engines/software_xcb/evas_outbuf.c rename to legacy/evas/src/modules/engines/software_xcb/evas_outbuf.c index 96b5ee39a1..0db0aa2a32 100644 --- a/legacy/evas/src/lib/engines/software_xcb/evas_outbuf.c +++ b/legacy/evas/src/modules/engines/software_xcb/evas_outbuf.c @@ -1,13 +1,12 @@ +#include "evas_common.h" +#include "evas_engine.h" +#include "evas_macros.h" #include #include #include #include #include -#include "evas_common.h" -#include "evas_engine.h" -#include "evas_macros.h" - void evas_software_xcb_outbuf_init(void) { @@ -601,12 +600,13 @@ evas_software_xcb_outbuf_debug_show(Outbuf *buf, int h) { int i; - XCBSCREEN *screen = NULL; + XCBSCREEN *screen; { XCBGetGeometryRep *geom; XCBDRAWABLE root; XCBSCREENIter i; + int cur; geom = XCBGetGeometryReply (buf->priv.x.conn, XCBGetGeometry (buf->priv.x.conn, draw), 0); root.window = geom->root; @@ -614,7 +614,7 @@ evas_software_xcb_outbuf_debug_show(Outbuf *buf, geom = XCBGetGeometryReply (buf->priv.x.conn, XCBGetGeometry (buf->priv.x.conn, root), 0); i = XCBConnSetupSuccessRepRootsIter(XCBGetSetup(buf->priv.x.conn)); - for (; i.rem; XCBSCREENNext(&i)) + for (cur = 0; cur < i.rem; XCBSCREENNext(&i), ++cur) if (i.data->root.xid == geom->root.xid) { screen = i.data; @@ -747,7 +747,7 @@ evas_software_xcb_outbuf_perf_new_x(XCBConnection *conn, perf->x.screen_num = 0; i = XCBConnSetupSuccessRepRootsIter(XCBGetSetup(conn)); - for (cur = 0; i.rem; XCBSCREENNext(&i), ++cur) + for (cur = 0; cur < i.rem; XCBSCREENNext(&i), ++cur) if (i.data->root.xid == geom->root.xid) { perf->x.screen_num = cur; @@ -921,7 +921,6 @@ evas_software_xcb_outbuf_perf_restore_x(XCBConnection *conn, type = type_rep->atom; format = STRING; retval = NULL; - free(type_rep); cookie = XCBGetProperty(conn, 0, perf->x.root.window, type, format, @@ -943,9 +942,9 @@ evas_software_xcb_outbuf_perf_restore_x(XCBConnection *conn, evas_software_xcb_outbuf_perf_deserialize_x(perf, s); free(s); } + /* FIXME: doesn't seem to be need (from valgrind) */ +/* free(retval); */ } - free(prop_rep); - return perf; } diff --git a/legacy/evas/src/lib/engines/software_xcb/evas_xcb_buffer.c b/legacy/evas/src/modules/engines/software_xcb/evas_xcb_buffer.c similarity index 98% rename from legacy/evas/src/lib/engines/software_xcb/evas_xcb_buffer.c rename to legacy/evas/src/modules/engines/software_xcb/evas_xcb_buffer.c index 8e87d6bb86..0a6c02a9af 100644 --- a/legacy/evas/src/lib/engines/software_xcb/evas_xcb_buffer.c +++ b/legacy/evas/src/modules/engines/software_xcb/evas_xcb_buffer.c @@ -1,8 +1,4 @@ -#include -#include -#include -#include - +#include "evas_common.h" #include "evas_engine.h" static int _xcb_err = 0; @@ -104,7 +100,7 @@ evas_software_xcb_x_output_buffer_new(XCBConnection *c, if (try_shm > 0) { - const XCBQueryExtensionRep *rep; + XCBQueryExtensionRep *rep; rep = XCBGetExtensionData(c, &XCBShmId); if (rep && rep->present) diff --git a/legacy/evas/src/lib/engines/software_xcb/evas_xcb_color.c b/legacy/evas/src/modules/engines/software_xcb/evas_xcb_color.c similarity index 100% rename from legacy/evas/src/lib/engines/software_xcb/evas_xcb_color.c rename to legacy/evas/src/modules/engines/software_xcb/evas_xcb_color.c diff --git a/legacy/evas/src/lib/engines/software_xcb/evas_xcb_main.c b/legacy/evas/src/modules/engines/software_xcb/evas_xcb_main.c similarity index 100% rename from legacy/evas/src/lib/engines/software_xcb/evas_xcb_main.c rename to legacy/evas/src/modules/engines/software_xcb/evas_xcb_main.c diff --git a/legacy/evas/src/lib/engines/xrender_x11/Makefile.am b/legacy/evas/src/modules/engines/xrender_x11/Makefile.am similarity index 69% rename from legacy/evas/src/lib/engines/xrender_x11/Makefile.am rename to legacy/evas/src/modules/engines/xrender_x11/Makefile.am index c155efb4ab..1d76db0f19 100644 --- a/legacy/evas/src/lib/engines/xrender_x11/Makefile.am +++ b/legacy/evas/src/modules/engines/xrender_x11/Makefile.am @@ -12,8 +12,11 @@ INCLUDES = -I. \ if BUILD_ENGINE_XRENDER_X11 -noinst_LTLIBRARIES = libevas_engine_xrender_x11.la -libevas_engine_xrender_x11_la_SOURCES = \ +pkgdir = $(libdir)/evas/modules/engines/xrender_x11/$(MODULE_ARCH) + +pkg_LTLIBRARIES = module.la + +module_la_SOURCES = \ evas_engine.h \ evas_engine.c \ evas_engine_ximage.c \ @@ -22,9 +25,11 @@ evas_engine_image.c \ evas_engine_font.c \ evas_engine_gradient.c -libevas_engine_xrender_x11_la_LIBADD = @x_libs@ +module_la_LIBADD = @x_libs@ +module_la_LDFLAGS = -module -avoid-version \ + -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs -libevas_engine_xrender_x11_la_DEPENDENCIES = \ +module_la_DEPENDENCIES = \ $(top_builddir)/config.h endif diff --git a/legacy/evas/src/lib/engines/xrender_x11/evas_engine.c b/legacy/evas/src/modules/engines/xrender_x11/evas_engine.c similarity index 99% rename from legacy/evas/src/lib/engines/xrender_x11/evas_engine.c rename to legacy/evas/src/modules/engines/xrender_x11/evas_engine.c index e19f9a5132..6997a8bc5d 100644 --- a/legacy/evas/src/lib/engines/xrender_x11/evas_engine.c +++ b/legacy/evas/src/modules/engines/xrender_x11/evas_engine.c @@ -1,7 +1,6 @@ #include "evas_common.h" #include "evas_private.h" #include "evas_engine.h" -#include "evas_engine_api_xrender_x11.h" #include "Evas_Engine_XRender_X11.h" static void *evas_engine_xrender_x11_info(Evas *e); @@ -1249,3 +1248,24 @@ evas_engine_xrender_x11_font_cache_get(void *data) re = (Render_Engine *)data; return evas_common_font_cache_get(); } + +int module_open(Evas_Module *em) +{ + if (!em) return 0; + em->functions = (void *)(&evas_engine_xrender_x11_func); + return 1; +} + +void module_close(void) +{ + +} + +Evas_Module_Api evas_modapi = +{ + EVAS_MODULE_API_VERSION, + EVAS_MODULE_TYPE_ENGINE, + "xrender", + "none" +}; + diff --git a/legacy/evas/src/lib/engines/xrender_x11/evas_engine.h b/legacy/evas/src/modules/engines/xrender_x11/evas_engine.h similarity index 100% rename from legacy/evas/src/lib/engines/xrender_x11/evas_engine.h rename to legacy/evas/src/modules/engines/xrender_x11/evas_engine.h diff --git a/legacy/evas/src/lib/engines/xrender_x11/evas_engine_font.c b/legacy/evas/src/modules/engines/xrender_x11/evas_engine_font.c similarity index 99% rename from legacy/evas/src/lib/engines/xrender_x11/evas_engine_font.c rename to legacy/evas/src/modules/engines/xrender_x11/evas_engine_font.c index de29c052a3..24d49523ff 100644 --- a/legacy/evas/src/lib/engines/xrender_x11/evas_engine_font.c +++ b/legacy/evas/src/modules/engines/xrender_x11/evas_engine_font.c @@ -1,7 +1,6 @@ #include "evas_common.h" #include "evas_private.h" #include "evas_engine.h" -#include "evas_engine_api_xrender_x11.h" #include "Evas_Engine_XRender_X11.h" static Evas_Hash *_xr_fg_pool = NULL; diff --git a/legacy/evas/src/lib/engines/xrender_x11/evas_engine_gradient.c b/legacy/evas/src/modules/engines/xrender_x11/evas_engine_gradient.c similarity index 98% rename from legacy/evas/src/lib/engines/xrender_x11/evas_engine_gradient.c rename to legacy/evas/src/modules/engines/xrender_x11/evas_engine_gradient.c index be78f906e9..a66a616bf5 100644 --- a/legacy/evas/src/lib/engines/xrender_x11/evas_engine_gradient.c +++ b/legacy/evas/src/modules/engines/xrender_x11/evas_engine_gradient.c @@ -1,7 +1,6 @@ #include "evas_common.h" #include "evas_private.h" #include "evas_engine.h" -#include "evas_engine_api_xrender_x11.h" #include "Evas_Engine_XRender_X11.h" #include diff --git a/legacy/evas/src/lib/engines/xrender_x11/evas_engine_image.c b/legacy/evas/src/modules/engines/xrender_x11/evas_engine_image.c similarity index 99% rename from legacy/evas/src/lib/engines/xrender_x11/evas_engine_image.c rename to legacy/evas/src/modules/engines/xrender_x11/evas_engine_image.c index 360305f39c..f25827f25c 100644 --- a/legacy/evas/src/lib/engines/xrender_x11/evas_engine_image.c +++ b/legacy/evas/src/modules/engines/xrender_x11/evas_engine_image.c @@ -1,7 +1,6 @@ #include "evas_common.h" #include "evas_private.h" #include "evas_engine.h" -#include "evas_engine_api_xrender_x11.h" #include "Evas_Engine_XRender_X11.h" static Evas_Hash *_xr_image_hash = NULL; diff --git a/legacy/evas/src/lib/engines/xrender_x11/evas_engine_ximage.c b/legacy/evas/src/modules/engines/xrender_x11/evas_engine_ximage.c similarity index 99% rename from legacy/evas/src/lib/engines/xrender_x11/evas_engine_ximage.c rename to legacy/evas/src/modules/engines/xrender_x11/evas_engine_ximage.c index 7d3fea9bc9..64f92075a7 100644 --- a/legacy/evas/src/lib/engines/xrender_x11/evas_engine_ximage.c +++ b/legacy/evas/src/modules/engines/xrender_x11/evas_engine_ximage.c @@ -1,7 +1,6 @@ #include "evas_common.h" #include "evas_private.h" #include "evas_engine.h" -#include "evas_engine_api_xrender_x11.h" #include "Evas_Engine_XRender_X11.h" static Evas_List *_image_info_list = NULL; diff --git a/legacy/evas/src/lib/engines/xrender_x11/evas_engine_xrender.c b/legacy/evas/src/modules/engines/xrender_x11/evas_engine_xrender.c similarity index 99% rename from legacy/evas/src/lib/engines/xrender_x11/evas_engine_xrender.c rename to legacy/evas/src/modules/engines/xrender_x11/evas_engine_xrender.c index 200ab666b8..8736eb4429 100644 --- a/legacy/evas/src/lib/engines/xrender_x11/evas_engine_xrender.c +++ b/legacy/evas/src/modules/engines/xrender_x11/evas_engine_xrender.c @@ -2,7 +2,6 @@ #include "evas_macros.h" #include "evas_private.h" #include "evas_engine.h" -#include "evas_engine_api_xrender_x11.h" #include "Evas_Engine_XRender_X11.h" #include