summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLucas <Coquinho@users.noreply.github.com>2020-08-05 11:49:12 -0300
committerFelipe Magno de Almeida <felipe@expertise.dev>2021-01-06 13:49:44 -0300
commitf7c9d19d34dc04dd3842525601381f7f60865f2f (patch)
treefab92874f04b294bebb45f46bd1137b3c6443bd0
parent6bc474865731e5ed3fc9040c85ff2ff75ea89d0b (diff)
downloadefl-f7c9d19d34dc04dd3842525601381f7f60865f2f.tar.gz
ethumb: Make ethumb optional
This commit is based on 748e89e703 with a small change to compile in Linux. Original changes: - ethumb(_client) depend on `ethumb` option - Remove ethumb(_client) from ignored subprojects - Remove ethumb_client from default elementary dependencies Additional changes: - Surround `_elm_unneed_ethumb();` call in `src/lib/elementary/elm_main.c` with `#ifdef HAVE_ETHUMB`. Co-authored-by: Felipe Magno de Almeida <felipe@expertise.dev>
-rw-r--r--meson.build10
-rw-r--r--meson_options.txt6
-rw-r--r--src/bin/elementary/meson.build6
-rw-r--r--src/bin/elementary/test.c2
-rw-r--r--src/bin/elementary/test_fileselector.c2
-rw-r--r--src/bin/elementary/test_photo.c2
-rw-r--r--src/edje_external/elementary/meson.build5
-rw-r--r--src/edje_external/elementary/modules.inc2
-rw-r--r--src/examples/elementary/filemvc.c8
-rw-r--r--src/examples/elementary/fileselector_example.c2
-rw-r--r--src/examples/elementary/meson.build5
-rw-r--r--src/lib/efl/Efl_Config.h.in2
-rw-r--r--src/lib/elementary/Elementary.h4
-rw-r--r--src/lib/elementary/elm_icon.c20
-rw-r--r--src/lib/elementary/elm_main.c2
-rw-r--r--src/lib/elementary/elm_widget_icon.h3
-rw-r--r--src/lib/elementary/meson.build11
-rw-r--r--src/tests/elementary/elm_suite.c2
-rw-r--r--src/tests/elementary/meson.build5
19 files changed, 87 insertions, 12 deletions
diff --git a/meson.build b/meson.build
index ba34a9c311..267db9255e 100644
--- a/meson.build
+++ b/meson.build
@@ -345,9 +345,9 @@ subprojects = [
['ephysics' ,['physics'] , false, true, false, false, false, false, true, ['eina', 'efl', 'eo'], []],
['edje' ,[] , false, true, true, false, true, true, true, ['evas', 'eo', 'efl', lua_pc_name], []],
['emotion' ,[] , true, true, false, false, true, true, true, ['eina', 'efl', 'eo'], []],
- ['ethumb' ,[] , true, true, true, false, false, false, true, ['eina', 'efl', 'eo'], []],
- ['ethumb_client' ,[] , false, true, true, false, false, true, true, ['eina', 'efl', 'eo', 'ethumb'], []],
- ['elementary' ,[] , true, true, true, true, true, true, true, ['eina', 'efl', 'eo', 'eet', 'evas', 'ecore', 'ecore-evas', 'ecore-file', 'ecore-input', 'edje', 'ethumb-client', 'emotion', 'ecore-imf', 'ecore-con', 'eldbus', 'efreet', 'efreet-mime', 'efreet-trash', 'eio'], ['atspi']],
+ ['ethumb' ,['ethumb'] , true, true, true, false, false, false, true, ['eina', 'efl', 'eo'], []],
+ ['ethumb_client' ,['ethumb'] , false, true, true, false, false, true, true, ['eina', 'efl', 'eo', 'ethumb'], []],
+ ['elementary' ,[] , true, true, true, true, true, true, true, ['eina', 'efl', 'eo', 'eet', 'evas', 'ecore', 'ecore-evas', 'ecore-file', 'ecore-input', 'edje', 'emotion', 'ecore-imf', 'ecore-con', 'eldbus', 'efreet', 'efreet-mime', 'efreet-trash', 'eio'], ['atspi']],
['efl_canvas_wl' ,['wl'] , false, true, true, false, false, false, true, ['eina', 'efl', 'eo', 'evas', 'ecore'], []],
['elua' ,['elua'] , false, true, true, false, true, false, false, ['eina', lua_pc_name], []],
['ecore_wayland' ,['wl-deprecated'] , false, true, false, false, false, false, false, ['eina'], []],
@@ -375,12 +375,15 @@ efl_one_include_dirs = []
efl_one_sub_dirs = []
tmp_empty = declare_dependency()
+efl_config_h = configuration_data()
+
foreach package : subprojects
package_name = package[0]
package_version_name = '-'.join(package_name.split('_')) + '-' + version_major
automatic_pkgfile = true
if package[1].length() == 0 or get_option(package[1][0])
config_h.set('HAVE_' + package_name.to_upper().underscorify(), '1')
+ efl_config_h.set('HAVE_' + package_name.to_upper().underscorify(), '1')
dir_package_include = join_paths(dir_include, package_version_name)
dir_package_modules = join_paths(dir_lib, package_name, 'modules')
@@ -628,7 +631,6 @@ endif
# Configure files
#
-efl_config_h = configuration_data()
efl_config_h.set('EFL_VERSION_MAJOR', version_major)
efl_config_h.set('EFL_VERSION_MINOR', version_minor)
efl_config_h.set('EFL_VERSION_MICRO', version_micro)
diff --git a/meson_options.txt b/meson_options.txt
index f5ffb0e134..c2954e04d2 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -58,6 +58,12 @@ option('physics',
description : 'Physics engine (bullet) in efl'
)
+option('ethumb',
+ type : 'boolean',
+ value : true,
+ description : 'Library and service for thumbnail generation and caching'
+)
+
option('eeze',
type : 'boolean',
value : true,
diff --git a/src/bin/elementary/meson.build b/src/bin/elementary/meson.build
index 1d7aa75057..f703263770 100644
--- a/src/bin/elementary/meson.build
+++ b/src/bin/elementary/meson.build
@@ -128,7 +128,6 @@ elementary_test_src = [
'test_sys_notify.c',
'test_systray.c',
'test_table.c',
- 'test_thumb.c',
'test_toolbar.c',
'test_tooltip.c',
'test_transit.c',
@@ -172,10 +171,15 @@ if sys_windows == false
link_args += ['-rdynamic', '-fPIC']
package_c_args = package_c_args + ['-fPIC']
endif
+
if sys_windows == false and sys_sun == false
link_args += ['-pie']
endif
+if get_option('ethumb')
+ elementary_test_src += ['test_thumb.c']
+endif
+
elementary_test = executable('elementary_test',
elementary_test_src,
dependencies: [elementary, intl] + elementary_deps + elementary_pub_deps,
diff --git a/src/bin/elementary/test.c b/src/bin/elementary/test.c
index d0d374ece4..0661086cde 100644
--- a/src/bin/elementary/test.c
+++ b/src/bin/elementary/test.c
@@ -877,7 +877,9 @@ add_tests:
ADD_TEST(NULL, "Images", "Photocam Icon", test_photocam_icon);
ADD_TEST_EO(NULL, "Images", "Image Zoomable animation", test_image_zoomable_animated);
ADD_TEST(NULL, "Images", "Photo", test_photo);
+#ifdef HAVE_ETHUMB
ADD_TEST(NULL, "Images", "Thumb", test_thumb);
+#endif
ADD_TEST(NULL, "Images", "Image", test_image);
ADD_TEST(NULL, "Images", "Image Scale Type", test_image_scale_type);
ADD_TEST(NULL, "Images", "Image Align", test_image_swallow_align);
diff --git a/src/bin/elementary/test_fileselector.c b/src/bin/elementary/test_fileselector.c
index 880162e9d2..722825cf25 100644
--- a/src/bin/elementary/test_fileselector.c
+++ b/src/bin/elementary/test_fileselector.c
@@ -549,7 +549,9 @@ test_fileselector(void *data EINA_UNUSED,
*/
setlocale(LC_ALL, "");
+#ifdef HAVE_ETHUMB
elm_need_ethumb();
+#endif
elm_need_efreet();
win = elm_win_util_standard_add("fileselector", "File Selector");
diff --git a/src/bin/elementary/test_photo.c b/src/bin/elementary/test_photo.c
index 7a6e0baf53..34f2e7a5bf 100644
--- a/src/bin/elementary/test_photo.c
+++ b/src/bin/elementary/test_photo.c
@@ -42,7 +42,9 @@ test_photo(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_inf
"wood_01.jpg"
};
+#ifdef HAVE_ETHUMB
elm_need_ethumb();
+#endif
win = elm_win_util_standard_add("photo", "Photo");
elm_win_autodel_set(win, EINA_TRUE);
diff --git a/src/edje_external/elementary/meson.build b/src/edje_external/elementary/meson.build
index 033b54eab8..31ad3d53a5 100644
--- a/src/edje_external/elementary/meson.build
+++ b/src/edje_external/elementary/meson.build
@@ -34,12 +34,15 @@ edje_external_elementary = [
'elm_slider.c',
'elm_slideshow.c',
'elm_spinner.c',
- 'elm_thumb.c',
'elm_toolbar.c',
'elm_video.c',
'elm_web.c'
]
+if get_option('ethumb')
+ edje_external_elementary += ['elm_thumb.c']
+endif
+
ecore_systemd_mod = shared_module('elementary',
edje_external_elementary,
dependencies: [edje, elementary, elementary_deps],
diff --git a/src/edje_external/elementary/modules.inc b/src/edje_external/elementary/modules.inc
index dbfead5183..2037184966 100644
--- a/src/edje_external/elementary/modules.inc
+++ b/src/edje_external/elementary/modules.inc
@@ -31,7 +31,9 @@ DEFINE_TYPE(segment_control)
DEFINE_TYPE(slider)
DEFINE_TYPE(slideshow)
DEFINE_TYPE(spinner)
+#ifdef HAVE_ETHUMB
DEFINE_TYPE(thumb)
+#endif
DEFINE_TYPE(toolbar)
DEFINE_TYPE(video)
DEFINE_TYPE(web)
diff --git a/src/examples/elementary/filemvc.c b/src/examples/elementary/filemvc.c
index dfe73c8b2b..e33c8c2f3a 100644
--- a/src/examples/elementary/filemvc.c
+++ b/src/examples/elementary/filemvc.c
@@ -22,7 +22,9 @@ struct _Efl_Model_Test_Filemvc_Data
Eo *treeview;
Eo *formview;
Eo *treemodel;
+#ifdef HAVE_ETHUMB
Evas_Object *thumb;
+#endif
char imagedefault_path[256];
};
typedef struct _Efl_Model_Test_Filemvc_Data Efl_Model_Test_Filemvc_Data;
@@ -49,7 +51,9 @@ _list_selected_cb(void *data EINA_UNUSED, const Efl_Event *event)
{
Efl_Model_Test_Filemvc_Data *priv = data;
Eo *child = event->info;
+#ifdef HAVE_ETHUMB
ethumb_client_file_free(elm_thumb_ethumb_client_get());
+#endif
printf("LIST selected model\n");
elm_view_form_model_set(priv->formview, child);
@@ -89,6 +93,7 @@ _label_init(Evas_Object *win, Evas_Object *box, const char *text)
}
+#ifdef HAVE_ETHUMB
static void
_thumb_error_cb(void *data, Evas_Object *o EINA_UNUSED, void *event_info EINA_UNUSED)
{
@@ -97,6 +102,7 @@ _thumb_error_cb(void *data, Evas_Object *o EINA_UNUSED, void *event_info EINA_UN
elm_thumb_file_set(priv->thumb, priv->imagedefault_path, NULL);
elm_thumb_reload(priv->thumb);
}
+#endif
EAPI_MAIN int
elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
@@ -177,6 +183,7 @@ elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
elm_view_form_widget_add(priv.formview, "path", entry);
/* Thumb widget */
+#ifdef HAVE_ETHUMB
elm_need_ethumb();
priv.thumb = elm_thumb_add(win);
_widget_init(priv.thumb);
@@ -185,6 +192,7 @@ elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
elm_view_form_widget_add(priv.formview, "path", priv.thumb);
evas_object_smart_callback_add(priv.thumb, "generate,error", _thumb_error_cb, &priv);
evas_object_smart_callback_add(priv.thumb, "load,error", _thumb_error_cb, &priv);
+#endif
//showall
evas_object_resize(win, 800, 400);
diff --git a/src/examples/elementary/fileselector_example.c b/src/examples/elementary/fileselector_example.c
index db6dbee256..fa13f2a27a 100644
--- a/src/examples/elementary/fileselector_example.c
+++ b/src/examples/elementary/fileselector_example.c
@@ -113,7 +113,9 @@ elm_main(int argc EINA_UNUSED,
*/
setlocale(LC_ALL, "");
+#ifdef HAVE_ETHUMB
elm_need_ethumb(); /* let's have thumbnails of images on grid view */
+#endif
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
win = elm_win_util_standard_add("fileselector", "File Selector Example");
diff --git a/src/examples/elementary/meson.build b/src/examples/elementary/meson.build
index 7abffa8a2f..563560efe9 100644
--- a/src/examples/elementary/meson.build
+++ b/src/examples/elementary/meson.build
@@ -90,7 +90,6 @@ examples = [
'table_example_02',
'theme_example_01',
'theme_example_02',
- 'thumb_example_01',
'toolbar_example_01',
'toolbar_example_02',
'toolbar_example_03',
@@ -123,6 +122,10 @@ examples = [
'efl_canvas_textblock_obstacles_example'
]
+if get_option('ethumb')
+ examples += ['thumb_example_01']
+endif
+
foreach example : examples
executable(example, example + '.c', dependencies: [elementary, ecore, eio, m])
endforeach
diff --git a/src/lib/efl/Efl_Config.h.in b/src/lib/efl/Efl_Config.h.in
index 3dbef96659..3f5937f1dd 100644
--- a/src/lib/efl/Efl_Config.h.in
+++ b/src/lib/efl/Efl_Config.h.in
@@ -14,4 +14,6 @@
#define EFL_VERSION_MICRO @EFL_VERSION_MICRO@
#define EFL_BUILD_ID "@EFL_BUILD_ID@"
+#mesondefine HAVE_ETHUMB
+
#endif
diff --git a/src/lib/elementary/Elementary.h b/src/lib/elementary/Elementary.h
index 1721be4f73..0ce8fd8e35 100644
--- a/src/lib/elementary/Elementary.h
+++ b/src/lib/elementary/Elementary.h
@@ -72,7 +72,9 @@
#include <Efreet.h>
#include <Efreet_Mime.h>
#include <Efreet_Trash.h>
+#ifdef HAVE_ETHUMB
#include <Ethumb_Client.h>
+#endif
#ifdef ELM_EMAP
#include <EMap.h>
@@ -225,7 +227,9 @@ ELM_API extern Elm_Version *elm_version;
#include <elm_table.h>
#include <elm_textpath.h>
#include <elm_theme.h>
+#ifdef HAVE_ETHUMB
#include <elm_thumb.h>
+#endif
#include <elm_toolbar.h>
#include <elm_transit.h>
/* this is actually elm_video */
diff --git a/src/lib/elementary/elm_icon.c b/src/lib/elementary/elm_icon.c
index 9b28feada9..318692d546 100644
--- a/src/lib/elementary/elm_icon.c
+++ b/src/lib/elementary/elm_icon.c
@@ -20,11 +20,16 @@
static Eina_List *_elm_icon_retry = NULL;
static int _icon_pending_request = 0;
+#ifdef HAVE_ETHUMB
static const char SIG_THUMB_DONE[] = "thumb,done";
static const char SIG_THUMB_ERROR[] = "thumb,error";
+#endif
+
static const Evas_Smart_Cb_Description _smart_callbacks[] = {
+#ifdef HAVE_ETHUMB
{SIG_THUMB_DONE, ""},
{SIG_THUMB_ERROR, ""},
+#endif
{NULL, NULL}
};
@@ -57,6 +62,7 @@ _icon_size_min_get(Evas_Object *icon)
return MAX(16, MIN(w, h));
}
+#ifdef HAVE_ETHUMB
static void
_icon_thumb_stop(Elm_Icon_Data *sd,
void *ethumbd)
@@ -266,6 +272,8 @@ _icon_thumb_apply_cb(void *data,
return ECORE_CALLBACK_RENEW;
}
+#endif
+
static Eina_Bool
_icon_freedesktop_set(Evas_Object *obj,
const char *theme,
@@ -484,6 +492,8 @@ _elm_icon_standard_resize_cb(void *data,
eina_stringshare_del(refup);
}
+#ifdef HAVE_ETHUMB
+
static void
_elm_icon_thumb_resize_cb(void *data,
Evas *e EINA_UNUSED,
@@ -496,12 +506,16 @@ _elm_icon_thumb_resize_cb(void *data,
elm_icon_thumb_set(obj, sd->thumb.file.path, sd->thumb.file.key);
}
+#endif
+
EOLIAN static void
_elm_icon_efl_canvas_group_group_add(Eo *obj, Elm_Icon_Data *priv)
{
efl_canvas_group_add(efl_super(obj, MY_CLASS));
+#ifdef HAVE_ETHUMB
priv->thumb.request = NULL;
+#endif
}
EOLIAN static void
@@ -509,6 +523,7 @@ _elm_icon_efl_canvas_group_group_del(Eo *obj, Elm_Icon_Data *sd)
{
eina_stringshare_del(sd->stdicon);
+#ifdef HAVE_ETHUMB
if (sd->thumb.request)
{
Ethumb_Client *ethumbd = elm_thumb_ethumb_client_get();
@@ -520,6 +535,7 @@ _elm_icon_efl_canvas_group_group_del(Eo *obj, Elm_Icon_Data *sd)
eina_stringshare_del(sd->thumb.thumb.path);
eina_stringshare_del(sd->thumb.thumb.key);
ecore_event_handler_del(sd->thumb.eeh);
+#endif
_edje_signals_free(sd);
@@ -859,6 +875,8 @@ elm_icon_thumb_set(Evas_Object *obj, const char *file, const char *group)
evas_object_event_callback_del_full
(obj, EVAS_CALLBACK_RESIZE, _elm_icon_standard_resize_cb, obj);
+
+#ifdef HAVE_ETHUMB
evas_object_event_callback_del_full
(obj, EVAS_CALLBACK_RESIZE, _elm_icon_thumb_resize_cb, obj);
@@ -879,6 +897,8 @@ elm_icon_thumb_set(Evas_Object *obj, const char *file, const char *group)
sd->thumb.eeh = ecore_event_handler_add
(ELM_ECORE_EVENT_ETHUMB_CONNECT, _icon_thumb_apply_cb, obj);
}
+#endif
+
}
ELM_API Eina_Bool
diff --git a/src/lib/elementary/elm_main.c b/src/lib/elementary/elm_main.c
index 20e27eb662..f22a205259 100644
--- a/src/lib/elementary/elm_main.c
+++ b/src/lib/elementary/elm_main.c
@@ -946,7 +946,9 @@ elm_quicklaunch_shutdown(void)
_elm_unneed_efreet();
_elm_unneed_e_dbus();
_elm_unneed_eldbus();
+#ifdef HAVE_ETHUMB
_elm_unneed_ethumb();
+#endif
_elm_unneed_web();
#ifdef HAVE_ELEMENTARY_EMAP
diff --git a/src/lib/elementary/elm_widget_icon.h b/src/lib/elementary/elm_widget_icon.h
index 929f7e3141..06290d6b95 100644
--- a/src/lib/elementary/elm_widget_icon.h
+++ b/src/lib/elementary/elm_widget_icon.h
@@ -25,6 +25,7 @@ struct _Elm_Icon_Data
Evas_Object *obj; // the object itself
const char *stdicon;
+#ifdef HAVE_ETHUMB
struct
{
struct
@@ -41,7 +42,7 @@ struct _Elm_Icon_Data
Eina_Bool retry : 1;
} thumb;
-
+#endif
struct
{
int requested_size;
diff --git a/src/lib/elementary/meson.build b/src/lib/elementary/meson.build
index a6eda13dc6..e7b49877e6 100644
--- a/src/lib/elementary/meson.build
+++ b/src/lib/elementary/meson.build
@@ -844,7 +844,6 @@ elementary_src = files([
'elm_sys_notify_dbus.c',
'elm_table.c',
'elm_theme.c',
- 'elm_thumb.c',
'elm_toolbar.c',
'elm_transit.c',
'elm_util.c',
@@ -953,10 +952,16 @@ elementary_src = files([
'efl_ui_spotlight_animation_manager.c',
])
-elementary_deps = [emile, eo, efl, edje, ethumb, ethumb_client, emotion, ecore_imf, ecore_con, eldbus, efreet, eio, buildsystem]
+elementary_deps = [emile, eo, efl, edje, emotion, ecore_imf, ecore_con, eldbus, efreet, eio, buildsystem]
elementary_pub_deps = [eina, eet, evas, ecore, ecore_evas, ecore_file, ecore_input, ecore_imf, ecore_con,
- edje, eldbus, efreet, ethumb_client, efl]
+ edje, eldbus, efreet, efl]
elementary_ext_deps = [atspi, dl, intl, buildsystem_simple]
+
+if get_option('ethumb')
+ elementary_src += files('elm_thumb.c')
+ elementary_deps += [ethumb, ethumb_client]
+ elementary_pub_deps += ethumb_client
+endif
elm_options = configuration_data()
config_h.set_quoted('ELM_TOP_BUILD_DIR', meson.build_root())
diff --git a/src/tests/elementary/elm_suite.c b/src/tests/elementary/elm_suite.c
index d6aa4636e8..2a2289b6dc 100644
--- a/src/tests/elementary/elm_suite.c
+++ b/src/tests/elementary/elm_suite.c
@@ -22,7 +22,9 @@ static const Efl_Test_Case etc[] = {
{ "elm_actionslider", elm_test_actionslider},
{ "elm_box", elm_test_box},
{ "elm_table", elm_test_table},
+#ifdef HAVE_ETHUMB
{ "elm_thumb", elm_test_thumb},
+#endif
{ "elm_menu", elm_test_menu},
{ "elm_photocam", elm_test_photocam},
{ "elm_win", elm_test_win},
diff --git a/src/tests/elementary/meson.build b/src/tests/elementary/meson.build
index d46db7da6b..63fa722c50 100644
--- a/src/tests/elementary/meson.build
+++ b/src/tests/elementary/meson.build
@@ -38,7 +38,6 @@ elementary_suite_src = [
'elm_test_actionslider.c',
'elm_test_box.c',
'elm_test_table.c',
- 'elm_test_thumb.c',
'elm_test_menu.c',
'elm_test_photocam.c',
'elm_test_win.c',
@@ -107,6 +106,10 @@ elementary_suite_src = [
'elm_test_widget_basics.c'
]
+if get_option('ethumb')
+ elementary_suite_src += ['elm_test_thumb.c']
+endif
+
elementary_suite = executable('elementary_suite',
elementary_suite_src,
dependencies: [check, eina, elementary, elementary_deps, intl],