raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=9149767184bfa9b64102eaea89f6733351de71e9
commit 9149767184bfa9b64102eaea89f6733351de71e9 Author: Carsten Haitzler (Rasterman) <[email protected]> Date: Thu Aug 8 23:55:40 2019 +0100 getenv - reduce continually calling getenv for the same vars do once do it once and remember the result from the first one. drops overhead for sure by a chunk i actually could see in perf reports like about 1-2% of cpu... --- src/lib/edje/edje_cache.c | 9 +- src/lib/eina/eina_mempool.c | 9 +- src/lib/eio/eio_monitor.c | 9 +- src/lib/elementary/elm_config.c | 210 ++++++++++++--------- src/lib/evas/file/evas_module.c | 41 ++-- .../evas/engines/gl_common/evas_gl_texture.c | 9 +- 6 files changed, 178 insertions(+), 109 deletions(-) diff --git a/src/lib/edje/edje_cache.c b/src/lib/edje/edje_cache.c index 23ced3c684..97d82ba58d 100644 --- a/src/lib/edje/edje_cache.c +++ b/src/lib/edje/edje_cache.c @@ -104,7 +104,14 @@ _edje_programs_patterns_init(Edje_Part_Collection *edc) if (ssp->signals_patterns) return; - if (getenv("EDJE_DUMP_PROGRAMS")) + static signed char dump_programs = -1; + + if (dump_programs == -1) + { + if (getenv("EDJE_DUMP_PROGRAMS")) dump_programs = 1; + else dump_programs = 0; + } + if (dump_programs == 1) { INF("Group '%s' programs:", edc->part); #define EDJE_DUMP_PROGRAM(Section) \ diff --git a/src/lib/eina/eina_mempool.c b/src/lib/eina/eina_mempool.c index a6d0d18fe2..56144a0f1c 100644 --- a/src/lib/eina/eina_mempool.c +++ b/src/lib/eina/eina_mempool.c @@ -68,7 +68,14 @@ _new_va(const char *name, Eina_Mempool_Backend *be; Eina_Mempool *mp = NULL; - if (getenv("EINA_MEMPOOL_PASS")) + static signed char mempool_pass = -1; + + if (mempool_pass == -1) + { + if (getenv("EINA_MEMPOOL_PASS")) mempool_pass = 1; + else mempool_pass = 0; + } + if (mempool_pass == 1) { be = eina_hash_find(_backends, "pass_through"); if (!be) be = eina_hash_find(_backends, name); diff --git a/src/lib/eio/eio_monitor.c b/src/lib/eio/eio_monitor.c index 84262bb329..bc1ed07db0 100644 --- a/src/lib/eio/eio_monitor.c +++ b/src/lib/eio/eio_monitor.c @@ -371,7 +371,14 @@ eio_monitor_stringshared_add(const char *path) EINA_REFCOUNT_INIT(monitor); - if (getenv("EIO_MONITOR_POLL")) + static signed char monpoll = -1; + + if (monpoll == -1) + { + if (getenv("EIO_MONITOR_POLL")) monpoll = 1; + else monpoll = 0; + } + if (monpoll) eio_monitor_fallback_add(monitor); else eio_monitor_backend_add(monitor); diff --git a/src/lib/elementary/elm_config.c b/src/lib/elementary/elm_config.c index c6da38ed27..e663ea5b24 100644 --- a/src/lib/elementary/elm_config.c +++ b/src/lib/elementary/elm_config.c @@ -634,6 +634,35 @@ end: return off; } +static Eina_Hash *_getenv_once_envs = NULL; +static const char *_getenv_once_empty = ""; + +static const char * +_getenv_once(const char *env) +{ + const char *s; + + if (_getenv_once_envs) + { + s = eina_hash_find(_getenv_once_envs, env); + if (s == _getenv_once_empty) return NULL; + if (s) return s; + } + else _getenv_once_envs = eina_hash_string_superfast_new(NULL); + s = getenv(env); + if (s) + { + s = eina_stringshare_add(s); + eina_hash_add(_getenv_once_envs, env, s); + return s; + } + else + { + eina_hash_add(_getenv_once_envs, env, _getenv_once_empty); + } + return NULL; +} + size_t _elm_config_user_dir_snprintf(char *dst, size_t size, @@ -647,7 +676,7 @@ _elm_config_user_dir_snprintf(char *dst, if (use_xdg_config == -1) { - if (getenv("ELM_CONFIG_DIR_XDG")) use_xdg_config = 1; + if (_getenv_once("ELM_CONFIG_DIR_XDG")) use_xdg_config = 1; else use_xdg_config = 0; } if (use_xdg_config) @@ -1443,12 +1472,13 @@ list_free: static void _profile_fetch_from_conf(void) { - char buf[PATH_MAX], *p, *s; + char buf[PATH_MAX], *p; + const char *s; Eet_File *ef = NULL; int len = 0, i; // if env var - use profile without question - s = getenv("ELM_PROFILE"); + s = _getenv_once("ELM_PROFILE"); if (s) { _elm_profile = strdup(s); @@ -2091,7 +2121,7 @@ _elm_config_profile_save(const char *profile) Eet_File *ef; size_t len; - if (_use_build_config || ((s = getenv("ELM_PROFILE_NOSAVE")) && atoi(s))) + if (_use_build_config || ((s = _getenv_once("ELM_PROFILE_NOSAVE")) && atoi(s))) return EINA_TRUE; len = _elm_config_user_dir_snprintf(buf, sizeof(buf), "config/profile.cfg"); @@ -2404,10 +2434,10 @@ _config_update(void) static void _env_get(void) { - char *s; + const char *s; double friction; - s = getenv("ELM_ENGINE"); + s = _getenv_once("ELM_ENGINE"); if (s) { if ((!strcasecmp(s, "x11")) || @@ -2464,47 +2494,47 @@ _env_get(void) eina_stringshare_replace(&_elm_preferred_engine, _elm_config->engine); } - s = getenv("ELM_VSYNC"); + s = _getenv_once("ELM_VSYNC"); if (s) _elm_config->vsync = !!atoi(s); - s = getenv("ELM_THUMBSCROLL_ENABLE"); + s = _getenv_once("ELM_THUMBSCROLL_ENABLE"); if (s) _elm_config->thumbscroll_enable = !!atoi(s); - s = getenv("ELM_THUMBSCROLL_THRESHOLD"); + s = _getenv_once("ELM_THUMBSCROLL_THRESHOLD"); if (s) _elm_config->thumbscroll_threshold = atoi(s); - s = getenv("ELM_THUMBSCROLL_HOLD_THRESHOLD"); + s = _getenv_once("ELM_THUMBSCROLL_HOLD_THRESHOLD"); if (s) _elm_config->thumbscroll_hold_threshold = atoi(s); // FIXME: floatformat locale issues here 1.0 vs 1,0 - should just be 1.0 - s = getenv("ELM_THUMBSCROLL_MOMENTUM_THRESHOLD"); + s = _getenv_once("ELM_THUMBSCROLL_MOMENTUM_THRESHOLD"); if (s) _elm_config->thumbscroll_momentum_threshold = _elm_atof(s); - s = getenv("ELM_THUMBSCROLL_FLICK_DISTANCE_TOLERANCE"); + s = _getenv_once("ELM_THUMBSCROLL_FLICK_DISTANCE_TOLERANCE"); if (s) _elm_config->thumbscroll_flick_distance_tolerance = atoi(s); - s = getenv("ELM_THUMBSCROLL_MOMENTUM_DISTANCE_MAX"); + s = _getenv_once("ELM_THUMBSCROLL_MOMENTUM_DISTANCE_MAX"); if (s) _elm_config->thumbscroll_momentum_distance_max = atoi(s); - s = getenv("ELM_THUMBSCROLL_FRICTION"); + s = _getenv_once("ELM_THUMBSCROLL_FRICTION"); if (s) _elm_config->thumbscroll_friction = _elm_atof(s); - s = getenv("ELM_THUMBSCROLL_MOMENTUM_FRICTION"); + s = _getenv_once("ELM_THUMBSCROLL_MOMENTUM_FRICTION"); if (s) _elm_config->thumbscroll_momentum_friction = _elm_atof(s); - s = getenv("ELM_THUMBSCROLL_MIN_FRICTION"); + s = _getenv_once("ELM_THUMBSCROLL_MIN_FRICTION"); if (s) _elm_config->thumbscroll_min_friction = _elm_atof(s); - s = getenv("ELM_THUMBSCROLL_FRICTION_STANDARD"); + s = _getenv_once("ELM_THUMBSCROLL_FRICTION_STANDARD"); if (s) _elm_config->thumbscroll_friction_standard = _elm_atof(s); - s = getenv("ELM_THUMBSCROLL_BOUNCE_ENABLE"); + s = _getenv_once("ELM_THUMBSCROLL_BOUNCE_ENABLE"); if (s) _elm_config->thumbscroll_bounce_enable = !!atoi(s); - s = getenv("ELM_THUMBSCROLL_BOUNCE_FRICTION"); + s = _getenv_once("ELM_THUMBSCROLL_BOUNCE_FRICTION"); if (s) _elm_config->thumbscroll_bounce_friction = _elm_atof(s); - s = getenv("ELM_THUMBSCROLL_ACCELERATION_THRESHOLD"); + s = _getenv_once("ELM_THUMBSCROLL_ACCELERATION_THRESHOLD"); if (s) _elm_config->thumbscroll_acceleration_threshold = _elm_atof(s); - s = getenv("ELM_THUMBSCROLL_ACCELERATION_TIME_LIMIT"); + s = _getenv_once("ELM_THUMBSCROLL_ACCELERATION_TIME_LIMIT"); if (s) _elm_config->thumbscroll_acceleration_time_limit = _elm_atof(s); - s = getenv("ELM_THUMBSCROLL_ACCELERATION_WEIGHT"); + s = _getenv_once("ELM_THUMBSCROLL_ACCELERATION_WEIGHT"); if (s) _elm_config->thumbscroll_acceleration_weight = _elm_atof(s); - s = getenv("ELM_PAGE_SCROLL_FRICTION"); + s = _getenv_once("ELM_PAGE_SCROLL_FRICTION"); if (s) _elm_config->page_scroll_friction = _elm_atof(s); - s = getenv("ELM_BRING_IN_SCROLL_FRICTION"); + s = _getenv_once("ELM_BRING_IN_SCROLL_FRICTION"); if (s) _elm_config->bring_in_scroll_friction = _elm_atof(s); - s = getenv("ELM_ZOOM_FRICTION"); + s = _getenv_once("ELM_ZOOM_FRICTION"); if (s) _elm_config->zoom_friction = _elm_atof(s); - s = getenv("ELM_THUMBSCROLL_BORDER_FRICTION"); + s = _getenv_once("ELM_THUMBSCROLL_BORDER_FRICTION"); if (s) { friction = _elm_atof(s); @@ -2516,7 +2546,7 @@ _env_get(void) _elm_config->thumbscroll_border_friction = friction; } - s = getenv("ELM_THUMBSCROLL_SENSITIVITY_FRICTION"); + s = _getenv_once("ELM_THUMBSCROLL_SENSITIVITY_FRICTION"); if (s) { friction = _elm_atof(s); @@ -2528,23 +2558,23 @@ _env_get(void) _elm_config->thumbscroll_sensitivity_friction = friction; } - s = getenv("ELM_SCROLL_SMOOTH_START_ENABLE"); + s = _getenv_once("ELM_SCROLL_SMOOTH_START_ENABLE"); if (s) _elm_config->scroll_smooth_start_enable = !!atoi(s); - s = getenv("ELM_SCROLL_ANIMATION_DISABLE"); + s = _getenv_once("ELM_SCROLL_ANIMATION_DISABLE"); if (s) _elm_config->scroll_animation_disable = !!atoi(s); - s = getenv("ELM_SCROLL_ACCEL_FACTOR"); + s = _getenv_once("ELM_SCROLL_ACCEL_FACTOR"); if (s) _elm_config->scroll_accel_factor = atof(s); -// s = getenv("ELM_SCROLL_SMOOTH_TIME_INTERVAL"); // not used anymore +// s = _getenv_once("ELM_SCROLL_SMOOTH_TIME_INTERVAL"); // not used anymore // if (s) _elm_config->scroll_smooth_time_interval = atof(s); // not used anymore - s = getenv("ELM_SCROLL_SMOOTH_AMOUNT"); + s = _getenv_once("ELM_SCROLL_SMOOTH_AMOUNT"); if (s) _elm_config->scroll_smooth_amount = _elm_atof(s); -// s = getenv("ELM_SCROLL_SMOOTH_HISTORY_WEIGHT"); // not used anymore +// s = _getenv_once("ELM_SCROLL_SMOOTH_HISTORY_WEIGHT"); // not used anymore // if (s) _elm_config->scroll_smooth_history_weight = _elm_atof(s); // not used anymore -// s = getenv("ELM_SCROLL_SMOOTH_FUTURE_TIME"); // not used anymore +// s = _getenv_once("ELM_SCROLL_SMOOTH_FUTURE_TIME"); // not used anymore // if (s) _elm_config->scroll_smooth_future_time = _elm_atof(s); // not used anymore - s = getenv("ELM_SCROLL_SMOOTH_TIME_WINDOW"); + s = _getenv_once("ELM_SCROLL_SMOOTH_TIME_WINDOW"); if (s) _elm_config->scroll_smooth_time_window = _elm_atof(s); - s = getenv("ELM_FOCUS_AUTOSCROLL_MODE"); + s = _getenv_once("ELM_FOCUS_AUTOSCROLL_MODE"); if (s) { if (!strcmp(s, "ELM_FOCUS_AUTOSCROLL_MODE_NONE")) @@ -2554,7 +2584,7 @@ _env_get(void) else _elm_config->focus_autoscroll_mode = ELM_FOCUS_AUTOSCROLL_MODE_SHOW; } - s = getenv("ELM_SLIDER_INDICATOR_VISIBLE_MODE"); + s = _getenv_once("ELM_SLIDER_INDICATOR_VISIBLE_MODE"); if (s) { if (!strcmp(s, "ELM_SLIDER_INDICATOR_VISIBLE_MODE_DEFAULT")) @@ -2566,10 +2596,10 @@ _env_get(void) else _elm_config->slider_indicator_visible_mode = ELM_SLIDER_INDICATOR_VISIBLE_MODE_NONE; } - s = getenv("ELM_THEME"); + s = _getenv_once("ELM_THEME"); if (s) eina_stringshare_replace(&_elm_config->theme, s); - s = getenv("ELM_FONT_HINTING"); + s = _getenv_once("ELM_FONT_HINTING"); if (s) { if (!strcasecmp(s, "none")) _elm_config->font_hinting = 0; @@ -2579,7 +2609,7 @@ _env_get(void) _elm_config->font_hinting = 2; } - s = getenv("ELM_FONT_PATH"); + s = _getenv_once("ELM_FONT_PATH"); if (s) { const char *p, *pp; @@ -2617,22 +2647,22 @@ _env_get(void) } } - s = getenv("ELM_IMAGE_CACHE"); + s = _getenv_once("ELM_IMAGE_CACHE"); if (s) _elm_config->image_cache = atoi(s); - s = getenv("ELM_FONT_CACHE"); + s = _getenv_once("ELM_FONT_CACHE"); if (s) _elm_config->font_cache = atoi(s); - s = getenv("ELM_SCALE"); + s = _getenv_once("ELM_SCALE"); if (s) _elm_config->scale = _elm_atof(s); - s = getenv("ELM_FINGER_SIZE"); + s = _getenv_once("ELM_FINGER_SIZE"); if (s) _elm_config->finger_size = atoi(s); - s = getenv("ELM_PASSWORD_SHOW_LAST"); + s = _getenv_once("ELM_PASSWORD_SHOW_LAST"); if (s) _elm_config->password_show_last = !!atoi(s); - s = getenv("ELM_PASSWORD_SHOW_LAST_TIMEOUT"); + s = _getenv_once("ELM_PASSWORD_SHOW_LAST_TIMEOUT"); if (s) { double pw_show_last_timeout = _elm_atof(s); @@ -2640,14 +2670,14 @@ _env_get(void) _elm_config->password_show_last_timeout = pw_show_last_timeout; } - s = getenv("ELM_FPS"); + s = _getenv_once("ELM_FPS"); if (s) _elm_config->fps = _elm_atof(s); if (_elm_config->fps < 1.0) _elm_config->fps = 1.0; - s = getenv("ELM_MODULES"); + s = _getenv_once("ELM_MODULES"); if (s) eina_stringshare_replace(&_elm_config->modules, s); - s = getenv("ELM_TOOLTIP_DELAY"); + s = _getenv_once("ELM_TOOLTIP_DELAY"); if (s) { double delay = _elm_atof(s); @@ -2655,113 +2685,113 @@ _env_get(void) _elm_config->tooltip_delay = delay; } - s = getenv("ELM_CURSOR_ENGINE_ONLY"); + s = _getenv_once("ELM_CURSOR_ENGINE_ONLY"); if (s) _elm_config->cursor_engine_only = !!atoi(s); - s = getenv("ELM_FOCUS_HIGHLIGHT_ENABLE"); + s = _getenv_once("ELM_FOCUS_HIGHLIGHT_ENABLE"); if (s) _elm_config->focus_highlight_enable = !!atoi(s); - s = getenv("ELM_FOCUS_HIGHLIGHT_ANIMATE"); + s = _getenv_once("ELM_FOCUS_HIGHLIGHT_ANIMATE"); if (s) _elm_config->focus_highlight_animate = !!atoi(s); - s = getenv("ELM_FOCUS_HIGHLIGHT_CLIP_DISABLE"); + s = _getenv_once("ELM_FOCUS_HIGHLIGHT_CLIP_DISABLE"); if (s) _elm_config->focus_highlight_clip_disable = !!atoi(s); - s = getenv("ELM_FOCUS_MOVE_POLICY"); + s = _getenv_once("ELM_FOCUS_MOVE_POLICY"); if (s) _elm_config->focus_move_policy = !!atoi(s); - s = getenv("ELM_ITEM_SELECT_ON_FOCUS_DISABLE"); + s = _getenv_once("ELM_ITEM_SELECT_ON_FOCUS_DISABLE"); if (s) _elm_config->item_select_on_focus_disable = !!atoi(s); - s = getenv("ELM_FIRST_ITEM_FOCUS_ON_FIRST_FOCUS_IN"); + s = _getenv_once("ELM_FIRST_ITEM_FOCUS_ON_FIRST_FOCUS_IN"); if (s) _elm_config->first_item_focus_on_first_focus_in = !!atoi(s); - s = getenv("ELM_TOOLBAR_SHRINK_MODE"); + s = _getenv_once("ELM_TOOLBAR_SHRINK_MODE"); if (s) _elm_config->toolbar_shrink_mode = atoi(s); - s = getenv("ELM_FILESELECTOR_EXPAND_ENABLE"); + s = _getenv_once("ELM_FILESELECTOR_EXPAND_ENABLE"); if (s) _elm_config->fileselector_expand_enable = !!atoi(s); - s = getenv("ELM_FILESELECTOR_DOUBLE_TAP_NAVIGATION_ENABLE"); + s = _getenv_once("ELM_FILESELECTOR_DOUBLE_TAP_NAVIGATION_ENABLE"); if (s) _elm_config->fileselector_double_tap_navigation_enable = !!atoi(s); - s = getenv("ELM_INWIN_DIALOGS_ENABLE"); + s = _getenv_once("ELM_INWIN_DIALOGS_ENABLE"); if (s) _elm_config->inwin_dialogs_enable = !!atoi(s); - s = getenv("ELM_ICON_SIZE"); + s = _getenv_once("ELM_ICON_SIZE"); if (s) _elm_config->icon_size = atoi(s); - s = getenv("ELM_CONTEXT_MENU_DISABLED"); + s = _getenv_once("ELM_CONTEXT_MENU_DISABLED"); if (s) _elm_config->context_menu_disabled = !!atoi(s); - s = getenv("ELM_LONGPRESS_TIMEOUT"); + s = _getenv_once("ELM_LONGPRESS_TIMEOUT"); if (s) _elm_config->longpress_timeout = _elm_atof(s); if (_elm_config->longpress_timeout < 0.0) _elm_config->longpress_timeout = 0.0; - s = getenv("ELM_EFFECT_ENABLE"); + s = _getenv_once("ELM_EFFECT_ENABLE"); if (s) _elm_config->effect_enable = !!atoi(s); - s = getenv("ELM_DESKTOP_ENTRY"); + s = _getenv_once("ELM_DESKTOP_ENTRY"); if (s) _elm_config->desktop_entry = !!atoi(s); - s = getenv("ELM_ACCESS_MODE"); + s = _getenv_once("ELM_ACCESS_MODE"); if (s) _elm_config->access_mode = ELM_ACCESS_MODE_ON; - s = getenv("ELM_SELECTION_CLEAR_ENABLE"); + s = _getenv_once("ELM_SELECTION_CLEAR_ENABLE"); if (s) _elm_config->selection_clear_enable = !!atoi(s); - s = getenv("ELM_AUTO_THROTTLE"); + s = _getenv_once("ELM_AUTO_THROTTLE"); if (s) _elm_config->auto_throttle = EINA_TRUE; - s = getenv("ELM_AUTO_THROTTLE_AMOUNT"); + s = _getenv_once("ELM_AUTO_THROTTLE_AMOUNT"); if (s) _elm_config->auto_throttle_amount = _elm_atof(s); - s = getenv("ELM_AUTO_NORENDER_WITHDRAWN"); + s = _getenv_once("ELM_AUTO_NORENDER_WITHDRAWN"); if (s) _elm_config->auto_norender_withdrawn = EINA_TRUE; - s = getenv("ELM_AUTO_NORENDER_ICONIFIED_SAME_AS_WITHDRAWN"); + s = _getenv_once("ELM_AUTO_NORENDER_ICONIFIED_SAME_AS_WITHDRAWN"); if (s) _elm_config->auto_norender_iconified_same_as_withdrawn = EINA_TRUE; - s = getenv("ELM_AUTO_FLUSH_WITHDRAWN"); + s = _getenv_once("ELM_AUTO_FLUSH_WITHDRAWN"); if (s) _elm_config->auto_flush_withdrawn = EINA_TRUE; - s = getenv("ELM_AUTO_DUMP_WIDTHDRAWN"); + s = _getenv_once("ELM_AUTO_DUMP_WIDTHDRAWN"); if (s) _elm_config->auto_dump_withdrawn = EINA_TRUE; - s = getenv("ELM_INDICATOR_SERVICE_0"); + s = _getenv_once("ELM_INDICATOR_SERVICE_0"); if (s) eina_stringshare_replace(&_elm_config->indicator_service_0, s); - s = getenv("ELM_INDICATOR_SERVICE_90"); + s = _getenv_once("ELM_INDICATOR_SERVICE_90"); if (s) eina_stringshare_replace(&_elm_config->indicator_service_90, s); - s = getenv("ELM_INDICATOR_SERVICE_180"); + s = _getenv_once("ELM_INDICATOR_SERVICE_180"); if (s) eina_stringshare_replace(&_elm_config->indicator_service_180, s); - s = getenv("ELM_INDICATOR_SERVICE_270"); + s = _getenv_once("ELM_INDICATOR_SERVICE_270"); if (s) eina_stringshare_replace(&_elm_config->indicator_service_270, s); - s = getenv("ELM_DISABLE_EXTERNAL_MENU"); + s = _getenv_once("ELM_DISABLE_EXTERNAL_MENU"); if (s) _elm_config->disable_external_menu = !!atoi(s); - s = getenv("ELM_CLOUSEAU"); + s = _getenv_once("ELM_CLOUSEAU"); if (s) _elm_config->clouseau_enable = atoi(s); - s = getenv("ELM_MAGNIFIER_ENABLE"); + s = _getenv_once("ELM_MAGNIFIER_ENABLE"); if (s) _elm_config->magnifier_enable = !!atoi(s); - s = getenv("ELM_MAGNIFIER_SCALE"); + s = _getenv_once("ELM_MAGNIFIER_SCALE"); if (s) _elm_config->magnifier_scale = _elm_atof(s); - s = getenv("ELM_ATSPI_MODE"); + s = _getenv_once("ELM_ATSPI_MODE"); if (s) _elm_config->atspi_mode = ELM_ATSPI_MODE_ON; - s = getenv("ELM_SPINNER_MIN_MAX_FILTER_ENABLE"); + s = _getenv_once("ELM_SPINNER_MIN_MAX_FILTER_ENABLE"); if (s) _elm_config->spinner_min_max_filter_enable = !!atoi(s); - s = getenv("ELM_TRANSITION_DURATION_FACTOR"); + s = _getenv_once("ELM_TRANSITION_DURATION_FACTOR"); if (s) _elm_config->transition_duration_factor = atof(s); - s = getenv("ELM_POPUP_HORIZONTAL_ALIGN"); + s = _getenv_once("ELM_POPUP_HORIZONTAL_ALIGN"); if (s) _elm_config->popup_horizontal_align = _elm_atof(s); - s = getenv("ELM_POPUP_VERTICAL_ALIGN"); + s = _getenv_once("ELM_POPUP_VERTICAL_ALIGN"); if (s) _elm_config->popup_vertical_align = _elm_atof(s); - s = getenv("ELM_POPUP_SCROLLABLE"); + s = _getenv_once("ELM_POPUP_SCROLLABLE"); if (s) _elm_config->popup_scrollable = atoi(s); - s = getenv("ELM_GLAYER_TAP_FINGER_SIZE"); + s = _getenv_once("ELM_GLAYER_TAP_FINGER_SIZE"); if (s) _elm_config->glayer_tap_finger_size = atoi(s); - s = getenv("EFL_UI_DND_DRAG_ANIM_DURATION"); + s = _getenv_once("EFL_UI_DND_DRAG_ANIM_DURATION"); if (s) _elm_config->drag_anim_duration = _elm_atof(s); - s = getenv("ELM_WIN_NO_BORDER"); + s = _getenv_once("ELM_WIN_NO_BORDER"); if (s) _elm_config->win_no_border = EINA_TRUE; } diff --git a/src/lib/evas/file/evas_module.c b/src/lib/evas/file/evas_module.c index b467ebcdbf..a1e8b623af 100644 --- a/src/lib/evas/file/evas_module.c +++ b/src/lib/evas/file/evas_module.c @@ -116,7 +116,14 @@ evas_module_paths_init(void) if (getuid() == geteuid()) #endif { - if (getenv("EFL_RUN_IN_TREE")) + static signed char run_in_tree = -1; + + if (run_in_tree == -1) + { + if (getenv("EFL_RUN_IN_TREE")) run_in_tree = 1; + else run_in_tree = 0; + } + if (run_in_tree == 1) { struct stat st; const char mp[] = PACKAGE_BUILD_DIR"/src/modules/evas"; @@ -432,9 +439,13 @@ evas_module_engine_list(void) const char *s, *s2; char buf[PATH_MAX]; #ifdef NEED_RUN_IN_TREE - Eina_Bool run_in_tree; + static signed char run_in_tree = -1; - run_in_tree = !!getenv("EFL_RUN_IN_TREE"); + if (run_in_tree == -1) + { + if (getenv("EFL_RUN_IN_TREE")) run_in_tree = 1; + else run_in_tree = 0; + } #endif EINA_LIST_FOREACH(evas_module_paths, l, s) @@ -455,7 +466,7 @@ evas_module_engine_list(void) if (getuid() == geteuid()) #endif { - if (run_in_tree) + if (run_in_tree == 1) { bs_mod_dir_get(buf, sizeof(buf), "evas/engines", fname); if (!evas_file_path_exists(buf)) @@ -549,7 +560,13 @@ evas_module_find_type(Evas_Module_Type type, const char *name) Eina_Module *en; Eina_List *l; #ifdef NEED_RUN_IN_TREE - Eina_Bool run_in_tree; + static signed char run_in_tree = -1; + + if (run_in_tree == -1) + { + if (getenv("EFL_RUN_IN_TREE")) run_in_tree = 1; + else run_in_tree = 0; + } #endif if ((unsigned int)type > 5) return NULL; @@ -561,10 +578,6 @@ evas_module_find_type(Evas_Module_Type type, const char *name) return NULL; } -#ifdef NEED_RUN_IN_TREE - run_in_tree = !!getenv("EFL_RUN_IN_TREE"); -#endif - EINA_LIST_FOREACH(evas_module_paths, l, path) { const char *type_str = "unknown"; @@ -584,7 +597,7 @@ evas_module_find_type(Evas_Module_Type type, const char *name) if (getuid() == geteuid()) #endif { - if (run_in_tree) + if (run_in_tree == 1) { char subsystem[PATH_MAX]; @@ -700,7 +713,7 @@ evas_module_clean(void) { static int call_count = 0; /* int ago; */ - int noclean = -1; + static signed char noclean = -1; /* Eina_List *l; */ /* Evas_Module *em; */ @@ -711,10 +724,8 @@ evas_module_clean(void) if (noclean == -1) { - if (getenv("EVAS_NOCLEAN")) - noclean = 1; - else - noclean = 0; + if (getenv("EVAS_NOCLEAN")) noclean = 1; + else noclean = 0; } if (noclean == 1) return; diff --git a/src/modules/evas/engines/gl_common/evas_gl_texture.c b/src/modules/evas/engines/gl_common/evas_gl_texture.c index cc5ed6bd13..ef99962261 100644 --- a/src/modules/evas/engines/gl_common/evas_gl_texture.c +++ b/src/modules/evas/engines/gl_common/evas_gl_texture.c @@ -180,7 +180,14 @@ evas_gl_common_gl_format_to_colorspace(GLuint f) static void _print_tex_count(void) { - if (getenv("EVAS_GL_MEMINFO")) + static signed char printit = -1; + + if (printit == -1) + { + if (getenv("EVAS_GL_MEMINFO")) printit = 1; + else printit = 0; + } + if (printit == 1) { fprintf(stderr, "T: c:%i/%ik | a:%i/%ik | v:%i/%ik | r:%i/%ik | n:%i/%ik | d:%i/%ik\n", --
