aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGustavo Sverzut Barbieri <barbieri@gmail.com>2013-01-12 01:15:45 +0000
committerGustavo Sverzut Barbieri <barbieri@gmail.com>2013-01-12 01:15:45 +0000
commit34f53151414bcdf44ec81e582b007f74da595694 (patch)
tree863058f0d94e9d39998774a375aa6d242d8714a4
parentemotion: reorder cleanup of modules. (diff)
downloadefl-34f53151414bcdf44ec81e582b007f74da595694.tar.gz
merge ethumb.
This one was a painful bitch. The edbus2 port was quite broken, mainly leaking eina_stringshare and also not adding the '\0' to the strings that are represented as bytearray (paths cannot be utf8 to avoid translations). Emotion plugin was also quite bogus and the video thumbnail as edje (animated) is not working yet due bug in Edje_Edit api -- someone needs to investigate this, seems strange. Emotion plugin also had a bug that it was deleting the object from inside object callback. Now it seems to work. Please report if it does not. SVN revision: 82675
-rw-r--r--AUTHORS7
-rw-r--r--Makefile.am10
-rw-r--r--configure.ac80
-rw-r--r--data/Makefile.am29
-rw-r--r--data/emotion/checkme2
-rw-r--r--data/ethumb/checkme2
-rw-r--r--data/ethumb/frames/border-0.jpg (renamed from legacy/ethumb/data/frames/images/border-0.jpg)bin542 -> 542 bytes
-rw-r--r--data/ethumb/frames/default.edc (renamed from legacy/ethumb/data/frames/default.edc)0
-rw-r--r--dbus-services/org.enlightenment.Ethumb.service.in (renamed from legacy/ethumb/org.enlightenment.Ethumb.service.in)0
-rw-r--r--doc/main.dox7
-rw-r--r--m4/efl.m413
-rw-r--r--old/ChangeLog.ethumb (renamed from legacy/ethumb/ChangeLog)0
-rw-r--r--old/NEWS.ethumb (renamed from legacy/ethumb/NEWS)0
-rw-r--r--old/README.ethumb (renamed from legacy/ethumb/README)0
-rw-r--r--pc/ethumb.pc.in (renamed from legacy/ethumb/ethumb.pc.in)4
-rw-r--r--pc/ethumb_client.pc.in (renamed from legacy/ethumb/ethumb_client.pc.in)2
-rw-r--r--src/Makefile.am1
-rw-r--r--src/Makefile_Ethumb.am171
-rw-r--r--src/bin/ethumb/ethumb.c (renamed from legacy/ethumb/src/bin/ethumb.c)4
-rw-r--r--src/bin/ethumb/ethumbd.c (renamed from legacy/ethumb/src/bin/ethumbd.c)91
-rw-r--r--src/bin/ethumb/ethumbd_client.c (renamed from legacy/ethumb/src/bin/ethumbd_client.c)6
-rw-r--r--src/bin/ethumb/ethumbd_private.h (renamed from legacy/ethumb/src/bin/ethumbd_private.h)0
-rw-r--r--src/bin/ethumb/ethumbd_slave.c (renamed from legacy/ethumb/src/bin/ethumbd_child.c)34
-rw-r--r--src/lib/edje/edje_edit.c3
-rw-r--r--src/lib/ethumb/Ethumb.h (renamed from legacy/ethumb/src/lib/Ethumb.h)69
-rw-r--r--src/lib/ethumb/Ethumb_Plugin.h (renamed from legacy/ethumb/src/lib/Ethumb_Plugin.h)0
-rw-r--r--src/lib/ethumb/client/Ethumb_Client.h (renamed from legacy/ethumb/src/lib/client/Ethumb_Client.h)1
-rw-r--r--src/lib/ethumb/client/ethumb_client.c (renamed from legacy/ethumb/src/lib/client/ethumb_client.c)57
-rw-r--r--src/lib/ethumb/ethumb.c (renamed from legacy/ethumb/src/lib/ethumb.c)62
-rw-r--r--src/lib/ethumb/ethumb_private.h (renamed from legacy/ethumb/src/lib/ethumb_private.h)0
-rw-r--r--src/lib/ethumb/md5.c (renamed from legacy/ethumb/src/lib/md5.c)0
-rw-r--r--src/lib/ethumb/md5.h (renamed from legacy/ethumb/src/lib/md5.h)0
-rw-r--r--src/modules/ethumb/emotion/emotion.c (renamed from legacy/ethumb/src/plugins/emotion/emotion.c)125
-rw-r--r--src/modules/ethumb/emotion/placeholder.pngbin0 -> 150 bytes
-rw-r--r--src/modules/ethumb/emotion/template.edc (renamed from legacy/ethumb/src/plugins/emotion/template.edc)6
-rw-r--r--src/tests/ethumb/ethumb_dbus.c (renamed from legacy/ethumb/src/tests/ethumb_dbus.c)4
36 files changed, 642 insertions, 148 deletions
diff --git a/AUTHORS b/AUTHORS
index 7ee6c3c8c1..afb94e8d80 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -257,3 +257,10 @@ Pierre Le Magourou <pierre.lemagourou@openwide.fr>
Hugo Camboulive <hugo.camboulive@zodiacaerospace.com>
Sohyun Kim <anna1014.kim@samsung.com>
Leandro Dorileo <dorileo@profusion.mobi>
+
+Ethumb
+------
+Rafael Antognolli <antognolli@profusion.mobi>
+Cedric Bail <cedric.bail@free.fr>
+Mikael SANS <sans.mikael@gmail.com>
+Jérôme Pinot <ngc891@gmail.com>
diff --git a/Makefile.am b/Makefile.am
index c0f08f1b26..f377199d42 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -62,6 +62,7 @@ old/ChangeLog.eio \
old/ChangeLog.embryo \
old/ChangeLog.emotion \
old/ChangeLog.escape \
+old/ChangeLog.ethumb \
old/ChangeLog.evas \
old/ChangeLog.evil \
old/ChangeLog.evil.0 \
@@ -75,6 +76,7 @@ old/NEWS.eio \
old/NEWS.embryo \
old/NEWS.emotion \
old/NEWS.escape \
+old/NEWS.ethumb \
old/NEWS.evas \
old/NEWS.evil \
old/README.ecore \
@@ -89,6 +91,7 @@ old/README.embryo \
old/README.emotion \
old/README.ephysics \
old/README.escape \
+old/README.ethumb \
old/README.evas \
old/README.evil \
spec/efl.spec
@@ -125,7 +128,9 @@ pc/efreet.pc \
pc/efreet-mime.pc \
pc/efreet-trash.pc \
pc/edje.pc \
-pc/emotion.pc
+pc/emotion.pc \
+pc/ethumb.pc \
+pc/ethumb_client.pc
if BUILD_ENGINE_SOFTWARE_X11
pkgconfig_DATA += pc/evas-software-x11.pc
@@ -216,7 +221,8 @@ endif
servicedir = @dbusservicedir@
service_DATA = \
-dbus-services/org.enlightenment.Efreet.service
+dbus-services/org.enlightenment.Efreet.service \
+dbus-services/org.enlightenment.Ethumb.service
diff --git a/configure.ac b/configure.ac
index 5686564710..9035a2f5c7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3375,6 +3375,81 @@ EFL_LIB_END([Emotion])
#### End of Emotion
+#### Ethumb
+EFL_LIB_START([Ethumb])
+
+### Default values
+
+### Additional options to configure
+
+### Checks for programs
+
+### Checks for libraries
+EFL_PLATFORM_DEPEND([EINA], [evil])
+
+EFL_INTERNAL_DEPEND_PKG([ETHUMB], [eina])
+EFL_INTERNAL_DEPEND_PKG([ETHUMB], [evas])
+EFL_INTERNAL_DEPEND_PKG([ETHUMB], [ecore])
+EFL_INTERNAL_DEPEND_PKG([ETHUMB], [ecore-evas])
+EFL_INTERNAL_DEPEND_PKG([ETHUMB], [ecore-file])
+EFL_INTERNAL_DEPEND_PKG([ETHUMB], [edje])
+
+## modules
+
+EFL_EVAL_PKGS([ETHUMB])
+
+### Checks for header files
+
+### Checks for types
+
+### Checks for structures
+
+### Checks for compiler characteristics
+
+### Checks for linker characteristics
+
+### Checks for library functions
+
+### Check availability
+
+EFL_LIB_END([Ethumb])
+#### End of Ethumb
+
+#### Ethumb_Client
+EFL_LIB_START([Ethumb_Client])
+
+### Default values
+
+### Additional options to configure
+
+### Checks for programs
+
+### Checks for libraries
+EFL_INTERNAL_DEPEND_PKG([ETHUMB_CLIENT], [eina])
+EFL_INTERNAL_DEPEND_PKG([ETHUMB_CLIENT], [ecore])
+EFL_INTERNAL_DEPEND_PKG([ETHUMB_CLIENT], [edbus])
+EFL_INTERNAL_DEPEND_PKG([ETHUMB_CLIENT], [ethumb])
+
+EFL_EVAL_PKGS([ETHUMB_CLIENT])
+
+### Checks for header files
+
+### Checks for types
+
+### Checks for structures
+
+### Checks for compiler characteristics
+
+### Checks for linker characteristics
+
+### Checks for library functions
+
+### Check availability
+
+EFL_LIB_END([Ethumb_Client])
+#### End of Ethumb_Client
+
+
AC_ARG_ENABLE([always-build-examples],
[AC_HELP_STRING([--enable-always-build-examples],
[always build examples. @<:@default=disabled@:>@])],
@@ -3458,7 +3533,10 @@ pc/eeze.pc
pc/ephysics.pc
pc/edje.pc
pc/emotion.pc
+pc/ethumb.pc
+pc/ethumb_client.pc
dbus-services/org.enlightenment.Efreet.service
+dbus-services/org.enlightenment.Ethumb.service
$po_makefile_in
])
@@ -3665,6 +3743,8 @@ echo "Eeze...................: ${efl_lib_optional_eeze} (tizen: ${want_tizen})"
echo "EPhysics...............: ${efl_lib_optional_ephysics}"
echo "Edje...................: yes (physics=${efl_lib_optional_ephysics}, multisense=${want_multisense})"
echo "Emotion................: yes (gstreamer=${have_emotion_module_gstreamer} (xoverlay=${have_gst_xoverlay}), xine=${have_emotion_module_xine}, generic=${have_emotion_module_generic}, v4l2=${want_v4l2})"
+echo "Ethumb.................: yes"
+echo "Ethumb_Client..........: yes"
echo "Tests..................: ${build_tests}"
echo "Examples...............: make examples"
diff --git a/data/Makefile.am b/data/Makefile.am
index 5104f31b1b..be0a463aa9 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -60,9 +60,38 @@ edje/vim/snippets/edc.snippets \
edje/vim/syntax/edc.vim \
edje/vim/syntax/embryo.vim
+# Helper for people using EDJ
+EDJE_CC = EFL_RUN_IN_TREE=1 $(top_builddir)/src/bin/edje/edje_cc
+EDJE_CC_FLAGS_VERBOSE_0 =
+EDJE_CC_FLAGS_VERBOSE_1 = -v
+EDJE_CC_FLAGS = $(EDJE_CC_FLAGS_VERBOSE_$(V))
+
+AM_V_EDJ = $(am__v_EDJ_$(V))
+am__v_EDJ_ = $(am__v_EDJ_$(AM_DEFAULT_VERBOSITY))
+am__v_EDJ_0 = @echo " EDJ " $@;
+
########################################################################
# Emotion
emotionfilesdir = $(datadir)/emotion
emotionfiles_DATA = emotion/checkme
EXTRA_DIST += $(emotionfiles_DATA)
+
+########################################################################
+# Ethumb
+ethumbfilesdir = $(datadir)/ethumb
+ethumbfiles_DATA = ethumb/checkme
+EXTRA_DIST += $(ethumbfiles_DATA)
+
+ethumbframesdir = $(datadir)/ethumb/frames
+ethumbframes_DATA = \
+ethumb/frames/default.edj
+
+ethumb/frames/default.edj: ethumb/frames/default.edc
+ @$(MKDIR_P) ethumb/frames/
+ $(AM_V_EDJ)$(EDJE_CC) $(EDJE_CC_FLAGS) -id $(srcdir)/ethumb/frames/ $< $@
+
+
+EXTRA_DIST += \
+ethumb/frames/default.edc \
+ethumb/frames/border-0.jpg
diff --git a/data/emotion/checkme b/data/emotion/checkme
index e2f46e1c27..f1e0637423 100644
--- a/data/emotion/checkme
+++ b/data/emotion/checkme
@@ -1,2 +1,2 @@
-This is just a test file used to help emotion determine its prefix
+This is just a test file used to help ethumb determine its prefix
location.
diff --git a/data/ethumb/checkme b/data/ethumb/checkme
new file mode 100644
index 0000000000..987063d4cb
--- /dev/null
+++ b/data/ethumb/checkme
@@ -0,0 +1,2 @@
+This is just a test file used to help evas determine its prefix
+location.
diff --git a/legacy/ethumb/data/frames/images/border-0.jpg b/data/ethumb/frames/border-0.jpg
index ee66879b21..ee66879b21 100644
--- a/legacy/ethumb/data/frames/images/border-0.jpg
+++ b/data/ethumb/frames/border-0.jpg
Binary files differ
diff --git a/legacy/ethumb/data/frames/default.edc b/data/ethumb/frames/default.edc
index 53412632c4..53412632c4 100644
--- a/legacy/ethumb/data/frames/default.edc
+++ b/data/ethumb/frames/default.edc
diff --git a/legacy/ethumb/org.enlightenment.Ethumb.service.in b/dbus-services/org.enlightenment.Ethumb.service.in
index ece2e031c4..ece2e031c4 100644
--- a/legacy/ethumb/org.enlightenment.Ethumb.service.in
+++ b/dbus-services/org.enlightenment.Ethumb.service.in
diff --git a/doc/main.dox b/doc/main.dox
index d20d5477f5..9faf1491e7 100644
--- a/doc/main.dox
+++ b/doc/main.dox
@@ -22,6 +22,7 @@
* @li @ref ephysics_main physics simulation integration and visual effects.
* @li @ref edje_main layout and theme library with super powers.
* @li @ref emotion_main to play music and videos.
+ * @li @ref ethumb_main to generate thumbnail images of files.
*
*/
@@ -232,3 +233,9 @@
*
* @brief Plays music and videos.
*/
+
+/**
+ * @defgroup Ethumb
+ *
+ * @brief Generates thumbnail images of files.
+ */
diff --git a/m4/efl.m4 b/m4/efl.m4
index a891203e2e..7ed137f119 100644
--- a/m4/efl.m4
+++ b/m4/efl.m4
@@ -16,7 +16,18 @@ dnl Adds a pkg-config dependency on another EFL.
AC_DEFUN([EFL_INTERNAL_DEPEND_PKG],
[dnl
m4_pushdef([DOWNEFL], m4_translit([$1], [-A-Z], [_a-z]))dnl
-requirements_pc_[]m4_defn([DOWNEFL])="$2 >= ${PACKAGE_VERSION} ${requirements_pc_[][]m4_defn([DOWNEFL])}"
+dnl TODO: we need to fix the package config names for 2.0
+dnl TODO: and make them uniform in scheme.
+depname="$2"
+case "${depname}" in
+ edbus)
+ depname="edbus2"
+ ;;
+ ethumb-client)
+ depname="ethumb_client"
+ ;;
+esac
+requirements_pc_[]m4_defn([DOWNEFL])="${depname} >= ${PACKAGE_VERSION} ${requirements_pc_[][]m4_defn([DOWNEFL])}"
m4_popdef([DOWNEFL])dnl
])
diff --git a/legacy/ethumb/ChangeLog b/old/ChangeLog.ethumb
index 2470e87074..2470e87074 100644
--- a/legacy/ethumb/ChangeLog
+++ b/old/ChangeLog.ethumb
diff --git a/legacy/ethumb/NEWS b/old/NEWS.ethumb
index bf716c6880..bf716c6880 100644
--- a/legacy/ethumb/NEWS
+++ b/old/NEWS.ethumb
diff --git a/legacy/ethumb/README b/old/README.ethumb
index 3494520e83..3494520e83 100644
--- a/legacy/ethumb/README
+++ b/old/README.ethumb
diff --git a/legacy/ethumb/ethumb.pc.in b/pc/ethumb.pc.in
index 233e2ed397..b2d935b24d 100644
--- a/legacy/ethumb/ethumb.pc.in
+++ b/pc/ethumb.pc.in
@@ -2,10 +2,12 @@ prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
+modules=@libdir@/ethumb/modules
+module_arch=@MODULE_ARCH@
Name: ethumb
Description: Thumbnail Generator Library
-Requires: @requirement_ethumb@
Version: @VERSION@
+Requires.private: @requirements_pc_ethumb@
Libs: -L${libdir} -lethumb
Cflags: -I${includedir}/ethumb-@VMAJ@
diff --git a/legacy/ethumb/ethumb_client.pc.in b/pc/ethumb_client.pc.in
index c9eebc6561..796cae6e95 100644
--- a/legacy/ethumb/ethumb_client.pc.in
+++ b/pc/ethumb_client.pc.in
@@ -5,7 +5,7 @@ includedir=@includedir@
Name: ethumb_client
Description: Thumbnail Client Library
-Requires: @requirement_ethumb_client@
Version: @VERSION@
+Requires.private: @requirements_pc_ethumb_client@
Libs: -L${libdir} -lethumb_client
Cflags: -I${includedir}/ethumb-@VMAJ@
diff --git a/src/Makefile.am b/src/Makefile.am
index e22f4c004c..5ad8b9770c 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -43,6 +43,7 @@ include Makefile_Eeze.am
include Makefile_EPhysics.am
include Makefile_Edje.am
include Makefile_Emotion.am
+include Makefile_Ethumb.am
.PHONY: benchmark examples
diff --git a/src/Makefile_Ethumb.am b/src/Makefile_Ethumb.am
new file mode 100644
index 0000000000..3b0e15daae
--- /dev/null
+++ b/src/Makefile_Ethumb.am
@@ -0,0 +1,171 @@
+### Library
+
+lib_LTLIBRARIES += \
+lib/ethumb/libethumb.la \
+lib/ethumb/client/libethumb_client.la
+
+ETHUMB_COMMON_CPPFLAGS = \
+-I$(top_srcdir)/src/lib/eina \
+-I$(top_builddir)/src/lib/eina \
+-I$(top_srcdir)/src/lib/eo \
+-I$(top_builddir)/src/lib/eo \
+-I$(top_srcdir)/src/lib/ecore \
+-I$(top_builddir)/src/lib/ecore \
+-I$(top_srcdir)/src/lib/ecore_evas \
+-I$(top_builddir)/src/lib/ecore_evas \
+-I$(top_srcdir)/src/lib/ecore_file \
+-I$(top_builddir)/src/lib/ecore_file \
+-I$(top_srcdir)/src/lib/evas \
+-I$(top_builddir)/src/lib/evas \
+-I$(top_srcdir)/src/lib/edje \
+-I$(top_builddir)/src/lib/edje \
+-I$(top_srcdir)/src/lib/ethumb \
+-I$(top_builddir)/src/lib/ethumb \
+@EFL_COV_CFLAGS@ \
+@ETHUMB_CFLAGS@ \
+@USE_EVIL_CFLAGS@
+
+ETHUMB_COMMON_LDADD = \
+lib/eina/libeina.la \
+lib/eo/libeo.la \
+lib/ecore/libecore.la \
+lib/ecore_evas/libecore_evas.la \
+lib/ecore_file/libecore_file.la \
+lib/evas/libevas.la \
+lib/edje/libedje.la \
+@EFL_COV_LIBS@ \
+@USE_EVIL_LIBS@
+
+installed_ethumbmainheadersdir = $(includedir)/ethumb-@VMAJ@
+dist_installed_ethumbmainheaders_DATA = \
+lib/ethumb/Ethumb.h \
+lib/ethumb/client/Ethumb_Client.h
+
+# libethumb.la
+lib_ethumb_libethumb_la_SOURCES = \
+lib/ethumb/Ethumb_Plugin.h \
+lib/ethumb/ethumb_private.h \
+lib/ethumb/md5.h \
+lib/ethumb/ethumb.c \
+lib/ethumb/md5.c
+
+ETHUMB_COMMON_LIBADD = $(ETHUMB_COMMON_LDADD) @ETHUMB_LIBS@
+ETHUMB_COMMON_LDADD += @ETHUMB_LDFLAGS@
+ETHUMB_COMMON_USER_LIBADD = $(ETHUMB_COMMON_LIBADD) lib/ethumb/libethumb.la
+ETHUMB_COMMON_USER_LDADD = $(ETHUMB_COMMON_LDADD) lib/ethumb/libethumb.la
+
+lib_ethumb_libethumb_la_CPPFLAGS = \
+$(ETHUMB_COMMON_CPPFLAGS) \
+-DPACKAGE_BIN_DIR=\"$(bindir)\" \
+-DPACKAGE_LIB_DIR=\"$(libdir)\" \
+-DPACKAGE_DATA_DIR=\"$(datadir)/ethumb\" \
+-DPACKAGE_BUILD_DIR=\"`pwd`/$(top_builddir)\" \
+-DEFL_ETHUMB_BUILD
+
+lib_ethumb_libethumb_la_LIBADD = $(ETHUMB_COMMON_LIBADD)
+lib_ethumb_libethumb_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@
+
+
+# libethumb_client.la
+lib_ethumb_client_libethumb_client_la_SOURCES = \
+lib/ethumb/client/ethumb_client.c
+
+lib_ethumb_client_libethumb_client_la_CPPFLAGS = \
+$(ETHUMB_COMMON_CPPFLAGS) \
+-I$(top_srcdir)/src/lib/edbus \
+-I$(top_builddir)/src/lib/edbus \
+-I$(top_srcdir)/src/lib/ethumb/client \
+-I$(top_builddir)/src/lib/ethumb/client \
+-DEFL_ETHUMB_BUILD
+
+lib_ethumb_client_libethumb_client_la_LIBADD = \
+$(ETHUMB_COMMON_USER_LIBADD) \
+lib/edbus/libedbus2.la
+lib_ethumb_client_libethumb_client_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@
+
+## Modules
+
+# Emotion
+ethumbmoduleemotiondir = $(libdir)/ethumb/modules/emotion/$(MODULE_ARCH)
+ethumbmoduleemotion_LTLIBRARIES = modules/ethumb/emotion/module.la
+modules_ethumb_emotion_module_la_SOURCES = \
+modules/ethumb/emotion/emotion.c
+modules_ethumb_emotion_module_la_CPPFLAGS = \
+$(ETHUMB_COMMON_CPPFLAGS) \
+-I$(top_srcdir)/src/lib/eet \
+-I$(top_builddir)/src/lib/eet \
+-I$(top_srcdir)/src/lib/emotion \
+-I$(top_builddir)/src/lib/emotion \
+-DPACKAGE_BIN_DIR=\"$(bindir)\" \
+-DPACKAGE_LIB_DIR=\"$(libdir)\" \
+-DPACKAGE_DATA_DIR=\"$(datadir)/ethumb\" \
+-DPACKAGE_BUILD_DIR=\"`pwd`/$(top_builddir)\"
+
+modules_ethumb_emotion_module_la_LIBADD = \
+$(ETHUMB_COMMON_USER_LIBADD) \
+lib/eet/libeet.la \
+lib/emotion/libemotion.la
+
+modules_ethumb_emotion_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@
+modules_ethumb_emotion_module_la_LIBTOOLFLAGS = --tag=disable-static
+
+modules/ethumb/emotion/template.edj: modules/ethumb/emotion/template.edc modules/ethumb/emotion/placeholder.png bin/edje/edje_cc
+ @$(MKDIR_P) modules/ethumb/emotion
+ $(AM_V_EDJ)$(EDJE_CC) $(EDJE_CC_FLAGS) -id $(srcdir)/modules/ethumb/emotion $< $@
+
+ethumbmoduleemotion_DATA = modules/ethumb/emotion/template.edj
+
+EXTRA_DIST += \
+modules/ethumb/emotion/template.edc \
+modules/ethumb/emotion/placeholder.png
+
+
+### Binary
+
+bin_PROGRAMS += \
+bin/ethumb/ethumb \
+bin/ethumb/ethumbd \
+bin/ethumb/ethumbd_client
+
+ethumbinternal_bindir=$(libdir)/ethumb/utils/$(MODULE_ARCH)
+ethumbinternal_bin_PROGRAMS = \
+bin/ethumb/ethumbd_slave
+
+bin_ethumb_ethumb_SOURCES = bin/ethumb/ethumb.c
+bin_ethumb_ethumb_CPPFLAGS = $(ETHUMB_COMMON_CPPFLAGS)
+bin_ethumb_ethumb_LDADD = $(ETHUMB_COMMON_USER_LDADD)
+
+# TODO: review why ethumd (master) links to libethumb! shouldn't
+bin_ethumb_ethumbd_SOURCES = \
+bin/ethumb/ethumbd_private.h \
+bin/ethumb/ethumbd.c
+bin_ethumb_ethumbd_CPPFLAGS = \
+$(ETHUMB_COMMON_CPPFLAGS) \
+-I$(top_srcdir)/src/lib/edbus \
+-I$(top_builddir)/src/lib/edbus \
+-DPACKAGE_BIN_DIR=\"$(bindir)\" \
+-DPACKAGE_LIB_DIR=\"$(libdir)\" \
+-DPACKAGE_DATA_DIR=\"$(datadir)/ethumb\" \
+-DPACKAGE_BUILD_DIR=\"`pwd`/$(top_builddir)\"
+bin_ethumb_ethumbd_LDADD = \
+$(ETHUMB_COMMON_USER_LDADD) \
+lib/edbus/libedbus2.la
+
+bin_ethumb_ethumbd_client_SOURCES = \
+bin/ethumb/ethumbd_client.c
+bin_ethumb_ethumbd_client_CPPFLAGS = \
+$(ETHUMB_COMMON_CPPFLAGS) \
+-I$(top_srcdir)/src/lib/edbus \
+-I$(top_builddir)/src/lib/edbus \
+-I$(top_srcdir)/src/lib/ethumb/client \
+-I$(top_builddir)/src/lib/ethumb/client
+bin_ethumb_ethumbd_client_LDADD = \
+$(ETHUMB_COMMON_USER_LDADD) \
+lib/ethumb/client/libethumb_client.la \
+lib/edbus/libedbus2.la
+
+bin_ethumb_ethumbd_slave_SOURCES = \
+bin/ethumb/ethumbd_private.h \
+bin/ethumb/ethumbd_slave.c
+bin_ethumb_ethumbd_slave_CPPFLAGS = $(ETHUMB_COMMON_CPPFLAGS)
+bin_ethumb_ethumbd_slave_LDADD = $(ETHUMB_COMMON_USER_LDADD)
diff --git a/legacy/ethumb/src/bin/ethumb.c b/src/bin/ethumb/ethumb.c
index 12750e0196..27d50df69e 100644
--- a/legacy/ethumb/src/bin/ethumb.c
+++ b/src/bin/ethumb/ethumb.c
@@ -43,7 +43,7 @@ struct frame
};
static unsigned char
-_ethumb_getopt_callback_frame_parse(const Ecore_Getopt *parser __UNUSED__, const Ecore_Getopt_Desc *desc __UNUSED__, const char *str, void *data __UNUSED__, Ecore_Getopt_Value *storage)
+_ethumb_getopt_callback_frame_parse(const Ecore_Getopt *parser EINA_UNUSED, const Ecore_Getopt_Desc *desc EINA_UNUSED, const char *str, void *data EINA_UNUSED, Ecore_Getopt_Value *storage)
{
struct frame *f = (struct frame *)storage->ptrp;
const char *tfile, *tgroup, *tswallow, *base, *sep;
@@ -135,7 +135,7 @@ _thumb_report(const char *mode, Ethumb *e)
}
static void
-_finished_thumb( void *data __UNUSED__, Ethumb *e, Eina_Bool success)
+_finished_thumb( void *data EINA_UNUSED, Ethumb *e, Eina_Bool success)
{
const char *mode = success ? "GENERATED" : "FAILED";
_thumb_report(mode, e);
diff --git a/legacy/ethumb/src/bin/ethumbd.c b/src/bin/ethumb/ethumbd.c
index cebde0f4bb..f0f0d9b44a 100644
--- a/legacy/ethumb/src/bin/ethumbd.c
+++ b/src/bin/ethumb/ethumbd.c
@@ -57,6 +57,7 @@ static const char _ethumb_dbus_interface[] = "org.enlightenment.Ethumb";
static const char _ethumb_dbus_objects_interface[] = "org.enlightenment.Ethumb.objects";
static const char _ethumb_dbus_path[] = "/org/enlightenment/Ethumb";
+static Eina_Prefix *_pfx = NULL;
static int _log_domain = -1;
typedef struct _Ethumbd_Setup Ethumbd_Setup;
@@ -453,7 +454,7 @@ _ethumbd_slave_alloc_cmd(Ethumbd *ed, int ssize, char *sdata)
}
static Eina_Bool
-_ethumbd_slave_data_read_cb(void *data, int type __UNUSED__, void *event)
+_ethumbd_slave_data_read_cb(void *data, int type EINA_UNUSED, void *event)
{
Ethumbd *ed = data;
Ecore_Exe_Event_Data *ev = event;
@@ -499,7 +500,7 @@ _ethumbd_slave_data_read_cb(void *data, int type __UNUSED__, void *event)
}
static Eina_Bool
-_ethumbd_slave_del_cb(void *data, int type __UNUSED__, void *event)
+_ethumbd_slave_del_cb(void *data, int type EINA_UNUSED, void *event)
{
Ethumbd *ed = data;
Ecore_Exe_Event_Del *ev = event;
@@ -885,7 +886,6 @@ _name_owner_changed_cb(void *context, const char *bus, const char *old_id, const
{
Ethumbd_Object_Data *odata = context;
Ethumbd *ed = odata->ed;
- Ethumbd_Queue *q = &ed->queue;
DBG("NameOwnerChanged: name = %s, from = %s, to = %s", bus, old_id, new_id);
if (new_id[0])
@@ -963,7 +963,8 @@ _ethumb_dbus_get_bytearray(EDBus_Message_Iter *iter)
if (!edbus_message_iter_fixed_array_get(iter, 'y', &result,
&length))
{
- ERR("not an byte array element.");
+ ERR("not byte array element. Signature: %s",
+ edbus_message_iter_signature_get(iter));
return NULL;
}
@@ -981,7 +982,7 @@ _ethumb_dbus_append_bytearray(EDBus_Message_Iter *parent, EDBus_Message_Iter *ar
if (!string)
string = "";
- size = strlen(string);
+ size = strlen(string) + 1;
for (i = 0; i < size; i++)
edbus_message_iter_basic_append(array, 'y', string[i]);
edbus_message_iter_container_close(parent, array);
@@ -1012,6 +1013,9 @@ _ethumb_dbus_queue_add_cb(const EDBus_Service_Interface *iface, const EDBus_Mess
if (!file)
{
+ eina_stringshare_del(key);
+ eina_stringshare_del(thumb);
+ eina_stringshare_del(thumb_key);
ERR("no filename given.");
goto end;
}
@@ -1019,6 +1023,10 @@ _ethumb_dbus_queue_add_cb(const EDBus_Service_Interface *iface, const EDBus_Mess
odata = edbus_service_object_data_get(iface, ODATA);
if (!odata)
{
+ eina_stringshare_del(file);
+ eina_stringshare_del(key);
+ eina_stringshare_del(thumb);
+ eina_stringshare_del(thumb_key);
ERR("could not get dbus_object data.");
goto end;
}
@@ -1159,7 +1167,7 @@ _ethumb_dbus_delete_cb(const EDBus_Service_Interface *iface, const EDBus_Message
}
static int
-_ethumb_dbus_fdo_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter *variant, Ethumbd_Request *request)
+_ethumb_dbus_fdo_set(Ethumbd_Object *eobject EINA_UNUSED, EDBus_Message_Iter *variant, Ethumbd_Request *request)
{
int fdo;
@@ -1177,7 +1185,7 @@ _ethumb_dbus_fdo_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter *var
}
static int
-_ethumb_dbus_size_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter *variant, Ethumbd_Request *request)
+_ethumb_dbus_size_set(Ethumbd_Object *eobject EINA_UNUSED, EDBus_Message_Iter *variant, Ethumbd_Request *request)
{
EDBus_Message_Iter *st;
int w, h;
@@ -1198,7 +1206,7 @@ _ethumb_dbus_size_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter *va
}
static int
-_ethumb_dbus_format_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter *variant, Ethumbd_Request *request)
+_ethumb_dbus_format_set(Ethumbd_Object *eobject EINA_UNUSED, EDBus_Message_Iter *variant, Ethumbd_Request *request)
{
int format;
@@ -1216,7 +1224,7 @@ _ethumb_dbus_format_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter *
}
static int
-_ethumb_dbus_aspect_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter *variant, Ethumbd_Request *request)
+_ethumb_dbus_aspect_set(Ethumbd_Object *eobject EINA_UNUSED, EDBus_Message_Iter *variant, Ethumbd_Request *request)
{
int aspect;
@@ -1234,7 +1242,7 @@ _ethumb_dbus_aspect_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter *
}
static int
-_ethumb_dbus_orientation_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter *variant, Ethumbd_Request *request)
+_ethumb_dbus_orientation_set(Ethumbd_Object *eobject EINA_UNUSED, EDBus_Message_Iter *variant, Ethumbd_Request *request)
{
int orientation;
@@ -1252,7 +1260,7 @@ _ethumb_dbus_orientation_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_I
}
static int
-_ethumb_dbus_crop_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter *variant, Ethumbd_Request *request)
+_ethumb_dbus_crop_set(Ethumbd_Object *eobject EINA_UNUSED, EDBus_Message_Iter *variant, Ethumbd_Request *request)
{
EDBus_Message_Iter *st;
double x, y;
@@ -1273,7 +1281,7 @@ _ethumb_dbus_crop_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter *va
}
static int
-_ethumb_dbus_quality_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter *variant, Ethumbd_Request *request)
+_ethumb_dbus_quality_set(Ethumbd_Object *eobject EINA_UNUSED, EDBus_Message_Iter *variant, Ethumbd_Request *request)
{
int quality;
@@ -1292,7 +1300,7 @@ _ethumb_dbus_quality_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter
static int
-_ethumb_dbus_compress_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter *variant, Ethumbd_Request *request)
+_ethumb_dbus_compress_set(Ethumbd_Object *eobject EINA_UNUSED, EDBus_Message_Iter *variant, Ethumbd_Request *request)
{
int compress;
@@ -1310,7 +1318,7 @@ _ethumb_dbus_compress_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter
}
static int
-_ethumb_dbus_frame_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter *variant, Ethumbd_Request *request)
+_ethumb_dbus_frame_set(Ethumbd_Object *eobject EINA_UNUSED, EDBus_Message_Iter *variant, Ethumbd_Request *request)
{
EDBus_Message_Iter *_struct, *file_iter, *group_iter, *swallow_iter;
const char *file, *group, *swallow;
@@ -1328,15 +1336,15 @@ _ethumb_dbus_frame_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter *v
swallow = _ethumb_dbus_get_bytearray(swallow_iter);
DBG("setting frame to \"%s:%s:%s\"", file, group, swallow);
request->setup.flags.frame = 1;
- request->setup.theme_file = eina_stringshare_add(file);
- request->setup.group = eina_stringshare_add(group);
- request->setup.swallow = eina_stringshare_add(swallow);
+ request->setup.theme_file = file;
+ request->setup.group = group;
+ request->setup.swallow = swallow;
return 1;
}
static int
-_ethumb_dbus_directory_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter *variant, Ethumbd_Request *request)
+_ethumb_dbus_directory_set(Ethumbd_Object *eobject EINA_UNUSED, EDBus_Message_Iter *variant, Ethumbd_Request *request)
{
const char *directory;
EDBus_Message_Iter *array;
@@ -1350,13 +1358,13 @@ _ethumb_dbus_directory_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Ite
directory = _ethumb_dbus_get_bytearray(array);
DBG("setting directory to: %s", directory);
request->setup.flags.directory = 1;
- request->setup.directory = eina_stringshare_add(directory);
+ request->setup.directory = directory;
return 1;
}
static int
-_ethumb_dbus_category_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter *variant, Ethumbd_Request *request)
+_ethumb_dbus_category_set(Ethumbd_Object *eobject EINA_UNUSED, EDBus_Message_Iter *variant, Ethumbd_Request *request)
{
const char *category;
EDBus_Message_Iter *array;
@@ -1370,13 +1378,13 @@ _ethumb_dbus_category_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter
category = _ethumb_dbus_get_bytearray(array);
DBG("setting category to: %s", category);
request->setup.flags.category = 1;
- request->setup.category = eina_stringshare_add(category);
+ request->setup.category = category;
return 1;
}
static int
-_ethumb_dbus_video_time_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter *variant, Ethumbd_Request *request)
+_ethumb_dbus_video_time_set(Ethumbd_Object *eobject EINA_UNUSED, EDBus_Message_Iter *variant, Ethumbd_Request *request)
{
double video_time;
@@ -1394,7 +1402,7 @@ _ethumb_dbus_video_time_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_It
}
static int
-_ethumb_dbus_video_start_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter *variant, Ethumbd_Request *request)
+_ethumb_dbus_video_start_set(Ethumbd_Object *eobject EINA_UNUSED, EDBus_Message_Iter *variant, Ethumbd_Request *request)
{
double video_start;
@@ -1412,7 +1420,7 @@ _ethumb_dbus_video_start_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_I
}
static int
-_ethumb_dbus_video_interval_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter *variant, Ethumbd_Request *request)
+_ethumb_dbus_video_interval_set(Ethumbd_Object *eobject EINA_UNUSED, EDBus_Message_Iter *variant, Ethumbd_Request *request)
{
double video_interval;
@@ -1429,7 +1437,7 @@ _ethumb_dbus_video_interval_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Messag
}
static int
-_ethumb_dbus_video_ntimes_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter *variant, Ethumbd_Request *request)
+_ethumb_dbus_video_ntimes_set(Ethumbd_Object *eobject EINA_UNUSED, EDBus_Message_Iter *variant, Ethumbd_Request *request)
{
unsigned int video_ntimes;
@@ -1447,7 +1455,7 @@ _ethumb_dbus_video_ntimes_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_
}
static int
-_ethumb_dbus_video_fps_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter *variant, Ethumbd_Request *request)
+_ethumb_dbus_video_fps_set(Ethumbd_Object *eobject EINA_UNUSED, EDBus_Message_Iter *variant, Ethumbd_Request *request)
{
unsigned int video_fps;
@@ -1465,7 +1473,7 @@ _ethumb_dbus_video_fps_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Ite
}
static int
-_ethumb_dbus_document_page_set(Ethumbd_Object *eobject __UNUSED__, EDBus_Message_Iter *variant, Ethumbd_Request *request)
+_ethumb_dbus_document_page_set(Ethumbd_Object *eobject EINA_UNUSED, EDBus_Message_Iter *variant, Ethumbd_Request *request)
{
unsigned int document_page;
@@ -1542,7 +1550,6 @@ _ethumb_dbus_ethumb_setup_cb(const EDBus_Service_Interface *iface, const EDBus_M
Ethumbd_Object *eobject;
Ethumbd_Request *request;
Eina_Bool r = EINA_FALSE;
- int atype;
EDBus_Message_Iter *array;
EDBus_Message_Iter *data;
@@ -1568,7 +1575,7 @@ _ethumb_dbus_ethumb_setup_cb(const EDBus_Service_Interface *iface, const EDBus_M
r = EINA_TRUE;
while (edbus_message_iter_get_and_next(array, 'r', &data) && r)
{
- if (!_ethumb_dbus_ethumb_setup_parse_element(eobject, data, request));
+ if (!_ethumb_dbus_ethumb_setup_parse_element(eobject, data, request))
r = EINA_FALSE;
}
@@ -1610,12 +1617,11 @@ static const EDBus_Service_Interface_Desc server_desc = {
};
static void
-_ethumb_dbus_request_name_cb(void *data, const EDBus_Message *msg, EDBus_Pending *pending)
+_ethumb_dbus_request_name_cb(void *data, const EDBus_Message *msg, EDBus_Pending *pending EINA_UNUSED)
{
EDBus_Service_Interface *iface;
const char *errname, *errmsg;
Ethumbd *ed = data;
- int r;
if (edbus_message_error_get(msg, &errname, &errmsg))
{
@@ -1654,11 +1660,15 @@ _ethumb_dbus_finish(Ethumbd *ed)
static Eina_Bool
_ethumbd_slave_spawn(Ethumbd_Slave *slave, Ethumbd *ed)
{
+ char buf[PATH_MAX];
+
slave->bufcmd = NULL;
slave->scmd = 0;
- slave->exe = ecore_exe_pipe_run(
- ETHUMB_LIBEXEC_DIR"/ethumbd_slave",
+ snprintf(buf, sizeof(buf), "%s/ethumb/utils/"MODULE_ARCH"/ethumbd_slave",
+ eina_prefix_lib_get(_pfx));
+
+ slave->exe = ecore_exe_pipe_run(buf,
ECORE_EXE_PIPE_READ | ECORE_EXE_PIPE_WRITE, ed);
if (!slave->exe)
{
@@ -1691,11 +1701,22 @@ main(int argc, char *argv[])
if (_log_domain < 0)
{
EINA_LOG_CRIT("could not register log domain 'ethumbd'");
- exit_value = -7;
+ exit_value = -8;
goto finish;
}
}
+ _pfx = eina_prefix_new(argv[0], ethumb_init,
+ "ETHUMB", "ethumb", "checkme",
+ PACKAGE_BIN_DIR, PACKAGE_LIB_DIR,
+ PACKAGE_DATA_DIR, PACKAGE_DATA_DIR);
+ if (!_pfx)
+ {
+ ERR("Could not get ethumb installation prefix.");
+ exit_value = -7;
+ goto finish;
+ }
+
ed.data_cb = ecore_event_handler_add(ECORE_EXE_EVENT_DATA,
_ethumbd_slave_data_read_cb, &ed);
ed.del_cb = ecore_event_handler_add(ECORE_EXE_EVENT_DEL,
@@ -1773,6 +1794,8 @@ main(int argc, char *argv[])
finish:
if (ed.slave.exe)
ecore_exe_quit(ed.slave.exe);
+
+ if (_pfx) eina_prefix_free(_pfx);
ethumb_shutdown();
eina_init();
ecore_shutdown();
diff --git a/legacy/ethumb/src/bin/ethumbd_client.c b/src/bin/ethumb/ethumbd_client.c
index 1dcdf111ed..e81fc2e9a7 100644
--- a/legacy/ethumb/src/bin/ethumbd_client.c
+++ b/src/bin/ethumb/ethumbd_client.c
@@ -60,7 +60,7 @@ struct options
};
static unsigned char
-_ethumb_getopt_callback_frame_parse(const Ecore_Getopt *parser __UNUSED__, const Ecore_Getopt_Desc *desc __UNUSED__, const char *str, void *data __UNUSED__, Ecore_Getopt_Value *storage)
+_ethumb_getopt_callback_frame_parse(const Ecore_Getopt *parser EINA_UNUSED, const Ecore_Getopt_Desc *desc EINA_UNUSED, const char *str, void *data EINA_UNUSED, Ecore_Getopt_Value *storage)
{
struct frame *f = (struct frame *)storage->ptrp;
const char *tfile, *tgroup, *tswallow, *base, *sep;
@@ -151,7 +151,7 @@ _thumb_report(const char *mode, const char *src_path, const char *src_key, const
}
static void
-_finished_thumb(void *data __UNUSED__, Ethumb_Client *client __UNUSED__, int id __UNUSED__, const char *src_path, const char *src_key, const char *thumb_path, const char *thumb_key, Eina_Bool success)
+_finished_thumb(void *data EINA_UNUSED, Ethumb_Client *client EINA_UNUSED, int id EINA_UNUSED, const char *src_path, const char *src_key, const char *thumb_path, const char *thumb_key, Eina_Bool success)
{
const char *mode = success ? "GENERATED" : "FAILED";
_thumb_report(mode, src_path, src_key, thumb_path, thumb_key);
@@ -159,7 +159,7 @@ _finished_thumb(void *data __UNUSED__, Ethumb_Client *client __UNUSED__, int id
}
static void
-_exists(void *data, Ethumb_Client *c, __UNUSED__ Ethumb_Exists *thread, Eina_Bool exists)
+_exists(void *data, Ethumb_Client *c, EINA_UNUSED Ethumb_Exists *thread, Eina_Bool exists)
{
struct options *opts = data;
const char *thumb_path, *thumb_key;
diff --git a/legacy/ethumb/src/bin/ethumbd_private.h b/src/bin/ethumb/ethumbd_private.h
index 688eaddd6b..688eaddd6b 100644
--- a/legacy/ethumb/src/bin/ethumbd_private.h
+++ b/src/bin/ethumb/ethumbd_private.h
diff --git a/legacy/ethumb/src/bin/ethumbd_child.c b/src/bin/ethumb/ethumbd_slave.c
index a11c90ca16..b1d319a305 100644
--- a/legacy/ethumb/src/bin/ethumbd_child.c
+++ b/src/bin/ethumb/ethumbd_slave.c
@@ -126,7 +126,7 @@ _ec_write_safe(int fd, const void *buf, ssize_t size)
}
static int
-_ec_pipe_str_read(struct _Ethumbd_Child *ec __UNUSED__, char **str)
+_ec_pipe_str_read(struct _Ethumbd_Child *ec EINA_UNUSED, char **str)
{
int size;
int r;
@@ -215,7 +215,7 @@ _ec_op_del(struct _Ethumbd_Child *ec)
}
static void
-_ec_op_generated_cb(void *data __UNUSED__, Ethumb *e, Eina_Bool success)
+_ec_op_generated_cb(void *data EINA_UNUSED, Ethumb *e, Eina_Bool success)
{
const char *thumb_path, *thumb_key;
int size_path, size_key, size_cmd;
@@ -291,7 +291,7 @@ _ec_op_generate(struct _Ethumbd_Child *ec)
}
static int
-_ec_fdo_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
+_ec_fdo_set(struct _Ethumbd_Child *ec EINA_UNUSED, Ethumb *e)
{
int r;
int value;
@@ -306,7 +306,7 @@ _ec_fdo_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
}
static int
-_ec_size_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
+_ec_size_set(struct _Ethumbd_Child *ec EINA_UNUSED, Ethumb *e)
{
int r;
int w, h;
@@ -328,7 +328,7 @@ _ec_size_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
}
static int
-_ec_format_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
+_ec_format_set(struct _Ethumbd_Child *ec EINA_UNUSED, Ethumb *e)
{
int r;
int value;
@@ -343,7 +343,7 @@ _ec_format_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
}
static int
-_ec_aspect_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
+_ec_aspect_set(struct _Ethumbd_Child *ec EINA_UNUSED, Ethumb *e)
{
int r;
int value;
@@ -358,7 +358,7 @@ _ec_aspect_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
}
static int
-_ec_orientation_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
+_ec_orientation_set(struct _Ethumbd_Child *ec EINA_UNUSED, Ethumb *e)
{
int r;
int value;
@@ -373,7 +373,7 @@ _ec_orientation_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
}
static int
-_ec_crop_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
+_ec_crop_set(struct _Ethumbd_Child *ec EINA_UNUSED, Ethumb *e)
{
int r;
float x, y;
@@ -395,7 +395,7 @@ _ec_crop_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
}
static int
-_ec_quality_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
+_ec_quality_set(struct _Ethumbd_Child *ec EINA_UNUSED, Ethumb *e)
{
int r;
int value;
@@ -410,7 +410,7 @@ _ec_quality_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
}
static int
-_ec_compress_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
+_ec_compress_set(struct _Ethumbd_Child *ec EINA_UNUSED, Ethumb *e)
{
int r;
int value;
@@ -488,7 +488,7 @@ _ec_category_set(struct _Ethumbd_Child *ec, Ethumb *e)
}
static int
-_ec_video_time_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
+_ec_video_time_set(struct _Ethumbd_Child *ec EINA_UNUSED, Ethumb *e)
{
int r;
float value;
@@ -503,7 +503,7 @@ _ec_video_time_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
}
static int
-_ec_video_start_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
+_ec_video_start_set(struct _Ethumbd_Child *ec EINA_UNUSED, Ethumb *e)
{
int r;
float value;
@@ -518,7 +518,7 @@ _ec_video_start_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
}
static int
-_ec_video_interval_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
+_ec_video_interval_set(struct _Ethumbd_Child *ec EINA_UNUSED, Ethumb *e)
{
int r;
float value;
@@ -533,7 +533,7 @@ _ec_video_interval_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
}
static int
-_ec_video_ntimes_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
+_ec_video_ntimes_set(struct _Ethumbd_Child *ec EINA_UNUSED, Ethumb *e)
{
int r;
int value;
@@ -548,7 +548,7 @@ _ec_video_ntimes_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
}
static int
-_ec_video_fps_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
+_ec_video_fps_set(struct _Ethumbd_Child *ec EINA_UNUSED, Ethumb *e)
{
int r;
int value;
@@ -563,7 +563,7 @@ _ec_video_fps_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
}
static int
-_ec_document_page_set(struct _Ethumbd_Child *ec __UNUSED__, Ethumb *e)
+_ec_document_page_set(struct _Ethumbd_Child *ec EINA_UNUSED, Ethumb *e)
{
int r;
int value;
@@ -731,7 +731,7 @@ _ec_setup(struct _Ethumbd_Child *ec)
}
int
-main(int argc __UNUSED__, const char *argv[] __UNUSED__)
+main(int argc EINA_UNUSED, const char *argv[] EINA_UNUSED)
{
struct _Ethumbd_Child *ec;
diff --git a/src/lib/edje/edje_edit.c b/src/lib/edje/edje_edit.c
index dea54665f5..9361f23929 100644
--- a/src/lib/edje/edje_edit.c
+++ b/src/lib/edje/edje_edit.c
@@ -4749,7 +4749,8 @@ edje_edit_image_data_add(Evas_Object *obj, const char *name, int id)
if ((unsigned int) id >= ed->file->image_dir->entries_count) return EINA_FALSE;
de = ed->file->image_dir->entries + id;
- eina_stringshare_replace(&de->entry, name);
+ _edje_if_string_free(ed, de->entry);
+ de->entry = eina_stringshare_add(name);
de->source_type = 1;
de->source_param = 1;
diff --git a/legacy/ethumb/src/lib/Ethumb.h b/src/lib/ethumb/Ethumb.h
index 12984acb9f..fd4dff708a 100644
--- a/legacy/ethumb/src/lib/Ethumb.h
+++ b/src/lib/ethumb/Ethumb.h
@@ -43,9 +43,74 @@ extern "C" {
int micro;
int revision;
} Ethumb_Version;
-
+
EAPI extern Ethumb_Version *ethumb_version;
-
+
+/**
+ * @page ethumb_main Ethumb
+ *
+ * @date 2009 (created)
+ *
+ * @section toc Table of Contents
+ *
+ * @li @ref ethumb_main_intro
+ * @li @ref ethumb_main_compiling
+ * @li @ref ethumb_main_next_steps
+ *
+ * @section ethumb_main_intro Introduction
+ *
+ * Ethumb will use @ref Evas to generate thumbnail images of given
+ * files. The API allows great customization of the generated files
+ * and also helps compling to FreeDesktop.Org Thumbnail Specification
+ * (http://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html)
+ *
+ * However, thumbnailing can be an expensive process that will impact
+ * your application experience, blocking animations and user
+ * interaction during the generation. Another problem is that one
+ * should try to cache the thumbnails in a place that other
+ * applications can benefit from the file.
+ *
+ * @ref Ethumb_Client exists to solve this. It will communicate with a
+ * server using standard D-Bus protocol. The server will use @ref
+ * Ethumb itself to generate the thumbnail images and cache them using
+ * FreeDesktop.Org standard. It is recommended that most applications
+ * use @ref Ethumb_Client instead of @ref Ethumb directly.
+ *
+ * @section ethumb_main_compiling How to compile
+ *
+ * Ethumb is a library your application links to. The procedure for
+ * this is very simple. Note that usually you want the D-Bus client
+ * library. You simply have to compile your application with the
+ * appropriate compiler flags that the @c pkg-config script
+ * outputs. For example:
+ *
+ * Compiling C or C++ files into object files:
+ *
+ * @verbatim
+ gcc -c -o main.o main.c `pkg-config --cflags ethumb_client`
+ @endverbatim
+ *
+ * Linking object files into a binary executable:
+ *
+ * @verbatim
+ gcc -o my_application main.o `pkg-config --libs ethumb_client`
+ @endverbatim
+ *
+ * See @ref pkgconfig
+ *
+ * @section ethumb_main_next_steps Next Steps
+ *
+ * After you understood what Ethumb is and installed it in your system
+ * you should proceed understanding the programming interface.
+ *
+ * Recommended reading:
+ *
+ * @li @ref Ethumb_Client to generate thumbnails using a server
+ * (recommended).
+ * @li @ref Ethumb to generate thumbnails in the local process.
+ *
+ */
+
/**
* @defgroup Ethumb Ethumb
*
diff --git a/legacy/ethumb/src/lib/Ethumb_Plugin.h b/src/lib/ethumb/Ethumb_Plugin.h
index 3eb6f020cd..3eb6f020cd 100644
--- a/legacy/ethumb/src/lib/Ethumb_Plugin.h
+++ b/src/lib/ethumb/Ethumb_Plugin.h
diff --git a/legacy/ethumb/src/lib/client/Ethumb_Client.h b/src/lib/ethumb/client/Ethumb_Client.h
index 47fe5ee60f..3c3f95d87e 100644
--- a/legacy/ethumb/src/lib/client/Ethumb_Client.h
+++ b/src/lib/ethumb/client/Ethumb_Client.h
@@ -35,6 +35,7 @@ extern "C" {
/**
* @defgroup Ethumb_Client Ethumb Client
+ * @ingroup Ethumb
*
* @{
*/
diff --git a/legacy/ethumb/src/lib/client/ethumb_client.c b/src/lib/ethumb/client/ethumb_client.c
index 77dbbd8134..7b9836625f 100644
--- a/legacy/ethumb/src/lib/client/ethumb_client.c
+++ b/src/lib/ethumb/client/ethumb_client.c
@@ -263,7 +263,7 @@ _ethumb_async_delete(void *data)
}
static void
-_ethumb_client_name_owner_changed(void *context, const char *bus, const char *old_id, const char *new_id)
+_ethumb_client_name_owner_changed(void *context, const char *bus EINA_UNUSED, const char *old_id, const char *new_id)
{
Ethumb_Client *client = context;
DBG("NameOwnerChanged from=[%s] to=[%s]", old_id, new_id);
@@ -311,7 +311,7 @@ _ethumb_client_report_connect(Ethumb_Client *client, Eina_Bool success)
}
static void
-_ethumb_client_new_cb(void *data, const EDBus_Message *msg, EDBus_Pending *pending)
+_ethumb_client_new_cb(void *data, const EDBus_Message *msg, EDBus_Pending *pending EINA_UNUSED)
{
const char *errname, *errmsg;
const char *opath;
@@ -350,7 +350,7 @@ _ethumb_client_call_new(Ethumb_Client *client)
}
static void
-_ethumb_client_exists_heavy(void *data, Ecore_Thread *thread __UNUSED__)
+_ethumb_client_exists_heavy(void *data, Ecore_Thread *thread EINA_UNUSED)
{
Ethumb_Async_Exists *async = data;
@@ -358,7 +358,7 @@ _ethumb_client_exists_heavy(void *data, Ecore_Thread *thread __UNUSED__)
}
static void
-_ethumb_client_exists_end(void *data, Ecore_Thread *thread __UNUSED__)
+_ethumb_client_exists_end(void *data, Ecore_Thread *thread EINA_UNUSED)
{
Ethumb_Async_Exists *async = data;
Ethumb_Exists *cb;
@@ -617,7 +617,7 @@ ethumb_client_on_server_die_callback_set(Ethumb_Client *client, Ethumb_Client_Di
*/
static void
-_ethumb_client_ethumb_setup_cb(void *data, const EDBus_Message *msg, EDBus_Pending *pending)
+_ethumb_client_ethumb_setup_cb(void *data EINA_UNUSED, const EDBus_Message *msg, EDBus_Pending *pending EINA_UNUSED)
{
const char *errname, *errmsg;
Eina_Bool result = 0;
@@ -643,9 +643,13 @@ _ethumb_client_dbus_get_bytearray(EDBus_Message_Iter *array)
const char *result;
if (edbus_message_iter_fixed_array_get(array, 'y', &result, &length))
- return eina_stringshare_add(result);
+ return eina_stringshare_add_length(result, length);
else
- return NULL;
+ {
+ ERR("Not byte array. Signature: %s",
+ edbus_message_iter_signature_get(array));
+ return NULL;
+ }
}
static void
@@ -658,7 +662,7 @@ _ethumb_client_dbus_append_bytearray(EDBus_Message_Iter *parent, const char *str
string = "";
array = edbus_message_iter_container_new(parent, 'a', "y");
- size = strlen(string);
+ size = strlen(string) + 1;
for (i = 0; i < size; i++)
edbus_message_iter_basic_append(array, 'y', string[i]);
edbus_message_iter_container_close(parent, array);
@@ -706,7 +710,6 @@ ethumb_client_ethumb_setup(Ethumb_Client *client)
Ethumb *e = client->ethumb;
int tw, th, format, aspect, orientation, quality, compress;
float cx, cy;
- double t;
const char *theme_file, *group, *swallow;
const char *directory, *category;
double video_time, video_start, video_interval;
@@ -755,7 +758,7 @@ ethumb_client_ethumb_setup(Ethumb_Client *client)
_setup_iterator_close(array, entry, variant);
variant = _setup_iterator_open(array, &entry, "compress", "i");
- quality = ethumb_thumb_quality_get(e);
+ compress = ethumb_thumb_quality_get(e);
edbus_message_iter_arguments_append(variant, "i", compress);
_setup_iterator_close(array, entry, variant);
@@ -826,8 +829,6 @@ _ethumb_client_generated_cb(void *data, const EDBus_Message *msg)
EDBus_Message_Iter *thumb_iter;
EDBus_Message_Iter *thumb_key_iter;
Eina_Bool success;
- const char *thumb = NULL;
- const char *thumb_key = NULL;
int found;
struct _ethumb_pending_gen *pending;
Eina_List *l;
@@ -854,14 +855,14 @@ _ethumb_client_generated_cb(void *data, const EDBus_Message *msg)
if (found)
{
- thumb = _ethumb_client_dbus_get_bytearray(thumb_iter);
- thumb_key = _ethumb_client_dbus_get_bytearray(thumb_key_iter);
+ const char *thumb = _ethumb_client_dbus_get_bytearray(thumb_iter);
+ const char *thumb_key = _ethumb_client_dbus_get_bytearray(thumb_key_iter);
client->pending_gen = eina_list_remove_list(client->pending_gen, l);
if (pending->generated_cb)
pending->generated_cb(pending->data, client, id,
pending->file, pending->key,
- pending->thumb, pending->thumb_key,
+ thumb, thumb_key,
success);
if (pending->free_data)
pending->free_data(pending->data);
@@ -869,12 +870,14 @@ _ethumb_client_generated_cb(void *data, const EDBus_Message *msg)
eina_stringshare_del(pending->key);
eina_stringshare_del(pending->thumb);
eina_stringshare_del(pending->thumb_key);
+ eina_stringshare_del(thumb);
+ eina_stringshare_del(thumb_key);
free(pending);
}
}
static void
-_ethumb_client_queue_add_cb(void *data, const EDBus_Message *msg, EDBus_Pending *edbus_pending)
+_ethumb_client_queue_add_cb(void *data, const EDBus_Message *msg, EDBus_Pending *edbus_pending EINA_UNUSED)
{
const char *errname, *errmsg;
int32_t id;
@@ -925,7 +928,7 @@ static int
_ethumb_client_queue_add(Ethumb_Client *client, const char *file, const char *key, const char *thumb, const char *thumb_key, Ethumb_Client_Generate_Cb generated_cb, const void *data, Eina_Free_Cb free_data)
{
EDBus_Message *msg;
- EDBus_Message_Iter *main;
+ EDBus_Message_Iter *main_itr;
struct _ethumb_pending_add *pending;
pending = calloc(1, sizeof(*pending));
@@ -942,12 +945,12 @@ _ethumb_client_queue_add(Ethumb_Client *client, const char *file, const char *ke
client->id_count = (client->id_count + 1) % MAX_ID;
msg = edbus_proxy_method_call_new(client->proxy, "queue_add");
- main = edbus_message_iter_get(msg);
- edbus_message_iter_basic_append(main, 'i', pending->id);
- _ethumb_client_dbus_append_bytearray(main, file);
- _ethumb_client_dbus_append_bytearray(main, key);
- _ethumb_client_dbus_append_bytearray(main, thumb);
- _ethumb_client_dbus_append_bytearray(main, thumb_key);
+ main_itr = edbus_message_iter_get(msg);
+ edbus_message_iter_basic_append(main_itr, 'i', pending->id);
+ _ethumb_client_dbus_append_bytearray(main_itr, file);
+ _ethumb_client_dbus_append_bytearray(main_itr, key);
+ _ethumb_client_dbus_append_bytearray(main_itr, thumb);
+ _ethumb_client_dbus_append_bytearray(main_itr, thumb_key);
pending->pending_call = edbus_proxy_send(client->proxy, msg,
_ethumb_client_queue_add_cb,
@@ -959,7 +962,7 @@ _ethumb_client_queue_add(Ethumb_Client *client, const char *file, const char *ke
}
static void
-_ethumb_client_queue_remove_cb(void *data, const EDBus_Message *msg, EDBus_Pending *edbus_pending)
+_ethumb_client_queue_remove_cb(void *data, const EDBus_Message *msg, EDBus_Pending *edbus_pending EINA_UNUSED)
{
Eina_Bool success;
struct _ethumb_pending_remove *pending = data;
@@ -2051,7 +2054,7 @@ _ethumb_client_async_free(Ethumb_Client_Async *async)
static void
_ethumb_client_thumb_finish(void *data,
Ethumb_Client *client, int id,
- const char *file __UNUSED__, const char *key __UNUSED__,
+ const char *file EINA_UNUSED, const char *key EINA_UNUSED,
const char *thumb_path, const char *thumb_key,
Eina_Bool success)
{
@@ -2073,7 +2076,7 @@ _ethumb_client_thumb_finish(void *data,
}
static Eina_Bool
-_ethumb_client_thumb_generate_idler(void *data __UNUSED__)
+_ethumb_client_thumb_generate_idler(void *data EINA_UNUSED)
{
Ethumb_Client_Async *async;
Eina_List *l1, *l2;
@@ -2141,7 +2144,7 @@ _ethumb_client_thumb_exists(void *data, Ethumb_Client *client, Ethumb_Exists *re
}
static Eina_Bool
-_ethumb_client_thumb_exists_idler(void *data __UNUSED__)
+_ethumb_client_thumb_exists_idler(void *data EINA_UNUSED)
{
Ethumb_Client_Async *async;
Eina_List *l1, *l2;
diff --git a/legacy/ethumb/src/lib/ethumb.c b/src/lib/ethumb/ethumb.c
index 28dbb81d25..65d3b97c84 100644
--- a/legacy/ethumb/src/lib/ethumb.c
+++ b/src/lib/ethumb/ethumb.c
@@ -31,23 +31,6 @@
# include <stdlib.h>
# endif
#endif
-#ifdef HAVE_ALLOCA_H
-# include <alloca.h>
-#elif !defined alloca
-# ifdef __GNUC__
-# define alloca __builtin_alloca
-# elif defined _AIX
-# define alloca __alloca
-# elif defined _MSC_VER
-# include <malloc.h>
-# define alloca _alloca
-# elif !defined HAVE_ALLOCA
-# ifdef __cplusplus
-extern "C"
-# endif
-void *alloca (size_t);
-# endif
-#endif
#include <stdio.h>
#include <stdlib.h>
@@ -109,9 +92,10 @@ static const int THUMB_SIZE_LARGE = 256;
static Eina_Hash *_plugins_ext = NULL;
static Eina_Array *_plugins = NULL;
+static Eina_Prefix *_pfx = NULL;
static Eina_Bool
-_ethumb_plugin_list_cb(Eina_Module *m, void *data __UNUSED__)
+_ethumb_plugin_list_cb(Eina_Module *m, void *data EINA_UNUSED)
{
const char *file;
const char **ext;
@@ -156,10 +140,13 @@ _ethumb_plugin_list_cb(Eina_Module *m, void *data __UNUSED__)
static void
_ethumb_plugins_load(void)
{
+ char buf[PATH_MAX];
+
_plugins_ext = eina_hash_string_small_new(NULL);
EINA_SAFETY_ON_NULL_RETURN(_plugins_ext);
- _plugins = eina_module_list_get(_plugins, PLUGINSDIR, 1,
+ snprintf(buf, sizeof(buf), "%s/ethumb/modules", eina_prefix_lib_get(_pfx));
+ _plugins = eina_module_list_get(_plugins, buf, 1,
&_ethumb_plugin_list_cb, NULL);
}
@@ -192,8 +179,17 @@ ethumb_init(void)
if (_log_dom < 0)
{
EINA_LOG_ERR("Could not register log domain: ethumb");
- eina_shutdown();
- return 0;
+ goto error_log;
+ }
+
+ _pfx = eina_prefix_new(NULL, ethumb_init,
+ "ETHUMB", "ethumb", "checkme",
+ PACKAGE_BIN_DIR, PACKAGE_LIB_DIR,
+ PACKAGE_DATA_DIR, PACKAGE_DATA_DIR);
+ if (!_pfx)
+ {
+ ERR("Could not get ethumb installation prefix.");
+ goto error_pfx;
}
evas_init();
@@ -210,6 +206,14 @@ ethumb_init(void)
_ethumb_plugins_load();
return ++initcount;
+
+ error_pfx:
+ eina_log_domain_unregister(_log_dom);
+ _log_dom = -1;
+
+ error_log:
+ eina_shutdown();
+ return 0;
}
EAPI int
@@ -231,6 +235,8 @@ ethumb_shutdown(void)
ecore_shutdown();
ecore_evas_shutdown();
edje_shutdown();
+ eina_prefix_free(_pfx);
+ _pfx = NULL;
eina_log_domain_unregister(_log_dom);
_log_dom = -1;
eina_shutdown();
@@ -1453,6 +1459,7 @@ _ethumb_image_load(Ethumb *e)
if (e->orientation == ETHUMB_THUMB_ORIENT_ORIGINAL)
{
+ /* TODO: rewrite to not need libexif just to get this */
#ifdef HAVE_LIBEXIF
ExifData *exif = exif_data_new_from_file(e->src_path);
ExifEntry *entry = NULL;
@@ -1595,7 +1602,7 @@ ethumb_generate(Ethumb *e, Ethumb_Generate_Cb finished_cb, const void *data, Ein
}
r = _ethumb_plugin_generate(e);
- fprintf(stderr, "ethumb generate: %i: %p\n", r, e->pdata);
+ DBG("ethumb plugin generate: %i: %p\n", r, e->pdata);
if (r)
{
return EINA_TRUE;
@@ -1603,7 +1610,8 @@ ethumb_generate(Ethumb *e, Ethumb_Generate_Cb finished_cb, const void *data, Ein
if (!_ethumb_image_load(e))
{
- ERR("could not load input image.");
+ ERR("could not load input image: file=%s, key=%s",
+ e->src_path, e->src_key);
ethumb_finished_callback_call(e, 0);
return EINA_FALSE;
}
@@ -1771,7 +1779,7 @@ ethumb_cmp(const Ethumb *e1, const Ethumb *e2)
}
EAPI unsigned int
-ethumb_length(__UNUSED__ const void *key)
+ethumb_length(EINA_UNUSED const void *key)
{
return sizeof (Ethumb);
}
@@ -1781,8 +1789,8 @@ ethumb_length(__UNUSED__ const void *key)
return e1->Param - e2->Param;
EAPI int
-ethumb_key_cmp(const void *key1, __UNUSED__ int key1_length,
- const void *key2, __UNUSED__ int key2_length)
+ethumb_key_cmp(const void *key1, EINA_UNUSED int key1_length,
+ const void *key2, EINA_UNUSED int key2_length)
{
const Ethumb *e1 = key1;
const Ethumb *e2 = key2;
@@ -1824,7 +1832,7 @@ ethumb_key_cmp(const void *key1, __UNUSED__ int key1_length,
#define HASH_PARAM_F(Param) r ^= eina_hash_int32((unsigned int*) &e->Param, 0);
EAPI int
-ethumb_hash(const void *key, int key_length __UNUSED__)
+ethumb_hash(const void *key, int key_length EINA_UNUSED)
{
const Ethumb *e = key;
int r = 0;
diff --git a/legacy/ethumb/src/lib/ethumb_private.h b/src/lib/ethumb/ethumb_private.h
index 49e4de9f67..49e4de9f67 100644
--- a/legacy/ethumb/src/lib/ethumb_private.h
+++ b/src/lib/ethumb/ethumb_private.h
diff --git a/legacy/ethumb/src/lib/md5.c b/src/lib/ethumb/md5.c
index b62a9ffe7d..b62a9ffe7d 100644
--- a/legacy/ethumb/src/lib/md5.c
+++ b/src/lib/ethumb/md5.c
diff --git a/legacy/ethumb/src/lib/md5.h b/src/lib/ethumb/md5.h
index 348fcd654b..348fcd654b 100644
--- a/legacy/ethumb/src/lib/md5.h
+++ b/src/lib/ethumb/md5.h
diff --git a/legacy/ethumb/src/plugins/emotion/emotion.c b/src/modules/ethumb/emotion/emotion.c
index 560e661e8e..12750883d8 100644
--- a/legacy/ethumb/src/plugins/emotion/emotion.c
+++ b/src/modules/ethumb/emotion/emotion.c
@@ -18,6 +18,8 @@
#include <Edje_Edit.h>
#include <Emotion.h>
+static Eina_Prefix *_pfx = NULL;
+static int _init_count = 0;
static int _log_dom = -1;
#define DBG(...) EINA_LOG_DOM_DBG(_log_dom, __VA_ARGS__)
#define INF(...) EINA_LOG_DOM_INFO(_log_dom, __VA_ARGS__)
@@ -65,7 +67,7 @@ _resize_movie(struct _emotion_plugin *_plugin)
}
static void
-_frame_decode_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
+_frame_decode_cb(void *data, Evas_Object *o EINA_UNUSED, void *event_info EINA_UNUSED)
{
struct _emotion_plugin *_plugin = data;
@@ -76,13 +78,13 @@ _frame_decode_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSE
}
static void
-_frame_resized_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
+_frame_resized_cb(void *data, Evas_Object *o EINA_UNUSED, void *event_info EINA_UNUSED)
{
_resize_movie(data);
}
static void
-_video_stopped_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
+_video_stopped_cb(void *data, Evas_Object *o EINA_UNUSED, void *event_info EINA_UNUSED)
{
struct _emotion_plugin *_plugin = data;
@@ -129,23 +131,24 @@ _setup_thumbnail(struct _emotion_plugin *_plugin)
if (!edje_file_group_exists(thumb_path, "movie/thumb"))
{
- fprintf(stderr, "ERROR: no group 'movie/thumb' found.\n");
- goto exit_error;
+ ERR("no group 'movie/thumb' found in file=%s", thumb_path);
+ goto exit_error;
}
edje = edje_edit_object_add(evas);
edje_object_file_set(edje, thumb_path, "movie/thumb");
if (!edje_object_part_exists(edje, "image"))
{
- fprintf(stderr, "ERROR: no 'image' part found.\n");
- evas_object_del(edje);
- goto exit_error;
+ ERR("no 'image' part found in file=%s, group=movie/thumb", thumb_path);
+ evas_object_del(edje);
+ goto exit_error;
}
if (!edje_edit_program_exist(edje, "animate"))
{
- fprintf(stderr, "ERROR: no 'animate' program found.\n");
- evas_object_del(edje);
- goto exit_error;
+ ERR("no 'animate' program found in file=%s, group=movie/thumb",
+ thumb_path);
+ evas_object_del(edje);
+ goto exit_error;
}
for (i = 0; i < _plugin->frnum; i++)
@@ -177,23 +180,43 @@ exit_error:
}
static void
+_finish_thumb_obj(void *data)
+{
+ struct _emotion_plugin *_plugin = data;
+ evas_object_del(_plugin->video);
+ free(_plugin);
+}
+
+static void
_finish_thumb_generation(struct _emotion_plugin *_plugin, int success)
{
int r = 0;
+
evas_object_smart_callback_del(_plugin->video, "frame_resize",
- _frame_resized_cb);
+ _frame_resized_cb);
evas_object_smart_callback_del(_plugin->video, "frame_decode",
- _frame_decode_cb);
+ _frame_decode_cb);
+ evas_object_smart_callback_del(_plugin->video, "decode_stop",
+ _video_stopped_cb);
+
emotion_object_play_set(_plugin->video, 0);
- evas_object_del(_plugin->video);
+
if (_plugin->ef)
- eet_close(_plugin->ef);
+ {
+ Eet_Error err = eet_close(_plugin->ef);
+ if (err != EET_ERROR_NONE)
+ {
+ ERR("Error writing Eet thumbnail file: %d", err);
+ success = EINA_FALSE;
+ }
+ }
if (success)
r = _setup_thumbnail(_plugin);
- free(_plugin);
ethumb_finished_callback_call(_plugin->e, r);
+
+ ecore_job_add(_finish_thumb_obj, _plugin);
}
static Eina_Bool
@@ -298,17 +321,25 @@ _generate_animated_thumb(struct _emotion_plugin *_plugin)
char buf[4096];
Ethumb *e = _plugin->e;
- snprintf(buf, sizeof(buf), "%s/data/emotion_template.edj", PLUGINSDIR);
+ snprintf(buf, sizeof(buf),
+ "%s/ethumb/modules/emotion/" MODULE_ARCH "/template.edj",
+ eina_prefix_lib_get(_pfx));
ethumb_thumb_path_get(e, &thumb_path, NULL);
thumb_dir = ecore_file_dir_get(thumb_path);
ecore_file_mkpath(thumb_dir);
free(thumb_dir);
- ecore_file_cp(buf, thumb_path);
+ if (!eina_file_copy(buf, thumb_path, 0, NULL, NULL))
+ {
+ ERR("Couldn't copy file '%s' to '%s'", buf, thumb_path);
+ ERR("could not open '%s'", thumb_path);
+ _finish_thumb_generation(_plugin, 0);
+ return;
+ }
_plugin->ef = eet_open(thumb_path, EET_FILE_MODE_READ_WRITE);
if (!_plugin->ef)
{
- fprintf(stderr, "ERROR: could not open '%s'\n", thumb_path);
- _finish_thumb_generation(_plugin, 0);
+ ERR("could not open '%s'", thumb_path);
+ _finish_thumb_generation(_plugin, 0);
}
}
@@ -325,8 +356,7 @@ _thumb_generate(Ethumb *e)
r = emotion_object_init(o, NULL);
if (!r)
{
- fprintf(stderr, "ERROR: could not start emotion using gstreamer"
- " plugin.\n");
+ ERR("Could not initialize emotion object.");
evas_object_del(o);
ethumb_finished_callback_call(e, 0);
free(_plugin);
@@ -368,7 +398,7 @@ _thumb_generate(Ethumb *e)
}
static void
-_thumb_cancel(Ethumb *e __UNUSED__, void *data)
+_thumb_cancel(Ethumb *e EINA_UNUSED, void *data)
{
struct _emotion_plugin *_plugin = data;
@@ -389,20 +419,65 @@ ethumb_plugin_get(void)
_thumb_cancel
};
- _log_dom = eina_log_domain_register("ethumb_emotion", EINA_COLOR_GREEN);
-
return &plugin;
}
static Eina_Bool
_module_init(void)
{
+ if (_init_count > 0)
+ {
+ _init_count++;
+ return EINA_TRUE;
+ }
+
+ _log_dom = eina_log_domain_register("ethumb_emotion", EINA_COLOR_GREEN);
+ if (_log_dom < 0)
+ {
+ EINA_LOG_ERR("Could not register log domain: ethumb_emotion");
+ goto error_log;
+ }
+
+ _pfx = eina_prefix_new(NULL, ethumb_init,
+ "ETHUMB", "ethumb", "checkme",
+ PACKAGE_BIN_DIR, PACKAGE_LIB_DIR,
+ PACKAGE_DATA_DIR, PACKAGE_DATA_DIR);
+ if (!_pfx)
+ {
+ ERR("Could not get ethumb installation prefix.");
+ goto error_pfx;
+ }
+
+ emotion_init();
+
+ _init_count = 1;
return EINA_TRUE;
+
+ error_pfx:
+ eina_log_domain_unregister(_log_dom);
+ _log_dom = -1;
+
+ error_log:
+ return EINA_FALSE;
}
static void
_module_shutdown(void)
{
+ if (_init_count <= 0)
+ {
+ EINA_LOG_ERR("Init count not greater than 0 in shutdown.");
+ return;
+ }
+ _init_count--;
+ if (_init_count > 0) return;
+
+ emotion_shutdown();
+
+ eina_prefix_free(_pfx);
+ _pfx = NULL;
+ eina_log_domain_unregister(_log_dom);
+ _log_dom = -1;
}
EINA_MODULE_INIT(_module_init);
diff --git a/src/modules/ethumb/emotion/placeholder.png b/src/modules/ethumb/emotion/placeholder.png
new file mode 100644
index 0000000000..2c90acdc92
--- /dev/null
+++ b/src/modules/ethumb/emotion/placeholder.png
Binary files differ
diff --git a/legacy/ethumb/src/plugins/emotion/template.edc b/src/modules/ethumb/emotion/template.edc
index 4a30c3deac..050641c12f 100644
--- a/legacy/ethumb/src/plugins/emotion/template.edc
+++ b/src/modules/ethumb/emotion/template.edc
@@ -3,6 +3,8 @@ collections {
group {
name: "movie/thumb";
+ images.image: "placeholder.png" COMP;
+
parts {
part {
name: "image";
@@ -10,8 +12,8 @@ collections {
mouse_events: 0;
description {
state: "default" 0.0;
- fill.smooth: 0;
- image.scale_hint: DYNAMIC;
+ fill.smooth: 0;
+ image.normal: "placeholder.png"; /* edje doesn't allow image without files anymore */
}
}
}
diff --git a/legacy/ethumb/src/tests/ethumb_dbus.c b/src/tests/ethumb/ethumb_dbus.c
index d9e2f10281..946aa137ff 100644
--- a/legacy/ethumb/src/tests/ethumb_dbus.c
+++ b/src/tests/ethumb/ethumb_dbus.c
@@ -34,13 +34,13 @@
#include <Ecore.h>
static void
-_on_server_die_cb(void *data __UNUSED__, Ethumb_Client *client __UNUSED__)
+_on_server_die_cb(void *data EINA_UNUSED, Ethumb_Client *client EINA_UNUSED)
{
ecore_main_loop_quit();
}
static void
-_queue_add_cb(void *data __UNUSED__, Ethumb_Client *client __UNUSED__, int id, const char *file, const char *key __UNUSED__, const char *thumb_path, const char *thumb_key __UNUSED__, Eina_Bool success)
+_queue_add_cb(void *data EINA_UNUSED, Ethumb_Client *client EINA_UNUSED, int id, const char *file, const char *key EINA_UNUSED, const char *thumb_path, const char *thumb_key EINA_UNUSED, Eina_Bool success)
{
fprintf(stderr, ">>> %hhu file ready: %s; thumb ready: %s; id = %d\n", success, file, thumb_path, id);
}