#include <system_settings_util.h>
#include <system_settings_font.h>
-#include <efl_extension_config.h>
-
#ifdef TIZEN_WEARABLE
#define SMALL_FONT_DPI (-90)
#endif
#define SETTING_FONT_CONFIG_SO_PATH "/usr/lib/libfontconfig.so.1"
#define SETTING_ECORE_EVAS_SO_PATH "/usr/lib/libecore_evas.so.1"
+#define SETTING_EFL_EXTENSION_SO_PATH "/usr/lib/libefl-extension.so.0"
#define SETTING_EVAS_SO_PATH "/usr/lib/libevas.so.1"
static int __font_size_get();
void *d_font_handle = NULL;
void *d_ecore_evas_handle = NULL;
void *d_evas_handle = NULL;
+void *d_efl_eext_handle = NULL;
#define DYM_FUNC_LOADING(error, handle, pfunc, func_name) do { \
pfunc = (void*)dlsym(handle, func_name); \
if ((error = dlerror()) != NULL) { \
- SETTING_TRACE("ERROR!! canNOT find %s function at /usr/lib/libfontconfig.so.1", func_name); \
+ SETTING_TRACE("ERROR!! canNOT find %s function at %s", func_name, #handle); \
if (handle) \
dlclose(handle); \
return false; \
} \
} while (0)
+#define DYM_CLOSE_HANDLE(handle) do { \
+ if (handle) { \
+ dlclose(handle); \
+ handle = NULL; \
+ } \
+ } while (0)
+
+
+
+
int loading_dym_font()
{
char *error = NULL;
if (!d_font_handle) {
d_font_handle = dlopen(SETTING_FONT_CONFIG_SO_PATH, RTLD_LAZY);
if (!d_font_handle) {
- SETTING_TRACE("ERROR!! canNOT find /usr/lib/libfontconfig.so.1");
+ SETTING_TRACE("ERROR!! canNOT find "SETTING_FONT_CONFIG_SO_PATH);
return false;
}
}
if (!d_ecore_evas_handle) {
d_ecore_evas_handle = dlopen(SETTING_ECORE_EVAS_SO_PATH, RTLD_LAZY);
if (!d_ecore_evas_handle) {
- SETTING_TRACE("ERROR!! canNOT find /usr/lib/libecore_evas.so.1");
+ SETTING_TRACE("ERROR!! canNOT find"SETTING_ECORE_EVAS_SO_PATH);
return false;
}
}
if (!d_evas_handle) {
d_evas_handle = dlopen(SETTING_EVAS_SO_PATH, RTLD_LAZY);
if (!d_evas_handle) {
- SETTING_TRACE("ERROR!! canNOT find /usr/lib/libevas.so.1");
+ SETTING_TRACE("ERROR!! canNOT find"SETTING_EVAS_SO_PATH);
return false;
}
}
return true;
}
+void close_dym_efl()
+{
+ DYM_CLOSE_HANDLE(d_evas_handle);
+ DYM_CLOSE_HANDLE(d_ecore_evas_handle);
+}
+
+int loading_dym_efl_eext()
+{
+ char *error = NULL;
+
+ if (!d_efl_eext_handle) {
+ d_efl_eext_handle = dlopen(SETTING_EFL_EXTENSION_SO_PATH, RTLD_LAZY);
+ if (!d_efl_eext_handle) {
+ SETTING_TRACE("ERROR!! canNOT find "SETTING_EFL_EXTENSION_SO_PATH);
+ return false;
+ }
+ }
+
+
+ DYM_FUNC_LOADING(error, d_efl_eext_handle, d_eext_config_font_set, "eext_config_font_set");
+
+ return true;
+}
/* Returned family name should be free'd manually. */
char *__get_main_font_family_name_by_alias(char *alias)
return NULL;
font_config = d_FcInitLoadConfigAndFonts();
- if (font_config == NULL)
+ if (font_config == NULL) {
+ DYM_CLOSE_HANDLE(d_font_handle);
return ret;
+ }
pat = d_FcPatternBuild(0, FC_FAMILY, FcTypeString, alias, (char *)0);
d_FcConfigDestroy(font_config);
font_config = NULL;
}
+ DYM_CLOSE_HANDLE(d_font_handle);
return ret;
}
d_FcConfigDestroy(font_config);
font_config = NULL;
}
-
+ DYM_CLOSE_HANDLE(d_font_handle);
return ret;
}
Ecore_Evas *ee;
Evas *evas;
- if (!d_evas_init())
+ if (!d_evas_init()) {
+ close_dym_efl();
return false;
+ }
ee = d_ecore_evas_new(NULL, 0, 0, 100, 100, NULL);
evas = d_ecore_evas_get(ee);
}
d_ecore_evas_free(ee);
d_evas_shutdown();
+ close_dym_efl();
return result;
}
/* LCOV_EXCL_STOP */
if (!loading_dym_font())
return -1;
- if (font_name == NULL)
+ if (font_name == NULL) {
+ DYM_CLOSE_HANDLE(d_font_handle);
return -1;
+ }
font_config = d_FcInitLoadConfigAndFonts();
}
d_FcConfigDestroy(font_config);
font_config = NULL;
+ DYM_CLOSE_HANDLE(d_font_handle);
return ret;
}
/* LCOV_EXCL_STOP */
bool font_config_set(char *font_name)
{
SETTING_TRACE_BEGIN;
+ if (!loading_dym_efl_eext())
+ return false;
int font_size = __font_size_get();
- return eext_config_font_set(font_name, font_size);
+ bool ret = d_eext_config_font_set(font_name, font_size);
+ DYM_CLOSE_HANDLE(d_efl_eext_handle);
+ return ret;
}
/* LCOV_EXCL_STOP */
void __font_size_set()
{
SETTING_TRACE_BEGIN;
+ if (!loading_dym_efl_eext())
+ return;
int font_size = __font_size_get();
char *font_name = NULL;
font_name = vconf_get_str(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_NAME);
- eext_config_font_set(font_name, font_size);
+ d_eext_config_font_set(font_name, font_size);
+ DYM_CLOSE_HANDLE(d_efl_eext_handle);
g_free(font_name);
}
/* LCOV_EXCL_STOP */