diff --git a/configure.in b/configure.in index 08fced2..9dea14d 100644 --- a/configure.in +++ b/configure.in @@ -97,6 +97,16 @@ PKG_CHECK_EXISTS(evas-software-16-x11, ) AM_CONDITIONAL(BUILD_SOFTWARE_16_X11, test "x$have_software_16_x11" = "xyes") +dnl FB +PKG_CHECK_EXISTS(evas-framebuffer, + [ + AC_DEFINE(HAVE_EVAS_FB, 1, [Evas FB Engine Support]) + have_fb="yes" + ], + [ have_fb="no" ] +) +AM_CONDITIONAL(BUILD_FB, test "x$have_fb" = "xyes") + # TODO: Check availability of libs dnl DirectDraw PKG_CHECK_EXISTS(evas-software-ddraw, @@ -188,6 +198,7 @@ echo " Software DirectDraw..........: ${have_software_ddraw}" echo " Software DirectDraw 16 bits..: ${have_software_16_ddraw}" echo " Direct3D.....................: ${have_direct3d}" echo " Software SDL.................: ${have_software_sdl}" +echo " FB...........................: ${have_fb}" echo echo " Installation:" echo " prefix.......................: ${prefix}" diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am index 5906f1d..0df41dd 100644 --- a/src/bin/Makefile.am +++ b/src/bin/Makefile.am @@ -99,3 +99,9 @@ if BUILD_SOFTWARE_SDL expedite_SOURCES += \ engine_software_sdl.c engine_software_sdl.h endif + +if BUILD_FB +expedite_SOURCES += \ +engine_fb.c engine_fb.h +endif + diff --git a/src/bin/engine_fb.c b/src/bin/engine_fb.c new file mode 100644 index 0000000..1f0be45 --- /dev/null +++ b/src/bin/engine_fb.c @@ -0,0 +1,44 @@ +#include "main.h" + +#include + +int +engine_fb_args(int argc, char **argv) +{ + Evas_Engine_Info_FB *einfo; + int i; + int ok = 0; + + for (i = 1; i < argc; i++) + { + if ((!strcmp(argv[i], "-e")) && (i < (argc - 1))) + { + i++; + if (!strcmp(argv[i], "fb")) ok = 1; + } + } + if (!ok) return 0; + + evas_output_method_set(evas, evas_render_method_lookup("fb")); + einfo = (Evas_Engine_Info_FB *)evas_engine_info_get(evas); + if (!einfo) + { + printf("Evas does not support the FB Engine\n"); + return 0; + } + + einfo->info.virtual_terminal = 0; + einfo->info.device_number = 0; + einfo->info.device_number = 0; + einfo->info.refresh = 0; + einfo->info.rotation = 0; + evas_engine_info_set(evas, (Evas_Engine_Info *) einfo); + + return 1; +} + +void +engine_fb_loop(void) +{ + return; +} diff --git a/src/bin/engine_fb.h b/src/bin/engine_fb.h new file mode 100644 index 0000000..ca4cb39 --- /dev/null +++ b/src/bin/engine_fb.h @@ -0,0 +1,7 @@ +#ifndef ENGINE_FB_H +#define ENGINE_FB_H + +int engine_fb_args(int argc, char **argv); +void engine_fb_loop(void); + +#endif diff --git a/src/bin/main.c b/src/bin/main.c index f23cb1f..30dcf5a 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -1171,6 +1171,10 @@ _engine_args(int argc, char **argv) #if HAVE_EVAS_DIRECT3D if (engine_direct3d_args(argc, argv)) loop_func = engine_direct3d_loop; +#endif +#if HAVE_EVAS_FB + if (engine_fb_args(argc, argv)) + loop_func = engine_fb_loop; #endif if ((!loop_func) || (!profile_ok)) { @@ -1209,6 +1213,9 @@ _engine_args(int argc, char **argv) #endif #if HAVE_EVAS_SOFTWARE_SDL " sdl" +#endif +#if HAVE_EVAS_FB + " fb" #endif "\n" "Where PROFILE can be one of:\n" diff --git a/src/bin/main.h b/src/bin/main.h index 94d647c..5a8735b 100644 --- a/src/bin/main.h +++ b/src/bin/main.h @@ -41,6 +41,9 @@ #if HAVE_EVAS_SOFTWARE_SDL #include "engine_software_sdl.h" #endif +#if HAVE_EVAS_FB +#include "engine_fb.h" +#endif #include "ui.h" #include "about.h"