EAPI int e_canvas_engine_decide(int engine) { /* if use default - use it */ if (engine == E_EVAS_ENGINE_DEFAULT) engine = e_config->evas_engine_default; /* if engine is software-16 - do we support it? */ if (engine == E_EVAS_ENGINE_SOFTWARE_X11_16) { if (!ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_SOFTWARE_16_X11)) engine = E_EVAS_ENGINE_SOFTWARE_X11; } /* if engine is gl - do we support it? */ if (engine == E_EVAS_ENGINE_GL_X11) { /* if we dont - fall back to software x11 */ if (!ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_OPENGL_X11)) engine = E_EVAS_ENGINE_SOFTWARE_X11; } /* support xrender? */ if (engine == E_EVAS_ENGINE_XRENDER_X11) { /* if we dont - fall back to software x11 */ if (!ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_XRENDER_X11)) engine = E_EVAS_ENGINE_SOFTWARE_X11; } return engine; }
EAPI int wizard_page_show(E_Wizard_Page *pg) { Evas_Object *o, *of, *ob; Ecore_Evas *ee; #ifndef HAVE_WAYLAND_ONLY Ecore_X_Window_Attributes att; if (!ecore_x_composite_query()) return 0; if (!ecore_x_damage_query()) return 0; memset((&att), 0, sizeof(Ecore_X_Window_Attributes)); ecore_x_window_attributes_get(ecore_x_window_root_first_get(), &att); if ((att.depth <= 8)) return 0; gl_avail = ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_OPENGL_X11); #endif o = e_widget_list_add(pg->evas, 1, 0); e_wizard_title_set(_("Compositing")); of = e_widget_framelist_add(pg->evas, _("Settings"), 0); if (gl_avail) { ee = ecore_evas_gl_x11_new(NULL, 0, 0, 0, 320, 240); if (ee) { ecore_evas_free(ee); if ( (match_xorg_log("*(II)*NVIDIA*: Creating default Display*")) || (match_xorg_log("*(II)*intel*: Creating default Display*")) || (match_xorg_log("*(II)*NOUVEAU*: Creating default Display*")) || (match_xorg_log("*(II)*RADEON*: Creating default Display*")) ) { do_gl = 1; do_vsync = 1; } } ob = e_widget_check_add(pg->evas, _("Hardware Accelerated (OpenGL)"), &(do_gl)); e_widget_framelist_object_append(of, ob); ob = e_widget_check_add(pg->evas, _("Tear-free Rendering (OpenGL only)"), &(do_vsync)); e_widget_framelist_object_append(of, ob); } ob = e_widget_check_add(pg->evas, _("Disable composite effects"), &(disable_effects)); e_widget_framelist_object_append(of, ob); e_widget_list_object_append(o, of, 0, 0, 0.5); evas_object_show(of); e_wizard_page_show(o); return 0; /* 1 == show ui, and wait for user, 0 == just continue */ }
/** * Initialize libraries */ int elicit_libs_init(void) { BrInitError error; if (!br_init(&error) && error != BR_INIT_ERROR_DISABLED) fprintf(stderr, "[Elicit] Failed to initialize binreloc (error code: %d)\nFalling back to hardcoded paths.", error); if (!eina_init()) { fprintf(stderr, "[Elicit] Failed to initialize eina.\n"); return 0; } if (!ecore_init()) { fprintf(stderr, "[Elicit] Failed to initialize ecore.\n"); eina_shutdown(); return 0; } if (!ecore_evas_init() || !ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_SOFTWARE_XLIB)) { fprintf(stderr, "[Elicit] Failed to initialize ecore_evas.\n"); fprintf(stderr, "[Elicit] Make sure you have the evas software X11 engine installed.\n"); eina_shutdown(); ecore_shutdown(); return 0; } if (!ecore_file_init()) { fprintf(stderr, "[Elicit] Failed to initialize ecore_file.\n"); eina_shutdown(); ecore_shutdown(); ecore_evas_shutdown(); return 0; } if (!edje_init()) { fprintf(stderr, "[Elicit] Failed to initialize edje.\n"); eina_shutdown(); ecore_shutdown(); ecore_evas_shutdown(); ecore_file_shutdown(); return 0; } return 1; }
static Ecore_Evas * init_ecore_evas(const char *engine) { Ecore_Evas *ee = NULL; if (strcmp(engine, "x11-16") == 0) if (ecore_evas_engine_type_supported_get (ECORE_EVAS_ENGINE_SOFTWARE_X11_16)) { ee = ecore_evas_software_x11_16_new(NULL, 0, 0, 0, WIDTH, HEIGHT); fprintf(stderr, "Using X11 16bpp engine!\n"); } else { ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, WIDTH, HEIGHT); fprintf(stderr, "Using X11 engine!\n"); } else if (strcmp(engine, "x11") == 0) { ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, WIDTH, HEIGHT); fprintf(stderr, "Using X11 engine!\n"); } return ee; }
/* EAPI int wizard_page_init(E_Wizard_Page *pg __UNUSED__, Eina_Bool *need_xdg_desktops __UNUSED__, Eina_Bool *need_xdg_icons __UNUSED__) { return 1; } EAPI int wizard_page_shutdown(E_Wizard_Page *pg __UNUSED__) { return 1; } */ EAPI int wizard_page_show(E_Wizard_Page *pg) { Evas_Object *o, *of, *ob; Ecore_Evas *ee; Ecore_X_Window_Attributes att; if (!ecore_x_composite_query()) return 0; if (!ecore_x_damage_query()) return 0; memset((&att), 0, sizeof(Ecore_X_Window_Attributes)); ecore_x_window_attributes_get(ecore_x_window_root_first_get(), &att); if ((att.depth <= 8)) return 0; ee = ecore_evas_gl_x11_new(NULL, 0, 0, 0, 320, 240); if (ee) { ecore_evas_free(ee); if ( (match_xorg_log("*(II)*NVIDIA*: Creating default Display*")) || (match_xorg_log("*(II)*intel*: Creating default Display*")) || (match_xorg_log("*(II)*NOUVEAU*: Creating default Display*")) || (match_xorg_log("*(II)*RADEON*: Creating default Display*")) ) { do_gl = 1; do_vsync = 1; } } o = e_widget_list_add(pg->evas, 1, 0); e_wizard_title_set(_("Compositing")); of = e_widget_framelist_add(pg->evas, _("Transparent windows and effects"), 0); ob = e_widget_textblock_add(pg->evas); e_widget_size_min_set(ob, 260 * e_scale, 200 * e_scale); e_widget_textblock_markup_set (ob, _("Compositing provides translucency<br>" "for windows, window effects like<br>" "fading in and out and zooming<br>" "when they appear and dissapear.<br>" "It is highly recommended to<br>" "enable this for a better<br>" "experience, but it comes at a<br>" "cost. It requires extra CPU<br>" "or a GLSL Shader capable GPU<br>" "with well written drivers.<br>" "It also will add between 10 to<br>" "100 MB to the memory needed<br>" "for Enlightenment." ) ); e_widget_framelist_object_append(of, ob); ob = e_widget_check_add(pg->evas, _("Enable Compositing"), &(do_comp)); e_widget_framelist_object_append(of, ob); if (ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_OPENGL_X11)) { ob = e_widget_check_add(pg->evas, _("Hardware Accelerated (OpenGL)"), &(do_gl)); e_widget_framelist_object_append(of, ob); ob = e_widget_check_add(pg->evas, _("Tear-free Rendering (OpenGL only)"), &(do_vsync)); e_widget_framelist_object_append(of, ob); } e_widget_list_object_append(o, of, 0, 0, 0.5); evas_object_show(of); e_wizard_page_show(o); // pg->data = o; return 1; /* 1 == show ui, and wait for user, 0 == just continue */ }
bool EcoreEvasWindow::isEngineTypeSupported (EngineType et) { return ecore_evas_engine_type_supported_get (static_cast <Ecore_Evas_Engine_Type> (et)); }