From ea8c9473178556a12e58c484d6e70903241897d0 Mon Sep 17 00:00:00 2001 From: doursse Date: Mon, 7 Jul 2008 19:31:46 +0000 Subject: [PATCH] add software xcb engine support, minor reorganization of some inclusing / checks etc... SVN revision: 35020 --- configure.in | 55 +++-- src/bin/Makefile.am | 48 +++-- src/bin/engine_software_xcb.c | 369 ++++++++++++++++++++++++++++++++++ src/bin/engine_software_xcb.h | 7 + src/bin/main.c | 75 +++---- src/bin/main.h | 27 +-- 6 files changed, 492 insertions(+), 89 deletions(-) create mode 100644 src/bin/engine_software_xcb.c create mode 100644 src/bin/engine_software_xcb.h diff --git a/configure.in b/configure.in index 376c334..d3fdedc 100644 --- a/configure.in +++ b/configure.in @@ -41,20 +41,31 @@ AC_ARG_ENABLE(simple-x11, [ want_evas_simple_x11=$enableval ] ) -### OpenGL GLEW -EXPEDITE_CHECK_ENGINE([opengl-glew], [OpenGL Glew], "yes", [glew_libs="-lglew32 -lgdi32"]) - -### OpenGL X11 -EXPEDITE_CHECK_ENGINE([opengl-x11], [OpenGL X11], "yes") - ### Software X11 EXPEDITE_CHECK_ENGINE([software-x11], [Software X11], "yes") ### XRender X11 EXPEDITE_CHECK_ENGINE([xrender-x11], [XRender X11], "yes") -### Software 16bit X11 -EXPEDITE_CHECK_ENGINE([software-16-x11], [Software 16 bits X11], "yes") +### OpenGL X11 +EXPEDITE_CHECK_ENGINE([opengl-x11], [OpenGL X11], "yes") + +### Software XCB +EXPEDITE_CHECK_ENGINE([software-xcb], [Software XCB], "yes") + +# TODO: Check availability of libs +### DirectDraw +EXPEDITE_CHECK_ENGINE([software-ddraw], [Software DirectDraw], "yes", [ddraw_libs="-lddraw -ldxguid"]) + +# TODO: Check availability of libs +### Direct3D +EXPEDITE_CHECK_ENGINE([direct3d], [Direct3D], "yes", [d3d_libs="-ld3d9 -ld3dx9d"]) + +### OpenGL GLEW +EXPEDITE_CHECK_ENGINE([opengl-glew], [OpenGL Glew], "yes", [glew_libs="-lglew32 -lgdi32"]) + +### Software SDL +EXPEDITE_CHECK_ENGINE([software-sdl], [Software SDL], "yes") ### FB EXPEDITE_CHECK_ENGINE([fb], [Framebuffer], "yes") @@ -62,25 +73,17 @@ EXPEDITE_CHECK_ENGINE([fb], [Framebuffer], "yes") ### DIRECTFB EXPEDITE_CHECK_ENGINE([directfb], [DirectFB], "yes") -# TODO: Check availability of libs -### DirectDraw -EXPEDITE_CHECK_ENGINE([software-ddraw], [Software DirectDraw], "yes", [ddraw_libs="-lddraw -ldxguid"]) +### Software 16bit X11 +EXPEDITE_CHECK_ENGINE([software-16-x11], [Software 16 bits X11], "yes") # TODO: Check availability of libs ### 16bit DirectDraw EXPEDITE_CHECK_ENGINE([software-16-ddraw], [Software 16 bits DirectDraw], "yes", [ddraw_libs="-lddraw -ldxguid"]) -# TODO: Check availability of libs -### Direct3D -EXPEDITE_CHECK_ENGINE([direct3d], [Direct3D], "yes", [d3d_libs="-ld3d9 -ld3dx9d"]) - # TODO: Check availability of libs ### 16bit WinCE EXPEDITE_CHECK_ENGINE([software-16-wince], [Software 16 bits WinCE], "yes", [wince_16_libs="-laygshell"]) -### Software SDL -EXPEDITE_CHECK_ENGINE([software-sdl], [Software SDL], "yes") - if test "x$have_software_x11" = "xyes" -o "x$have_software_16_x11" = "xyes" -o "x$have_xrender_x11" = "xyes" -o "x$have_opengl_x11" = "xyes"; then AC_PATH_XTRA AC_CHECK_HEADERS(X11/Xlib.h X11/Xutil.h, @@ -96,6 +99,13 @@ if test "x$have_software_x11" = "xyes" -o "x$have_software_16_x11" = "xyes" -o " fi AM_CONDITIONAL(BUILD_X11, test "x$have_x11" = "xyes") +if test "x$have_software_xcb" = "xyes"; then + PKG_CHECK_MODULES([XCB], xcb xcb-keysyms, + [ have_software_xcb="yes" ], + [ have_software_xcb="no" ]) +fi +AM_CONDITIONAL(BUILD_XCB, test "x$have_xcb" = "xyes") + if test "x$have_software_sdl" = "xyes"; then PKG_CHECK_MODULES([SDL], sdl, [ have_sdl="yes" ], @@ -130,17 +140,18 @@ echo " $PACKAGE $VERSION" echo echo " Engines:" echo " Software X11.................: ${have_software_x11}" -echo " Software X11 16 bits.........: ${have_software_16_x11}" echo " X Render X11.................: ${have_xrender_x11}" echo " Open GL X11..................: ${have_opengl_x11}" -echo " Open GL Glew.................: ${have_opengl_glew}" +echo " Software XCB.................: ${have_software_xcb}" echo " Software DirectDraw..........: ${have_software_ddraw}" -echo " Software DirectDraw 16 bits..: ${have_software_16_ddraw}" echo " Direct3D.....................: ${have_direct3d}" -echo " Software WinCE 16 bits.......: ${have_software_16_wince}" +echo " Open GL Glew.................: ${have_opengl_glew}" echo " Software SDL.................: ${have_software_sdl}" echo " FB...........................: ${have_fb}" echo " DirectFB.....................: ${have_directfb}" +echo " Software X11 16 bits.........: ${have_software_16_x11}" +echo " Software DirectDraw 16 bits..: ${have_software_16_ddraw}" +echo " Software WinCE 16 bits.......: ${have_software_16_wince}" echo echo " Installation:" echo " prefix.......................: ${prefix}" diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am index 986906a..c5d93d9 100644 --- a/src/bin/Makefile.am +++ b/src/bin/Makefile.am @@ -9,7 +9,8 @@ AM_CPPFLAGS = \ @EVAS_CFLAGS@ \ @x_cflags@ \ @SDL_CFLAGS@ \ -@DIRECTFB_CFLAGS@ +@DIRECTFB_CFLAGS@ \ +@XCB_CFLAGS@ bin_PROGRAMS = expedite @@ -58,7 +59,7 @@ image_blend_occlude3_very_many.c \ poly_blend.c expedite_CFLAGS = @WIN32_CFLAGS@ -expedite_LDADD = @EVAS_LIBS@ @SDL_LIBS@ @x_libs@ @ddraw_libs@ @ddraw_16_libs@ @d3d_libs@ @wince_16_libs@ @glew_libs@ @DIRECTFB_LIBS@ -lm +expedite_LDADD = @EVAS_LIBS@ @SDL_LIBS@ @x_libs@ @ddraw_libs@ @ddraw_16_libs@ @d3d_libs@ @wince_16_libs@ @glew_libs@ @DIRECTFB_LIBS@ @XCB_LIBS@ -lm expedite_LDFLAGS = @lt_enable_auto_import@ if BUILD_SOFTWARE_X11 @@ -66,24 +67,19 @@ expedite_SOURCES += \ engine_software_x11.c engine_software_x11.h endif -if BUILD_OPENGL_X11 -expedite_SOURCES += \ -engine_gl_x11.c engine_gl_x11.h -endif - -if BUILD_SOFTWARE_16_X11 -expedite_SOURCES += \ -engine_software_16_x11.c engine_software_16_x11.h -endif - if BUILD_XRENDER_X11 expedite_SOURCES += \ engine_xrender_x11.c engine_xrender_x11.h endif -if BUILD_OPENGL_GLEW +if BUILD_OPENGL_X11 expedite_SOURCES += \ -engine_gl_glew.c engine_gl_glew.h +engine_gl_x11.c engine_gl_x11.h +endif + +if BUILD_SOFTWARE_XCB +expedite_SOURCES += \ +engine_software_xcb.c engine_software_xcb.h endif if BUILD_SOFTWARE_DDRAW @@ -91,19 +87,14 @@ expedite_SOURCES += \ engine_software_ddraw.cpp engine_software_ddraw.h endif -if BUILD_SOFTWARE_16_DDRAW -expedite_SOURCES += \ -engine_software_16_ddraw.cpp engine_software_16_ddraw.h -endif - if BUILD_DIRECT3D expedite_SOURCES += \ engine_direct3d.cpp engine_direct3d.h endif -if BUILD_SOFTWARE_16_WINCE +if BUILD_OPENGL_GLEW expedite_SOURCES += \ -engine_software_16_wince.c engine_software_16_wince.h +engine_gl_glew.c engine_gl_glew.h endif if BUILD_SOFTWARE_SDL @@ -121,3 +112,18 @@ expedite_SOURCES += \ engine_directfb.c engine_directfb.h endif +if BUILD_SOFTWARE_16_X11 +expedite_SOURCES += \ +engine_software_16_x11.c engine_software_16_x11.h +endif + +if BUILD_SOFTWARE_16_DDRAW +expedite_SOURCES += \ +engine_software_16_ddraw.cpp engine_software_16_ddraw.h +endif + +if BUILD_SOFTWARE_16_WINCE +expedite_SOURCES += \ +engine_software_16_wince.c engine_software_16_wince.h +endif + diff --git a/src/bin/engine_software_xcb.c b/src/bin/engine_software_xcb.c new file mode 100644 index 0000000..afe6211 --- /dev/null +++ b/src/bin/engine_software_xcb.c @@ -0,0 +1,369 @@ +#include "main.h" + +#include +#include +#include + +#define XK_MISCELLANY +#include + +enum { + XCB_SIZE_US_POSITION_HINT = 1 << 0, + XCB_SIZE_US_SIZE_HINT = 1 << 1, + XCB_SIZE_P_POSITION_HINT = 1 << 2, + XCB_SIZE_P_SIZE_HINT = 1 << 3, + XCB_SIZE_P_MIN_SIZE_HINT = 1 << 4, + XCB_SIZE_P_MAX_SIZE_HINT = 1 << 5, + XCB_SIZE_P_RESIZE_INC_HINT = 1 << 6, + XCB_SIZE_P_ASPECT_HINT = 1 << 7, + XCB_SIZE_BASE_SIZE_HINT = 1 << 8, + XCB_SIZE_P_WIN_GRAVITY_HINT = 1 << 9 +}; + +struct xcb_size_hints_t { + uint32_t flags; + int32_t x, y, width, height; + int32_t min_width, min_height; + int32_t max_width, max_height; + int32_t width_inc, height_inc; + int32_t min_aspect_num, min_aspect_den; + int32_t max_aspect_num, max_aspect_den; + int32_t base_width, base_height; + uint32_t win_gravity; +}; + + +static xcb_connection_t *conn = NULL; +static xcb_screen_t *screen = NULL; +static xcb_window_t win = 0; + +int +engine_software_xcb_args(int argc, char **argv) +{ + struct xcb_size_hints_t hints; + uint32_t value_list[6]; + xcb_screen_iterator_t iter; + Evas_Engine_Info_Software_Xcb *einfo; + xcb_intern_atom_reply_t *reply; + char *str; + xcb_intern_atom_cookie_t cookie1; + xcb_intern_atom_cookie_t cookie2; + xcb_intern_atom_cookie_t cookie3; + xcb_intern_atom_cookie_t cookie4; + xcb_intern_atom_cookie_t cookie5; + xcb_atom_t string; + xcb_atom_t wm_name; + xcb_atom_t wm_class; + xcb_atom_t wm_normal_hint; + xcb_atom_t wm_size_hint; + uint32_t value_mask; + int s; + int l1; + int l2; + int i; + int ok = 0; + + for (i = 1; i < argc; i++) + { + if ((!strcmp(argv[i], "-e")) && (i < (argc - 1))) + { + i++; + if (!strcmp(argv[i], "xcb")) ok = 1; + } + } + if (!ok) return 0; + + conn = xcb_connect(NULL, &s); + if (!conn) return 0; + + iter = xcb_setup_roots_iterator(xcb_get_setup(conn)); + for (; iter.rem; --s, xcb_screen_next (&iter)) + if (s == 0) + { + screen = iter.data; + break; + } + + evas_output_method_set(evas, evas_render_method_lookup("software_xcb")); + einfo = (Evas_Engine_Info_Software_Xcb *)evas_engine_info_get(evas); + if (!einfo) + { + printf("Evas does not support the Software XCB Engine\n"); + return 0; + } + + einfo->info.conn = conn; + einfo->info.screen = screen; + einfo->info.visual = einfo->func.best_visual_get(screen); + einfo->info.colormap = einfo->func.best_colormap_get(screen); + einfo->info.depth = einfo->func.best_depth_get(screen); + einfo->info.rotation = 0; + einfo->info.debug = 0; + + value_mask = + XCB_CW_BACK_PIXMAP | XCB_CW_BORDER_PIXEL | XCB_CW_BIT_GRAVITY | + XCB_CW_BACKING_STORE | XCB_CW_EVENT_MASK | XCB_CW_COLORMAP; + + value_list[0] = XCB_NONE; + value_list[1] = 0; + value_list[2] = XCB_GRAVITY_BIT_FORGET; + value_list[3] = XCB_BACKING_STORE_NOT_USEFUL; + value_list[4] = + XCB_EVENT_MASK_KEY_PRESS | XCB_EVENT_MASK_KEY_RELEASE | + XCB_EVENT_MASK_BUTTON_PRESS | XCB_EVENT_MASK_BUTTON_RELEASE | + XCB_EVENT_MASK_ENTER_WINDOW | XCB_EVENT_MASK_LEAVE_WINDOW | + XCB_EVENT_MASK_POINTER_MOTION | XCB_EVENT_MASK_EXPOSURE | + XCB_EVENT_MASK_STRUCTURE_NOTIFY; + value_list[5] = einfo->info.colormap; + + win = xcb_generate_id(conn); + xcb_create_window(conn, + einfo->info.depth, + win, screen->root, 0, 0, win_w, win_h, 0, + XCB_WINDOW_CLASS_INPUT_OUTPUT, + einfo->info.visual->visual_id, + value_mask, + value_list); + einfo->info.drawable = win; + + xcb_map_window(conn, win); + + evas_engine_info_set(evas, (Evas_Engine_Info *) einfo); + +/* XStoreName(disp, win, "Expedite - Evas Test Suite"); */ + + cookie1 = xcb_intern_atom_unchecked(conn, 0, strlen("STRING"), "STRING"); + cookie2 = xcb_intern_atom_unchecked(conn, 0, strlen("WM_NAME"), "WM_NAME"); + cookie3 = xcb_intern_atom_unchecked(conn, 0, strlen("WM_CLASS"), "WM_CLASS"); + cookie4 = xcb_intern_atom_unchecked(conn, 0, strlen("WM_NORMAL_HINTS)"), "WM_NORMAL_HINTS)"); + cookie5 = xcb_intern_atom_unchecked(conn, 0, strlen("WM_SIZE_HINTS)"), "WM_SIZE_HINTS)"); + + reply = xcb_intern_atom_reply(conn, cookie1, NULL); + string = reply->atom; + free(reply); + reply = xcb_intern_atom_reply(conn, cookie2, NULL); + wm_name = reply->atom; + free(reply); + + xcb_change_property(conn, XCB_PROP_MODE_REPLACE, win, + wm_name, string, 8, + strlen("Expedite - Evas Test Suite"), "Expedite - Evas Test Suite"); + +/* chint.res_name = "expedite"; */ +/* chint.res_class = "Expedite"; */ +/* XSetClassHint(disp, win, &chint); */ + + l1 = strlen("expedite"); + l2 = strlen("Expedite"); + str = (char *)malloc(l1 + l2 + 1); + memcpy(str, "expedite", l1); + str[l1] = '\0'; + memcpy(str + l1 + 1, "Expedite", l2); + + reply = xcb_intern_atom_reply(conn, cookie3, NULL); + wm_class = reply->atom; + free(reply); + + xcb_change_property(conn, XCB_PROP_MODE_REPLACE, win, + wm_class, string, 8, + l1 + l2 + 1, str); + free(str); + +/* szhints.flags = PMinSize | PMaxSize | PSize | USSize; */ +/* szhints.min_width = szhints.max_width = win_w; */ +/* szhints.min_height = szhints.max_height = win_h; */ +/* XSetWMNormalHints(disp, win, &szhints); */ + + memset(&hints, 0, sizeof(hints)); + hints.flags = XCB_SIZE_US_SIZE_HINT | XCB_SIZE_P_SIZE_HINT | XCB_SIZE_P_MIN_SIZE_HINT | XCB_SIZE_P_MAX_SIZE_HINT; + hints.min_width = win_w; + hints.max_width = win_w; + hints.min_height = win_h; + hints.max_height = win_h; + + reply = xcb_intern_atom_reply(conn, cookie4, NULL); + wm_normal_hint = reply->atom; + free(reply); + + reply = xcb_intern_atom_reply(conn, cookie5, NULL); + wm_size_hint = reply->atom; + free(reply); + + xcb_change_property(conn, XCB_PROP_MODE_REPLACE, win, + wm_normal_hint, wm_size_hint, 32, + sizeof(hints) / 4, &hints); + + free(xcb_get_input_focus_reply(conn, xcb_get_input_focus_unchecked(conn), NULL)); + + return 1; +} + +void +engine_software_xcb_loop(void) +{ + xcb_generic_event_t *ev; + + again: + ev = xcb_poll_for_event(conn); + if (!ev) + return; + + switch (ev->response_type) + { + case XCB_BUTTON_PRESS: + { + xcb_button_press_event_t *e; + + e = (xcb_button_press_event_t *)ev; + + evas_event_feed_mouse_move(evas, e->event_x, e->event_y, 0, NULL); + evas_event_feed_mouse_down(evas, e->detail, EVAS_BUTTON_NONE, 0, NULL); + break; + } + case XCB_BUTTON_RELEASE: + { + xcb_button_release_event_t *e; + + e = (xcb_button_release_event_t *)ev; + + evas_event_feed_mouse_move(evas, e->event_x, e->event_y, 0, NULL); + evas_event_feed_mouse_up(evas, e->detail, EVAS_BUTTON_NONE, 0, NULL); + break; + } + case XCB_MOTION_NOTIFY: + { + xcb_motion_notify_event_t *e; + + e = (xcb_motion_notify_event_t *)ev; + + evas_event_feed_mouse_move(evas, e->event_x, e->event_y, 0, NULL); + break; + } + case XCB_EXPOSE: + { + xcb_expose_event_t *e; + + e = (xcb_expose_event_t *)ev; + + evas_damage_rectangle_add(evas, + e->x, + e->y, + e->width, + e->height); + break; + } + case XCB_CONFIGURE_NOTIFY: + { + xcb_configure_notify_event_t *e; + + e = (xcb_configure_notify_event_t *)ev; + + evas_output_size_set(evas, + e->width, + e->height); + break; + } + case XCB_ENTER_NOTIFY: + evas_event_feed_mouse_in(evas, 0, NULL); + break; + case XCB_LEAVE_NOTIFY: + evas_event_feed_mouse_out(evas, 0, NULL); + break; + case XCB_KEY_PRESS: + { + xcb_key_press_event_t *e; + xcb_key_symbols_t *kss; + xcb_keysym_t ks; + char *str; + + e = (xcb_key_press_event_t *)ev; + + kss = xcb_key_symbols_alloc(conn); + + ks = xcb_key_symbols_get_keysym(kss, e->detail, 0); + + if ((ks == XK_Shift_L) || (ks == XK_Shift_R)) + evas_key_modifier_on(evas, "Shift"); + else if ((ks == XK_Control_L) || (ks == XK_Control_R)) + evas_key_modifier_on(evas, "Control"); + else if ((ks == XK_Alt_L) || (ks == XK_Alt_R)) + evas_key_modifier_on(evas, "Alt"); + else if ((ks == XK_Super_L) || (ks == XK_Super_R)) + evas_key_modifier_on(evas, "Super"); + else if (ks == XK_Caps_Lock) + { + if (evas_key_lock_is_set(evas_key_lock_get(evas), "Caps_Lock")) + evas_key_lock_off(evas, "Caps_Lock"); + else + evas_key_lock_on(evas, "Caps_Lock"); + } + else if (ks == XK_Scroll_Lock) + { + if (evas_key_lock_is_set(evas_key_lock_get(evas), "Scroll_Lock")) + evas_key_lock_off(evas, "Scroll_Lock"); + else + evas_key_lock_on(evas, "Scroll_Lock"); + } + + if (ks == XK_Left) + str = "Left"; + if (ks == XK_Right) + str = "Right"; + if (ks == XK_Escape) + str = "Escape"; + if (ks == XK_Return) + str = "Return"; + if (ks == 71) + str = "q"; + + evas_event_feed_key_down(evas, str, str, NULL, NULL, 0, NULL); + + xcb_key_symbols_free(kss); + break; + } + case XCB_KEY_RELEASE: + { + xcb_key_release_event_t *e; + xcb_key_symbols_t *kss; + xcb_keysym_t ks; + char *str; + + e = (xcb_key_release_event_t *)ev; + + kss = xcb_key_symbols_alloc(conn); + + ks = xcb_key_symbols_get_keysym(kss, e->detail, 0); + + if ((ks == XK_Shift_L) || (ks == XK_Shift_R)) + evas_key_modifier_on(evas, "Shift"); + else if ((ks == XK_Control_L) || (ks == XK_Control_R)) + evas_key_modifier_on(evas, "Control"); + else if ((ks == XK_Alt_L) || (ks == XK_Alt_R)) + evas_key_modifier_on(evas, "Alt"); + else if ((ks == XK_Super_L) || (ks == XK_Super_R)) + evas_key_modifier_on(evas, "Super"); + + if (ks == XK_Left) + str = "Left"; + if (ks == XK_Right) + str = "Right"; + if (ks == XK_Escape) + str = "Escape"; + if (ks == XK_Return) + str = "Return"; + if (ks == 71) + str = "q"; + + evas_event_feed_key_up(evas, str, str, NULL, NULL, 0, NULL); + + xcb_key_symbols_free(kss); + break; + } + default: + free(ev); + return; + } + free(ev); + + goto again; +} diff --git a/src/bin/engine_software_xcb.h b/src/bin/engine_software_xcb.h new file mode 100644 index 0000000..a25136d --- /dev/null +++ b/src/bin/engine_software_xcb.h @@ -0,0 +1,7 @@ +#ifndef ENGINE_SOFTWARE_XCB_H +#define ENGINE_SOFTWARE_XCB_H + +int engine_software_xcb_args(int argc, char **argv); +void engine_software_xcb_loop(void); + +#endif diff --git a/src/bin/main.c b/src/bin/main.c index 185d5a7..736e249 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -1186,41 +1186,33 @@ _engine_args(int argc, char **argv) if (engine_software_x11_args(argc, argv)) loop_func = engine_software_x11_loop; #endif -#if HAVE_EVAS_OPENGL_GLEW - if (engine_gl_glew_args(argc, argv)) - loop_func = engine_gl_glew_loop; +#if HAVE_EVAS_XRENDER_X11 + if (engine_xrender_x11_args(argc, argv)) + loop_func = engine_xrender_x11_loop; #endif #if HAVE_EVAS_OPENGL_X11 if (engine_gl_x11_args(argc, argv)) loop_func = engine_gl_x11_loop; #endif -#if HAVE_EVAS_XRENDER_X11 - if (engine_xrender_x11_args(argc, argv)) - loop_func = engine_xrender_x11_loop; -#endif -#if HAVE_EVAS_SOFTWARE_16_X11 - if (engine_software_16_x11_args(argc, argv)) - loop_func = engine_software_16_x11_loop; +#if HAVE_EVAS_SOFTWARE_XCB + if (engine_software_xcb_args(argc, argv)) + loop_func = engine_software_xcb_loop; #endif #if HAVE_EVAS_SOFTWARE_DDRAW if (engine_software_ddraw_args(argc, argv)) loop_func = engine_software_ddraw_loop; #endif -#if HAVE_EVAS_SOFTWARE_16_DDRAW - if (engine_software_16_ddraw_args(argc, argv)) - loop_func = engine_software_16_ddraw_loop; -#endif -#if HAVE_EVAS_SOFTWARE_SDL - if (engine_software_sdl_args(argc, argv)) - loop_func = engine_software_sdl_loop; -#endif #if HAVE_EVAS_DIRECT3D if (engine_direct3d_args(argc, argv)) loop_func = engine_direct3d_loop; #endif -#if HAVE_EVAS_SOFTWARE_16_WINCE - if (engine_software_16_wince_args(argc, argv)) - loop_func = engine_software_16_wince_loop; +#if HAVE_EVAS_OPENGL_GLEW + if (engine_gl_glew_args(argc, argv)) + loop_func = engine_gl_glew_loop; +#endif +#if HAVE_EVAS_SOFTWARE_SDL + if (engine_software_sdl_args(argc, argv)) + loop_func = engine_software_sdl_loop; #endif #if HAVE_EVAS_FB if (engine_fb_args(argc, argv)) @@ -1229,6 +1221,18 @@ _engine_args(int argc, char **argv) #if HAVE_EVAS_DIRECTFB if (engine_directfb_args(argc, argv)) loop_func = engine_directfb_loop; +#endif +#if HAVE_EVAS_SOFTWARE_16_X11 + if (engine_software_16_x11_args(argc, argv)) + loop_func = engine_software_16_x11_loop; +#endif +#if HAVE_EVAS_SOFTWARE_16_DDRAW + if (engine_software_16_ddraw_args(argc, argv)) + loop_func = engine_software_16_ddraw_loop; +#endif +#if HAVE_EVAS_SOFTWARE_16_WINCE + if (engine_software_16_wince_args(argc, argv)) + loop_func = engine_software_16_wince_loop; #endif if ((!loop_func) || (!profile_ok)) { @@ -1249,29 +1253,20 @@ _engine_args(int argc, char **argv) #if HAVE_EVAS_XRENDER_X11 " xr" #endif -#if HAVE_EVAS_OPENGL_GLEW - " gl-glew" -#endif #if HAVE_EVAS_OPENGL_X11 " gl" #endif -#if HAVE_EVAS_SOFTWARE_16_X11 - " x11-16" +#if HAVE_EVAS_SOFTWARE_XCB + " xcb" #endif #if HAVE_EVAS_SOFTWARE_DDRAW " ddraw" #endif -#if HAVE_EVAS_SOFTWARE_16_DDRAW - " ddraw-16" -#endif #if HAVE_EVAS_DIRECT3D " direct3d" #endif -#if HAVE_EVAS_SOFTWARE_16_WINCE - " wince" - " wince-fb" - " wince-gapi" - " wince-ddraw" +#if HAVE_EVAS_OPENGL_GLEW + " gl-glew" #endif #if HAVE_EVAS_SOFTWARE_SDL " sdl sdl-16" @@ -1281,6 +1276,18 @@ _engine_args(int argc, char **argv) #endif #if HAVE_EVAS_DIRECTFB " directfb" +#endif +#if HAVE_EVAS_SOFTWARE_16_X11 + " x11-16" +#endif +#if HAVE_EVAS_SOFTWARE_16_DDRAW + " ddraw-16" +#endif +#if HAVE_EVAS_SOFTWARE_16_WINCE + " wince" + " wince-fb" + " wince-gapi" + " wince-ddraw" #endif "\n" "Where PROFILE can be one of:\n" diff --git a/src/bin/main.h b/src/bin/main.h index 5c687b9..69b58bb 100644 --- a/src/bin/main.h +++ b/src/bin/main.h @@ -20,29 +20,23 @@ #if HAVE_EVAS_SOFTWARE_X11 #include "engine_software_x11.h" #endif -#if HAVE_EVAS_OPENGL_GLEW -#include "engine_gl_glew.h" +#if HAVE_EVAS_XRENDER_X11 +#include "engine_xrender_x11.h" #endif #if HAVE_EVAS_OPENGL_X11 #include "engine_gl_x11.h" #endif -#if HAVE_EVAS_XRENDER_X11 -#include "engine_xrender_x11.h" -#endif -#if HAVE_EVAS_SOFTWARE_16_X11 -#include "engine_software_16_x11.h" +#if HAVE_EVAS_SOFTWARE_XCB +#include "engine_software_xcb.h" #endif #if HAVE_EVAS_SOFTWARE_DDRAW #include "engine_software_ddraw.h" #endif -#if HAVE_EVAS_SOFTWARE_16_DDRAW -#include "engine_software_16_ddraw.h" -#endif #if HAVE_EVAS_DIRECT3D #include "engine_direct3d.h" #endif -#if HAVE_EVAS_SOFTWARE_16_WINCE -#include "engine_software_16_wince.h" +#if HAVE_EVAS_OPENGL_GLEW +#include "engine_gl_glew.h" #endif #if HAVE_EVAS_SOFTWARE_SDL #include "engine_software_sdl.h" @@ -53,6 +47,15 @@ #if HAVE_EVAS_DIRECTFB #include "engine_directfb.h" #endif +#if HAVE_EVAS_SOFTWARE_16_X11 +#include "engine_software_16_x11.h" +#endif +#if HAVE_EVAS_SOFTWARE_16_DDRAW +#include "engine_software_16_ddraw.h" +#endif +#if HAVE_EVAS_SOFTWARE_16_WINCE +#include "engine_software_16_wince.h" +#endif #include "ui.h" #include "about.h"