add a proper elm api to request a prefeered evas rendering engine.

SVN revision: 68553
This commit is contained in:
Carsten Haitzler 2012-02-29 12:45:58 +00:00
parent 8b7e99754d
commit 8a65fc1495
4 changed files with 57 additions and 7 deletions

View File

@ -15,6 +15,7 @@ Elm_Config *_elm_config = NULL;
char *_elm_profile = NULL;
static Eet_Data_Descriptor *_config_edd = NULL;
static Eet_Data_Descriptor *_config_font_overlay_edd = NULL;
const char *_elm_preferred_engine = NULL;
static Ecore_Poller *_elm_cache_flush_poller = NULL;
@ -1419,7 +1420,6 @@ elm_config_all_flush(void)
#endif
}
static void
_translation_init()
{
@ -1448,6 +1448,11 @@ _elm_config_init(void)
_desc_init();
_profile_fetch_from_conf();
_config_load();
if (_elm_preferred_engine) eina_stringshare_del(_elm_preferred_engine);
if (_elm_config->engine)
_elm_preferred_engine = eina_stringshare_add(_elm_config->engine);
else
_elm_preferred_engine = NULL;
_translation_init();
_env_get();
_config_apply();
@ -1543,6 +1548,18 @@ _elm_config_engine_set(const char *engine)
_elm_config->engine = eina_stringshare_add(engine);
}
EAPI const char *
elm_preferred_engine_get(void)
{
return _elm_preferred_engine;
}
EAPI void
elm_preferred_engine_set(const char *engine)
{
eina_stringshare_replace(&(_elm_preferred_engine), engine);
}
void
_elm_config_profile_set(const char *profile)
{
@ -1595,6 +1612,11 @@ _elm_config_shutdown(void)
#endif
}
_config_free();
if (_elm_preferred_engine)
{
eina_stringshare_del(_elm_preferred_engine);
_elm_preferred_engine = NULL;
}
if (_elm_profile)
{
free(_elm_profile);

View File

@ -50,6 +50,33 @@ EAPI const char *elm_engine_get(void);
*/
EAPI void elm_engine_set(const char *engine);
/**
* @brief Get Elementary's preferred engine to use.
*
* @return The rendering engine's name
* @note there's no need to free the returned string, here.
*
* This gets the global rendering engine that is applied to all Elementary
* applications and is PREFERRED by the application. This can (and will)
* override the engine configured for all applications which.
*
* @see elm_preferred_engine_set()
*/
EAPI const char *elm_preferred_engine_get(void);
/**
* @brief Set Elementary's preferred rendering engine for use.
*
* @param engine The rendering engine's name
*
* Note that it will take effect only to Elementary windows created after
* this is called. This overrides the engine set by configuration at
* application startup. Note that it is a hint and may not be honored.
*
* @see elm_win_add()
*/
EAPI void elm_preferred_engine_set(const char *engine);
/**
* @}
*/

View File

@ -273,6 +273,7 @@ extern const char *_elm_lib_dir;
extern int _elm_log_dom;
extern Eina_List *_elm_win_list;
extern int _elm_win_deferred_free;
extern const char *_elm_preferred_engine;
#ifdef ENABLE_NLS
/* Our gettext wrapper, used to disable translation of elm if the app

View File

@ -867,7 +867,7 @@ _elm_win_xwindow_get(Elm_Win *win)
{
win->xwin = 0;
#define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
#define ENGINE_COMPARE(name) (!strcmp(_elm_preferred_engine, name))
if (ENGINE_COMPARE(ELM_SOFTWARE_X11))
{
if (win->ee) win->xwin = ecore_evas_software_x11_window_get(win->ee);
@ -1745,7 +1745,7 @@ elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type)
if (win->ee) \
elm_engine_set(ecore_evas_engine_name_get(win->ee)); \
} while (0)
#define ENGINE_COMPARE(name) (_elm_config->engine && !strcmp(_elm_config->engine, name))
#define ENGINE_COMPARE(name) (_elm_preferred_engine && !strcmp(_elm_preferred_engine, name))
win->kbdmode = ELM_WIN_KEYBOARD_UNKNOWN;
win->indmode = ELM_WIN_INDICATOR_UNKNOWN;
@ -1907,11 +1907,11 @@ elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type)
_elm_win_frame_add(win, "default");
// _elm_win_pointer_add(win, "default");
}
else if (!strncmp(_elm_config->engine, "shot:", 5))
else if (!strncmp(_elm_preferred_engine, "shot:", 5))
{
win->ee = ecore_evas_buffer_new(1, 1);
ecore_evas_manual_render_set(win->ee, EINA_TRUE);
win->shot.info = eina_stringshare_add(_elm_config->engine + 5);
win->shot.info = eina_stringshare_add(_elm_preferred_engine + 5);
_shot_init(win);
}
#undef FALLBACK_TRY
@ -2433,7 +2433,7 @@ elm_win_fullscreen_set(Evas_Object *obj, Eina_Bool fullscreen)
win = elm_widget_data_get(obj);
if (!win) return;
// YYY: handle if win->img_obj
#define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
#define ENGINE_COMPARE(name) (!strcmp(_elm_preferred_engine, name))
if (ENGINE_COMPARE(ELM_SOFTWARE_FB) ||
ENGINE_COMPARE(ELM_SOFTWARE_16_WINCE))
{
@ -2458,7 +2458,7 @@ elm_win_fullscreen_get(const Evas_Object *obj)
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
win = elm_widget_data_get(obj);
if (!win) return EINA_FALSE;
#define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
#define ENGINE_COMPARE(name) (!strcmp(_elm_preferred_engine, name))
if (ENGINE_COMPARE(ELM_SOFTWARE_FB) ||
ENGINE_COMPARE(ELM_SOFTWARE_16_WINCE))
{