forked from enlightenment/efl
Compare commits
106 Commits
Author | SHA1 | Date |
---|---|---|
NorwayFun | 55dd7015bb | |
NorwayFun | a734ec4e94 | |
Christopher Michael | 3267070da9 | |
Christopher Michael | d434a6039c | |
Carsten Haitzler | f93b08c76f | |
Carsten Haitzler | d9097d48fe | |
Carsten Haitzler | c0f61b4e37 | |
Carsten Haitzler | f67e9b4fff | |
Carsten Haitzler | 43805d788b | |
Christopher Michael | 6c642eb12b | |
Carsten Haitzler | ab92af333e | |
Carsten Haitzler | d1f1af054f | |
Carsten Haitzler | faf9745538 | |
Carsten Haitzler | d8a05e2662 | |
Carsten Haitzler | da2b8ca356 | |
Carsten Haitzler | 69e56608d3 | |
Dmitri Chudinov | ac245ef30b | |
Dmitri Chudinov | 0ceda5b7f9 | |
Dmitri Chudinov | c73c270b33 | |
Dmitri Chudinov | 3474d867aa | |
Carsten Haitzler | 0e22417f45 | |
orbea | bdd5b244e6 | |
Carsten Haitzler | 106e25be74 | |
Carsten Haitzler | 15ce7118f8 | |
Carsten Haitzler | b3eac8b838 | |
Carsten Haitzler | 919e646ad3 | |
Dmitri Chudinov | 90e1ab7a39 | |
Carsten Haitzler | 6670a57054 | |
Christopher Michael | 853fb69417 | |
Carsten Haitzler | c142783851 | |
Carsten Haitzler | 869255d068 | |
Carsten Haitzler | 6b3eaf41e7 | |
Carsten Haitzler | 5f3c627661 | |
Carsten Haitzler | bb2a4e8a4f | |
Carsten Haitzler | 241d67116f | |
Carsten Haitzler | e5170acebf | |
Carsten Haitzler | 7a0118e7f1 | |
Carsten Haitzler | 83d598a79c | |
Marcel Hollerbach | c3d1f19ed8 | |
Marcel Hollerbach | af6134aa6c | |
Carsten Haitzler | 54c6516373 | |
Christopher Michael | 0dc787ee6b | |
Carsten Haitzler | 3008e1cd4c | |
Carsten Haitzler | 712c0d5b0d | |
Carsten Haitzler | a4a0dc7a75 | |
Carsten Haitzler | b0232b5e1d | |
Carsten Haitzler | f682178017 | |
Carsten Haitzler | 5f85967da1 | |
Carsten Haitzler | e9e40eb610 | |
Carsten Haitzler | 165589875b | |
Vincent Torri | 11843f1991 | |
Vincent Torri | 329163c290 | |
Carsten Haitzler | ad2276d8c2 | |
Carsten Haitzler | c535a3a6f4 | |
Carsten Haitzler | 7743b17dba | |
Carsten Haitzler | 9490cf857b | |
Carsten Haitzler | bdbac3ae45 | |
Carsten Haitzler | d7521c69dd | |
Vincent Torri | 01fb3233eb | |
Carsten Haitzler | d4ee3a158a | |
Carsten Haitzler | 6fd2852b14 | |
Carsten Haitzler | 5aa9a59c33 | |
Carsten Haitzler | 4ee80acc49 | |
Carsten Haitzler | 1e623d3350 | |
Carsten Haitzler | 1e19806faf | |
Carsten Haitzler | 8d4a2a70cf | |
Carsten Haitzler | d8fe6e9450 | |
Carsten Haitzler | 4ba44bd865 | |
Carsten Haitzler | da0a6f9ed0 | |
Christopher Michael | dc81e925c8 | |
Carsten Haitzler | 41dd584789 | |
Carsten Haitzler | 0f6e1c03f0 | |
Vincent Torri | 0a1ae11586 | |
Carsten Haitzler | 107b19d427 | |
Carsten Haitzler | ac6734d217 | |
Carsten Haitzler | d051e08876 | |
Carsten Haitzler | 0ec15a2ecb | |
Jaehyun Cho | 3756b88cde | |
Carsten Haitzler | d3a1b077fb | |
Carsten Haitzler | d3b8f40ff0 | |
Christopher Michael | e3e5314950 | |
Carsten Haitzler | 5e1023f64b | |
Carsten Haitzler | 33c0b2a82d | |
Carsten Haitzler | 1650f9f723 | |
junsu choi | 7b4c9284a9 | |
junsu choi | ef784708b9 | |
junsu choi | 92f77c5123 | |
junsu choi | 5ebebe4698 | |
junsu choi | 3411c604f2 | |
Carsten Haitzler | 7a674c6a29 | |
junsu choi | a32373195b | |
Carsten Haitzler | ec80ef2ce4 | |
Carsten Haitzler | 6c9784b918 | |
Carsten Haitzler | ebd8632dba | |
Carsten Haitzler | f817041d69 | |
Carsten Haitzler | 4ccbe49b92 | |
Carsten Haitzler | 34a36b49e1 | |
Carsten Haitzler | 29029bc781 | |
Carsten Haitzler | 0d3c7c820d | |
Carsten Haitzler | b1ddbd8408 | |
Carsten Haitzler | 0fe3c751d1 | |
Carsten Haitzler | 95b3fec338 | |
Vincent Torri | 8189c1a529 | |
Carsten Haitzler | e5d3319693 | |
Carsten Haitzler | 40147b36e9 | |
Ali Alzyod | 57b2bedac3 |
|
@ -1,7 +0,0 @@
|
||||||
{
|
|
||||||
"project_id" : "efl",
|
|
||||||
"projects" : "efl",
|
|
||||||
"conduit_uri" : "https://phab.enlightenment.org/",
|
|
||||||
"phabricator.uri" : "https://phab.enlightenment.org/",
|
|
||||||
"repository.callsign" : "EFL"
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
mkdir build-bootstrap-native
|
|
||||||
meson --prefix=/usr/ --libdir=/usr/lib -Dbuild-examples=false -Dbuild-tests=false -Dbindings=cxx build-bootstrap-native
|
|
||||||
ninja -C build-bootstrap-native install
|
|
||||||
rm -rf build-bootstrap-native
|
|
||||||
ldconfig
|
|
|
@ -1,16 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
if [ -d /usr/local/lib64 ] ; then
|
|
||||||
export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig
|
|
||||||
else
|
|
||||||
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
|
|
||||||
fi
|
|
||||||
cd .ci/example
|
|
||||||
|
|
||||||
#build the example
|
|
||||||
mkdir build
|
|
||||||
meson . build
|
|
||||||
ninja -C build all
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
max_size = 500M
|
|
||||||
compression = true
|
|
||||||
compression_level = 1
|
|
||||||
sloppiness = time_macros,include_file_mtime,include_file_ctime,file_macro
|
|
||||||
run_second_cpp = false
|
|
||||||
hash_dir = false
|
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
if [ "$1" = "codecov" ] || [ "$1" = "coverity" ] || [ "$1" = "mingw" ] || [ "$1" = "release-ready" ]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
travis_fold start "app-compile-test"
|
|
||||||
travis_time_start "app-compile-test"
|
|
||||||
if [ "$DISTRO" != "" ] ; then
|
|
||||||
docker exec --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) .ci/build-example.sh
|
|
||||||
elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
|
||||||
exit 0
|
|
||||||
#FIXME: we don't install efl_ui.pc on osx?
|
|
||||||
export PATH="$(brew --prefix gettext)/bin:$PATH"
|
|
||||||
.ci/build-example.sh
|
|
||||||
fi
|
|
||||||
travis_time_finish "app-compile-test"
|
|
||||||
travis_fold end "app-compile-test"
|
|
|
@ -1,13 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
travis_fold start "ccache-stats"
|
|
||||||
travis_time_start "ccache-stats"
|
|
||||||
if [ "$DISTRO" != "" ] ; then
|
|
||||||
docker exec $(cat $HOME/cid) ccache -s
|
|
||||||
elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
|
||||||
ccache -s
|
|
||||||
fi
|
|
||||||
travis_time_finish "ccache-stats"
|
|
||||||
travis_fold end "ccache-stats"
|
|
|
@ -1,114 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
travis_fold start "meson"
|
|
||||||
travis_time_start "meson"
|
|
||||||
if [ "$DISTRO" != "" ] ; then
|
|
||||||
# Why do we need to disable the imf loaders here?
|
|
||||||
OPTS=" -Decore-imf-loaders-disabler=scim,ibus"
|
|
||||||
|
|
||||||
MONO_LINUX_COPTS=" -Dbindings=cxx,mono -Dmono-beta=true"
|
|
||||||
|
|
||||||
WAYLAND_LINUX_COPTS=" -Dwl=true -Ddrm=true -Dopengl=es-egl -Dwl-deprecated=true -Ddrm-deprecated=true"
|
|
||||||
|
|
||||||
# TODO:
|
|
||||||
# - No libelogind package in fedora 30 repo
|
|
||||||
# - Ibus
|
|
||||||
ENABLED_LINUX_COPTS=" -Dfb=true -Dsdl=true -Dbuffer=true -Dbuild-id=travis-build \
|
|
||||||
-Ddebug-threads=true -Dglib=true -Dg-mainloop=true -Dxpresent=true -Dxinput22=true \
|
|
||||||
-Decore-imf-loaders-disabler= \
|
|
||||||
-Dharfbuzz=true -Dpixman=true -Dhyphen=true -Defl-one=true \
|
|
||||||
-Dvnc-server=true -Delua=true -Dbindings=lua,cxx,mono -Delogind=false -Dinstall-eo-files=true -Dphysics=true"
|
|
||||||
|
|
||||||
# Enabled png, jpeg evas loader for in tree edje file builds
|
|
||||||
DISABLED_LINUX_COPTS=" -Daudio=false -Davahi=false -Dx11=false -Dphysics=false -Deeze=false \
|
|
||||||
-Dopengl=none -Deina-magic-debug=false -Dbuild-examples=false -Dbuild-tests=false \
|
|
||||||
-Dcrypto=gnutls -Dglib=false -Dgstreamer=false -Dsystemd=false -Dpulseaudio=false \
|
|
||||||
-Dnetwork-backend=connman -Dxinput2=false -Dtslib=false \
|
|
||||||
-Devas-loaders-disabler=gst,pdf,ps,raw,svg,xcf,bmp,dds,eet,generic,gif,ico,jp2k,json,pmaps,psd,tga,tgv,tiff,wbmp,webp,xpm,avif,heif \
|
|
||||||
-Decore-imf-loaders-disabler=xim,ibus,scim \
|
|
||||||
-Dfribidi=false -Dfontconfig=false \
|
|
||||||
-Dedje-sound-and-video=false -Dembedded-lz4=false -Dlibmount=false -Dv4l2=false \
|
|
||||||
-Delua=false -Dnls=false -Dbindings= -Dlua-interpreter=luajit -Dnative-arch-optimization=false"
|
|
||||||
#evas_filter_parser.c:(.text+0xc59): undefined reference to `lua_getglobal' with interpreter lua
|
|
||||||
|
|
||||||
RELEASE_READY_LINUX_COPTS=" --buildtype=release"
|
|
||||||
|
|
||||||
MINGW_COPTS="--cross-file .ci/cross_toolchain.txt -Davahi=false -Deeze=false -Dsystemd=false \
|
|
||||||
-Dpulseaudio=false -Dx11=false -Dopengl=none -Dlibmount=false \
|
|
||||||
-Devas-loaders-disabler=json,pdf,ps,raw,svg,rsvg,avif,heif \
|
|
||||||
-Dharfbuzz=true -Dpixman=true -Dembedded-lz4=false "
|
|
||||||
|
|
||||||
if [ "$1" = "default" ]; then
|
|
||||||
OPTS="$OPTS $MONO_LINUX_COPTS"
|
|
||||||
elif [ "$1" = "options-enabled" ]; then
|
|
||||||
OPTS="$OPTS $ENABLED_LINUX_COPTS $WAYLAND_LINUX_COPTS"
|
|
||||||
elif [ "$1" = "options-disabled" ]; then
|
|
||||||
OPTS="$OPTS $DISABLED_LINUX_COPTS"
|
|
||||||
elif [ "$1" = "wayland" ]; then
|
|
||||||
OPTS="$OPTS $WAYLAND_LINUX_COPTS"
|
|
||||||
elif [ "$1" = "release-ready" ]; then
|
|
||||||
OPTS="$OPTS $RELEASE_READY_LINUX_COPTS"
|
|
||||||
elif [ "$1" = "coverity" ]; then
|
|
||||||
travis_fold start "cov-download"
|
|
||||||
travis_time_start "cov-download"
|
|
||||||
OPTS="$OPTS $WAYLAND_LINUX_COPTS"
|
|
||||||
docker exec --env COVERITY_SCAN_TOKEN=$COVERITY_SCAN_TOKEN $(cat $HOME/cid) sh -c '.ci/coverity-tools-install.sh'
|
|
||||||
travis_time_finish "cov-download"
|
|
||||||
travis_fold end "cov-download"
|
|
||||||
elif [ "$1" = "mingw" ]; then
|
|
||||||
travis_fold start "cross-native"
|
|
||||||
travis_time_start "cross-native"
|
|
||||||
OPTS="$OPTS $MINGW_COPTS"
|
|
||||||
docker exec $(cat $HOME/cid) sh -c '.ci/bootstrap-efl-native-for-cross.sh'
|
|
||||||
travis_time_finish "cross-native"
|
|
||||||
travis_fold end "cross-native"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$1" = "asan" ]; then
|
|
||||||
docker exec --env EIO_MONITOR_POLL=1 --env CC="ccache gcc" \
|
|
||||||
--env CXX="ccache g++" --env CFLAGS="-O0 -g" --env CXXFLAGS="-O0 -g" \
|
|
||||||
--env LD="ld.gold" $(cat $HOME/cid) sh -c "mkdir build && meson build $OPTS -Db_sanitize=address"
|
|
||||||
elif [ "$1" = "mingw" ]; then
|
|
||||||
docker exec --env EIO_MONITOR_POLL=1 --env PKG_CONFIG_PATH="/ewpi-64-install/lib/pkgconfig/" \
|
|
||||||
$(cat $HOME/cid) sh -c "mkdir build && meson build $OPTS"
|
|
||||||
elif [ "$1" = "coverity" ]; then
|
|
||||||
docker exec --env EIO_MONITOR_POLL=1 --env CFLAGS="-fdirectives-only" --env CC="gcc" --env CXX="g++"\
|
|
||||||
--env CXXFLAGS="-fdirectives-only" $(cat $HOME/cid) sh -c "mkdir build && meson build $OPTS"
|
|
||||||
else
|
|
||||||
docker exec --env EIO_MONITOR_POLL=1 --env CC="ccache gcc" \
|
|
||||||
--env CXX="ccache g++" --env CFLAGS="-fdirectives-only" --env CXXFLAGS="-fdirectives-only" \
|
|
||||||
--env LD="ld.gold" $(cat $HOME/cid) sh -c "mkdir build && meson build $OPTS"
|
|
||||||
fi
|
|
||||||
elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
|
||||||
# Prepare OSX env for build
|
|
||||||
mkdir -p ~/Library/LaunchAgents
|
|
||||||
ln -sfv /usr/local/opt/d-bus/*.plist ~/Library/LaunchAgents
|
|
||||||
launchctl load ~/Library/LaunchAgents/org.freedesktop.dbus-session.plist
|
|
||||||
export PATH="/usr/local/opt/ccache/libexec:$(brew --prefix gettext)/bin:$PATH"
|
|
||||||
|
|
||||||
export CFLAGS="-I/usr/local/opt/openssl/include -frewrite-includes $CFLAGS"
|
|
||||||
export LDFLAGS="-L/usr/local/opt/openssl/lib $LDFLAGS"
|
|
||||||
LIBFFI_VER=$(brew list --versions libffi|head -n1|cut -d' ' -f2)
|
|
||||||
export CC="ccache gcc"
|
|
||||||
#force using system zlib, which doesn't have a pc file provided because that's the smartest thing possible
|
|
||||||
zlib_vers=$(grep ZLIB_VERSION /usr/include/zlib.h|head -n1|awk '{print $3}'|cut -d'"' -f2)
|
|
||||||
sed -iE "s/REPLACE_THIS/$zlib_vers/" .ci/zlib.pc
|
|
||||||
export PKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig:/usr/local/Cellar/libffi/$LIBFFI_VER/lib/pkgconfig:$(pwd)/.ci"
|
|
||||||
mkdir build && meson build -Dopengl=full -Decore-imf-loaders-disabler=scim,ibus -Dx11=false -Davahi=false -Deeze=false -Dsystemd=false -Dnls=false -Dcocoa=true -Dgstreamer=false -Dbuild-tests=false
|
|
||||||
else # Native Ubuntu Linux Travis builds (non-docker)
|
|
||||||
OPTS=" -Decore-imf-loaders-disabler=scim,ibus"
|
|
||||||
|
|
||||||
if [ "$TRAVIS_CPU_ARCH" = "ppc64le" ]; then
|
|
||||||
OPTS="$OPTS -Dbindings="
|
|
||||||
elif [ "$TRAVIS_CPU_ARCH" = "s390x" ] ; then
|
|
||||||
OPTS="$OPTS -Dbindings= -Delua=false -Dlua-interpreter=lua"
|
|
||||||
fi
|
|
||||||
if [ "$1" = "codecov" ]; then
|
|
||||||
OPTS="$OPTS -Db_coverage=true"
|
|
||||||
fi
|
|
||||||
mkdir build && meson build $OPTS
|
|
||||||
fi
|
|
||||||
travis_time_finish "meson"
|
|
||||||
travis_fold end "meson"
|
|
|
@ -1,16 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
if [ "$1" != "exactness" ] ; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
travis_fold start "exactness"
|
|
||||||
travis_time_start "exactness"
|
|
||||||
if [ "$DISTRO" != "" ] ; then
|
|
||||||
docker exec --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) sh -c 'git -C /exactness-elm-data pull'
|
|
||||||
docker exec --env EIO_MONITOR_POLL=1 --env LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/usr/local/lib64 --env EINA_LOG_LEVELS_GLOB=eina_*:0,ecore*:0,efreet*:0,eldbus:0,elementary:0 $(cat $HOME/cid) exactness -j 20 -b /exactness-elm-data/default-profile -p /exactness-elm-data/default-profile/ci-fedora32-tests.txt
|
|
||||||
fi
|
|
||||||
travis_time_finish "exactness"
|
|
||||||
travis_fold end "exactness"
|
|
|
@ -1,17 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
if [ "$1" != "default" ] ; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
travis_fold start "ninja-benchmark"
|
|
||||||
travis_time_start "ninja-benchmark"
|
|
||||||
if [ "$DISTRO" != "" ] ; then
|
|
||||||
docker exec --env EIO_MONITOR_POLL=1 --env ELM_ENGINE=buffer $(cat $HOME/cid) ninja benchmark -C build
|
|
||||||
elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
|
||||||
export PATH="/usr/local/opt/ccache/libexec:$(brew --prefix gettext)/bin:$PATH"
|
|
||||||
ninja benchmark -C build
|
|
||||||
fi
|
|
||||||
travis_time_finish "ninja-benchmark"
|
|
||||||
travis_fold end "ninja-benchmark"
|
|
|
@ -1,41 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
if [ "$1" = "release-ready" ] || [ "$1" = "mingw" ] || [ "$1" = "coverity" ] || [ "$1" = "options-enabled" ] || [ "$1" = "options-disabled" ] ; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
NUM_TRIES=5
|
|
||||||
|
|
||||||
if [ "$1" = "codecov" ] ; then
|
|
||||||
travis_fold start "codecov"
|
|
||||||
travis_time_start "codecov"
|
|
||||||
for tries in $(seq 1 ${NUM_TRIES}); do
|
|
||||||
export EFL_TEST_ECORE_CON_IPV6=1
|
|
||||||
meson test -t 120 -C build --wrapper dbus-launch && break
|
|
||||||
cat build/meson-logs/testlog-dbus-launch.txt
|
|
||||||
if [ $tries != ${NUM_TRIES} ] ; then echo "tests failed, trying again!" ; fi
|
|
||||||
false
|
|
||||||
done
|
|
||||||
curl -s https://codecov.io/bash | bash -s -
|
|
||||||
travis_time_finish "codecov"
|
|
||||||
travis_fold end "codecov"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
travis_fold start "ninja-test"
|
|
||||||
travis_time_start "ninja-test"
|
|
||||||
if [ "$DISTRO" != "" ] ; then
|
|
||||||
for tries in $(seq 1 ${NUM_TRIES}); do
|
|
||||||
(docker exec --env EINA_LOG_BACKTRACE="0" --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) meson test -t 120 -C build --wrapper dbus-launch ) && break
|
|
||||||
docker exec --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) cat build/meson-logs/testlog-dbus-launch.txt
|
|
||||||
if [ $tries != ${NUM_TRIES} ] ; then echo "tests failed, trying again!" ; fi
|
|
||||||
false
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
ret=$?
|
|
||||||
travis_time_finish "ninja-test"
|
|
||||||
travis_fold end "ninja-test"
|
|
||||||
|
|
||||||
exit $ret
|
|
|
@ -1,22 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
if [ "$1" != "release-ready" ] ; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
travis_fold start "ninja-dist"
|
|
||||||
travis_time_start "ninja-dist"
|
|
||||||
if [ "$DISTRO" != "" ] ; then
|
|
||||||
docker exec --env EIO_MONITOR_POLL=1 --env CC="ccache gcc" \
|
|
||||||
--env CXX="ccache g++" \
|
|
||||||
--env CFLAGS="-fdirectives-only" --env CXXFLAGS="-fdirectives-only" \
|
|
||||||
--env LD="ld.gold" $(cat $HOME/cid) dbus-launch ninja -C build dist || \
|
|
||||||
(sudo cat efl-*/_build/sub/src/test-suite.log; false)
|
|
||||||
elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
|
||||||
export PATH="/usr/local/opt/ccache/libexec:$(brew --prefix gettext)/bin:$PATH"
|
|
||||||
ninja -C build dist
|
|
||||||
fi
|
|
||||||
travis_time_finish "ninja-dist"
|
|
||||||
travis_fold end "ninja-dist"
|
|
|
@ -1,20 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
if [ "$1" = "release-ready" ] || [ "$1" = "coverity" ] ; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
travis_fold start "ninja-install"
|
|
||||||
travis_time_start "ninja-install"
|
|
||||||
if [ "$DISTRO" != "" ] ; then
|
|
||||||
docker exec --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) ninja -C build install
|
|
||||||
elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
|
||||||
export PATH="/usr/local/opt/ccache/libexec:$(brew --prefix gettext)/bin:$PATH"
|
|
||||||
ninja -C build install
|
|
||||||
else
|
|
||||||
sudo ninja -C build install
|
|
||||||
fi
|
|
||||||
travis_time_finish "ninja-install"
|
|
||||||
travis_fold end "ninja-install"
|
|
|
@ -1,31 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
if [ "$1" = "release-ready" ] ; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
travis_fold start "ninja"
|
|
||||||
travis_time_start "ninja"
|
|
||||||
if [ "$DISTRO" != "" ] ; then
|
|
||||||
if [ "$1" = "coverity" ] ; then
|
|
||||||
docker exec --env EIO_MONITOR_POLL=1 --env PATH="/src/cov-analysis-linux64-2019.03/bin:$PATH" $(cat $HOME/cid) sh -c "cov-build --dir cov-int ninja -C build"
|
|
||||||
docker exec --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) sh -c "tar caf efl-$(git rev-parse --short HEAD).xz cov-int"
|
|
||||||
docker exec --env EIO_MONITOR_POLL=1 --env COVERITY_SCAN_TOKEN=$COVERITY_SCAN_TOKEN $(cat $HOME/cid) sh -c ".ci/coverity-upload.sh"
|
|
||||||
else
|
|
||||||
docker exec --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) ninja -C build
|
|
||||||
if [ "$1" = "options-enabled" ]; then # we have efl-one on and want to check it after build
|
|
||||||
docker exec --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) python scripts/test-efl-one.py build
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
|
||||||
latest_brew_python3_bin="$(ls -1d /usr/local/Cellar/python/3.*/bin | sort -n | tail -n1)"
|
|
||||||
export PATH="${latest_brew_python3_bin}${PATH:+:}${PATH}"
|
|
||||||
export PATH="$(brew --prefix gettext)/bin:$PATH"
|
|
||||||
ninja -C build
|
|
||||||
else
|
|
||||||
ninja -C build
|
|
||||||
fi
|
|
||||||
travis_time_finish "ninja"
|
|
||||||
travis_fold end "ninja"
|
|
|
@ -1,17 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
travis_fold start "ccache-setup"
|
|
||||||
travis_time_start "ccache-setup"
|
|
||||||
if [ "$DISTRO" != "" ] ; then
|
|
||||||
docker exec $(cat $HOME/cid) sh -c ".ci/docker-ccache-setup.sh $1"
|
|
||||||
docker exec $(cat $HOME/cid) ccache -pz
|
|
||||||
elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
|
||||||
cp .ci/ccache.conf ~/.ccache
|
|
||||||
sed -iE '/^base_dir/d' ~/.ccache/ccache.conf
|
|
||||||
echo "base_dir = $pwd" >> ~/.ccache/ccache.conf
|
|
||||||
ccache -pz
|
|
||||||
fi
|
|
||||||
travis_time_finish "ccache-setup"
|
|
||||||
travis_fold end "ccache-setup"
|
|
|
@ -1,4 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
wget https://scan.coverity.com/download/linux64 --post-data="token=$COVERITY_SCAN_TOKEN&project=Enlightenment+Foundation+Libraries" -O coverity_tool.tgz
|
|
||||||
tar xzf coverity_tool.tgz
|
|
|
@ -1,8 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
curl --form token=$COVERITY_SCAN_TOKEN \
|
|
||||||
--form email=stefan@datenfreihafen.org \
|
|
||||||
--form file=@efl-$(git rev-parse --short HEAD).xz \
|
|
||||||
--form version=$(git rev-parse --short HEAD) \
|
|
||||||
--form description="Submission from Travis CI" \
|
|
||||||
https://scan.coverity.com/builds?project=Enlightenment+Foundation+Libraries
|
|
|
@ -1,20 +0,0 @@
|
||||||
[binaries]
|
|
||||||
c = ['ccache', 'x86_64-w64-mingw32-gcc']
|
|
||||||
cpp = ['ccache', 'x86_64-w64-mingw32-g++']
|
|
||||||
ar = 'x86_64-w64-mingw32-ar'
|
|
||||||
ranlib = 'x86_64-w64-mingw32-ranlib'
|
|
||||||
strip = 'x86_64-w64-mingw32-strip'
|
|
||||||
windres = 'x86_64-w64-mingw32-windres'
|
|
||||||
pkgconfig = 'x86_64-w64-mingw32-pkg-config'
|
|
||||||
|
|
||||||
[host_machine]
|
|
||||||
system = 'windows'
|
|
||||||
cpu_family = 'x86_64'
|
|
||||||
cpu = 'x86_64'
|
|
||||||
endian = 'little'
|
|
||||||
|
|
||||||
[properties]
|
|
||||||
c_args = ['-D_WIN32_WINNT=0x0601', '-I/ewpi-64-install/include', '-O2', '-pipe', '-march=x86-64']
|
|
||||||
c_link_args = ['-L/ewpi-64-install/lib', '-s']
|
|
||||||
cpp_args = ['-D_WIN32_WINNT=0x0601', '-I/ewpi-64-install/include', '-O2', '-pipe', '-march=x86-64']
|
|
||||||
cpp_link_args = ['-L/ewpi-64-install/lib', '-s']
|
|
|
@ -1,8 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
CI_BUILD_TYPE="$1"
|
|
||||||
|
|
||||||
cp .ci/ccache.conf ~/.ccache
|
|
||||||
|
|
||||||
sed -iE '/^base_dir/d' ~/.ccache/ccache.conf
|
|
||||||
echo "base_dir = $pwd" >> ~/.ccache/ccache.conf
|
|
|
@ -1,13 +0,0 @@
|
||||||
project(
|
|
||||||
'efl-example', 'c',
|
|
||||||
version : '0.0.1',
|
|
||||||
default_options: [ 'c_std=gnu99', 'warning_level=2' ],
|
|
||||||
meson_version : '>= 0.38.0')
|
|
||||||
|
|
||||||
eina = dependency('eina', version : '>=1.20.99')
|
|
||||||
efl = dependency('efl-ui', version : '>=1.20.99')
|
|
||||||
elm = dependency('elementary', version : '>=1.20.99')
|
|
||||||
|
|
||||||
inc = include_directories('.')
|
|
||||||
subdir('src')
|
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
#define EFL_BETA_API_SUPPORT 1
|
|
||||||
#define EFL_NOLEGACY_API_SUPPORT
|
|
||||||
#include <Efl_Ui.h>
|
|
||||||
|
|
||||||
|
|
||||||
EAPI_MAIN void
|
|
||||||
efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
EFL_MAIN()
|
|
|
@ -1,12 +0,0 @@
|
||||||
src = files([
|
|
||||||
'main.c',
|
|
||||||
])
|
|
||||||
|
|
||||||
deps = [eina, efl, elm]
|
|
||||||
|
|
||||||
executable('efl_example', src,
|
|
||||||
dependencies : deps,
|
|
||||||
include_directories : inc,
|
|
||||||
install : true
|
|
||||||
)
|
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
travis_fold start "bionic-deps"
|
|
||||||
travis_time_start "bionic-deps"
|
|
||||||
|
|
||||||
sudo apt-get update -y
|
|
||||||
sudo apt-get install -y build-essential autoconf automake autopoint doxygen check libharfbuzz-dev libpng-dev libudev-dev libwebp-dev libssl-dev libfribidi-dev libcogl-gles2-dev libgif-dev libtiff5-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libdbus-1-dev libmount-dev libblkid-dev libpulse-dev libxrandr-dev libxtst-dev libxcursor-dev libxcomposite-dev libxinerama-dev libxkbfile-dev libbullet-dev libsndfile1-dev libraw-dev libspectre-dev libpoppler-cpp-dev libpam0g-dev liblz4-dev faenza-icon-theme gettext git imagemagick libasound2-dev libbluetooth-dev libfontconfig1-dev libfreetype6-dev libibus-1.0-dev libiconv-hook-dev libjpeg-dev libjpeg-turbo8-dev libpoppler-dev libpoppler-private-dev libproxy-dev librsvg2-dev libscim-dev libsystemd-dev libtool libudisks2-dev libunibreak-dev libxcb-keysyms1-dev libxss-dev linux-tools-common libcurl4-openssl-dev systemd ccache git binutils-gold python3-pip ninja-build dbus-x11 libavahi-client-dev python3-setuptools libopenjp2-7-dev libc6-dev libpcre3-dev
|
|
||||||
# s390x on Ubuntu Bionic on Travis does not have a luajit package and fails install, use lua5.1
|
|
||||||
if [ "$TRAVIS_CPU_ARCH" = "s390x" ] ; then
|
|
||||||
sudo apt-get install -y liblua5.1-dev
|
|
||||||
else
|
|
||||||
sudo apt-get install -y luajit libluajit-5.1-dev
|
|
||||||
fi
|
|
||||||
sudo pip3 install meson==0.54.3
|
|
||||||
|
|
||||||
travis_time_finish "bionic-deps"
|
|
||||||
travis_fold end "bionic-deps"
|
|
13
.ci/zlib.pc
13
.ci/zlib.pc
|
@ -1,13 +0,0 @@
|
||||||
prefix=/usr
|
|
||||||
exec_prefix=${prefix}
|
|
||||||
libdir=/usr/lib64
|
|
||||||
sharedlibdir=${libdir}
|
|
||||||
includedir=/usr/include
|
|
||||||
|
|
||||||
Name: zlib
|
|
||||||
Description: zlib compression library
|
|
||||||
Version: REPLACE_THIS
|
|
||||||
|
|
||||||
Requires:
|
|
||||||
Libs: -L${libdir} -L${sharedlibdir} -lz
|
|
||||||
Cflags: -I${includedir}
|
|
|
@ -1 +0,0 @@
|
||||||
geninfo_auto_base=1
|
|
|
@ -1,7 +0,0 @@
|
||||||
extraction:
|
|
||||||
python:
|
|
||||||
python_setup:
|
|
||||||
version: 3
|
|
||||||
queries:
|
|
||||||
-
|
|
||||||
exclude: cpp/fixme-comment
|
|
153
.travis.yml
153
.travis.yml
|
@ -1,153 +0,0 @@
|
||||||
version: ~> 1.0
|
|
||||||
|
|
||||||
language: c
|
|
||||||
cache:
|
|
||||||
directories:
|
|
||||||
- $HOME/cachedir
|
|
||||||
- $HOME/.ccache
|
|
||||||
dist: bionic
|
|
||||||
|
|
||||||
osx_image: xcode11.3
|
|
||||||
|
|
||||||
addons:
|
|
||||||
homebrew:
|
|
||||||
packages:
|
|
||||||
- gettext
|
|
||||||
- check
|
|
||||||
- bullet
|
|
||||||
- dbus
|
|
||||||
- fontconfig
|
|
||||||
- freetype
|
|
||||||
- fribidi
|
|
||||||
- gst-plugins-good
|
|
||||||
- gstreamer
|
|
||||||
- luajit
|
|
||||||
- openssl
|
|
||||||
- webp
|
|
||||||
- libsndfile
|
|
||||||
- glib
|
|
||||||
- libspectre
|
|
||||||
- libraw
|
|
||||||
- librsvg
|
|
||||||
- poppler
|
|
||||||
- lz4
|
|
||||||
- pulseaudio
|
|
||||||
- ccache
|
|
||||||
- ninja
|
|
||||||
- python3
|
|
||||||
- libffi
|
|
||||||
update: true
|
|
||||||
|
|
||||||
env:
|
|
||||||
global:
|
|
||||||
- EIO_MONITOR_POLL=1
|
|
||||||
- CC="ccache gcc"
|
|
||||||
- CXX="ccache g++"
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
include:
|
|
||||||
- os: linux
|
|
||||||
env: DISTRO=Fedora32-mingw CI_BUILD_TYPE=mingw
|
|
||||||
- os: linux
|
|
||||||
env: DISTRO=Fedora32 CI_BUILD_TYPE=options-enabled
|
|
||||||
- os: linux
|
|
||||||
env: DISTRO=Fedora32 CI_BUILD_TYPE=options-disabled
|
|
||||||
- os: linux
|
|
||||||
env: DISTRO=Fedora32 CI_BUILD_TYPE=wayland
|
|
||||||
- os: linux
|
|
||||||
env: DISTRO=Fedora32 CI_BUILD_TYPE=default
|
|
||||||
- os: linux
|
|
||||||
if: type = cron
|
|
||||||
env: DISTRO=Fedora32 CI_BUILD_TYPE=release-ready
|
|
||||||
- os: linux
|
|
||||||
if: type = cron
|
|
||||||
env: DISTRO=Ubuntu2004
|
|
||||||
- os: linux
|
|
||||||
if: type = cron
|
|
||||||
env: DISTRO=Ubuntu1910
|
|
||||||
- os: linux
|
|
||||||
if: type = cron
|
|
||||||
env: DISTRO=Debian103
|
|
||||||
- os: linux
|
|
||||||
if: type = cron
|
|
||||||
env: DISTRO=Fedora31 CI_BUILD_TYPE=coverity
|
|
||||||
- os: linux
|
|
||||||
if: type = cron
|
|
||||||
env: DISTRO=Fedora32 CI_BUILD_TYPE=asan
|
|
||||||
- os: linux
|
|
||||||
if: type = cron
|
|
||||||
env: CI_BUILD_TYPE=codecov
|
|
||||||
- os: linux
|
|
||||||
if: type = cron
|
|
||||||
arch: arm64
|
|
||||||
env: CI_BUILD_TYPE=default
|
|
||||||
- os: linux
|
|
||||||
if: type = cron
|
|
||||||
arch: ppc64le
|
|
||||||
env: CI_BUILD_TYPE=no-bindings
|
|
||||||
- os: linux
|
|
||||||
if: type = cron
|
|
||||||
arch: s390x
|
|
||||||
env: CI_BUILD_TYPE=no-bindings
|
|
||||||
|
|
||||||
services:
|
|
||||||
- docker
|
|
||||||
|
|
||||||
before_install:
|
|
||||||
- export -f travis_nanoseconds
|
|
||||||
- export -f travis_fold
|
|
||||||
- export -f travis_time_start
|
|
||||||
- export -f travis_time_finish
|
|
||||||
- |
|
|
||||||
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
|
||||||
rm -rf $HOME/Library/Caches/Homebrew
|
|
||||||
rm -rf $HOME/cachedir/Homebrew/Homebrew
|
|
||||||
mv $HOME/cachedir/Homebrew $HOME/Library/Caches/Homebrew
|
|
||||||
pip3 install meson
|
|
||||||
fi
|
|
||||||
|
|
||||||
before_script:
|
|
||||||
- |
|
|
||||||
if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ "$DISTRO" != "" ]]; then
|
|
||||||
docker pull stefanschmidt1/ci-support-files:$DISTRO
|
|
||||||
docker version
|
|
||||||
docker run --cap-add SYS_PTRACE --cidfile $HOME/cid -t -d -v `pwd`:/src -v $HOME/.ccache:/root/.ccache -w /src stefanschmidt1/ci-support-files:$DISTRO bash
|
|
||||||
fi
|
|
||||||
- |
|
|
||||||
if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ "$DISTRO" == "" ]]; then
|
|
||||||
.ci/ubuntu-bionic-install-deps.sh
|
|
||||||
fi
|
|
||||||
- .ci/ci-ccache-stats.sh
|
|
||||||
|
|
||||||
script:
|
|
||||||
- .ci/ci-configure.sh "$CI_BUILD_TYPE"
|
|
||||||
- .ci/ci-setup-ccache.sh "$CI_BUILD_TYPE"
|
|
||||||
- .ci/ci-make.sh "$CI_BUILD_TYPE"
|
|
||||||
- .ci/ci-make-install.sh "$CI_BUILD_TYPE"
|
|
||||||
- .ci/ci-make-benchmark.sh "$CI_BUILD_TYPE"
|
|
||||||
- .ci/ci-make-check.sh "$CI_BUILD_TYPE"
|
|
||||||
- .ci/ci-exactness.sh "$CI_BUILD_TYPE"
|
|
||||||
- .ci/ci-make-distcheck.sh "$CI_BUILD_TYPE"
|
|
||||||
- .ci/ci-build-test.sh "$CI_BUILD_TYPE"
|
|
||||||
|
|
||||||
before_cache:
|
|
||||||
- .ci/ci-ccache-stats.sh
|
|
||||||
- |
|
|
||||||
mkdir -p $HOME/cachedir
|
|
||||||
if [[ "$TRAVIS_OS_NAME" == "linux" ]] ; then
|
|
||||||
sudo chown travis:travis $HOME/.ccache
|
|
||||||
else
|
|
||||||
mv $HOME/Library/Caches/Homebrew $HOME/cachedir/Homebrew
|
|
||||||
fi
|
|
||||||
|
|
||||||
notifications:
|
|
||||||
irc:
|
|
||||||
channels:
|
|
||||||
- "chat.freenode.net#edevelop"
|
|
||||||
on_success: change
|
|
||||||
on_failure: always
|
|
||||||
template:
|
|
||||||
- "TravisCI build %{build_number} in branch %{branch}: %{result} - %{message} (%{elapsed_time})"
|
|
||||||
- "Commit: %{commit_subject} (%{commit}) from %{author}"
|
|
||||||
- "Change view : %{compare_url}"
|
|
||||||
- "Build details : %{build_url}"
|
|
|
@ -1,10 +0,0 @@
|
||||||
Gesture Layer 2 (all the icons in data/elementary/images/g_layer):
|
|
||||||
Illustrations provided by GestureWorks® (www.gestureworks.com)
|
|
||||||
Creative Commons Attribution Sharealike license v 3.0.
|
|
||||||
http://gestureworks.com/
|
|
||||||
http://gestureworks.com/icons-fonts
|
|
||||||
http://creativecommons.org/licenses/by-sa/3.0/us/
|
|
||||||
|
|
||||||
EFL Bluish-X icons theme (all the icons in data/elementary/themes/fdo):
|
|
||||||
GNU General Public License v3
|
|
||||||
see the README in data/elementary/themes/fdo for more info
|
|
59
INSTALL
59
INSTALL
|
@ -1,59 +0,0 @@
|
||||||
** COMPILING and INSTALLING **
|
|
||||||
------------------------------
|
|
||||||
|
|
||||||
Meson is the build system used for this project. For more information please
|
|
||||||
see:
|
|
||||||
|
|
||||||
http://mesonbuild.com
|
|
||||||
|
|
||||||
----
|
|
||||||
|
|
||||||
Normal compilation in /usr/local:
|
|
||||||
|
|
||||||
meson . build
|
|
||||||
ninja -C build
|
|
||||||
sudo ninja -C build install
|
|
||||||
|
|
||||||
For meson build generic options:
|
|
||||||
|
|
||||||
meson --help
|
|
||||||
|
|
||||||
For a list of project specific options supported:
|
|
||||||
|
|
||||||
cat meson_options.txt
|
|
||||||
|
|
||||||
To set 1 or more project specific options:
|
|
||||||
|
|
||||||
meson --prefix=/path/to -Doption=value [-Dother=value2] [...] . build
|
|
||||||
|
|
||||||
To display current configuration:
|
|
||||||
|
|
||||||
meson configure build
|
|
||||||
|
|
||||||
The above will only work after at least the following is done:
|
|
||||||
|
|
||||||
meson . build
|
|
||||||
|
|
||||||
** QUICK AND DIRTY HELP **
|
|
||||||
--------------------------
|
|
||||||
|
|
||||||
How clean out the build and config and start fresh:
|
|
||||||
|
|
||||||
rm -rf build
|
|
||||||
|
|
||||||
How to make a dist tarball and check its build:
|
|
||||||
(must do it from git tree clone and commit all changes to git first)
|
|
||||||
|
|
||||||
ninja -C build dist
|
|
||||||
|
|
||||||
How to change prefix:
|
|
||||||
|
|
||||||
meson --prefix=/path/to/prefix . build
|
|
||||||
|
|
||||||
How to install in a specific destination directory for packaging:
|
|
||||||
|
|
||||||
DESTDIR=/path/to/destdir ninja -C build install
|
|
||||||
|
|
||||||
How to build with verbose output (full commands run):
|
|
||||||
|
|
||||||
ninja -C build -v
|
|
|
@ -1,10 +1,12 @@
|
||||||
EFL
|
![EFL](/data/readme/efl.png)
|
||||||
===
|
# EFL
|
||||||
|
|
||||||
******************************************************************************
|
-----
|
||||||
FOR ANY ISSUES PLEASE EMAIL:
|
|
||||||
enlightenment-devel@lists.sourceforge.net
|
*Please report bugs/issues at*
|
||||||
******************************************************************************
|
[git.enlightenment.org](https://git.enlightenment.org/enlightenment/efl/issues)
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
EFL is a collection of libraries for handling many common tasks a
|
EFL is a collection of libraries for handling many common tasks a
|
||||||
developer may have such as data structures, communication, rendering,
|
developer may have such as data structures, communication, rendering,
|
||||||
|
@ -24,23 +26,21 @@ Config files installed to help developers build against EFL.
|
||||||
|
|
||||||
For more documentation please see:
|
For more documentation please see:
|
||||||
|
|
||||||
https://www.enlightenment.org/docs
|
[www.enlightenment.org/doc](https://www.enlightenment.org/docs)
|
||||||
|
|
||||||
PLATFORMS
|
## Platforms
|
||||||
---------
|
|
||||||
|
|
||||||
EFL is primarily developerd on Linux (GNU/Linux) and should work on
|
EFL is primarily developed on Linux (GNU/Linux) and should work on
|
||||||
most distributions as long as dependencies are provided. It has been
|
most distributions as long as dependencies are provided. It has been
|
||||||
compiled and run also on Windows (using MSYS2 + mingw-w64 - please see
|
compiled and run also on Windows (using MSYS2 + mingw-w64 - please see
|
||||||
https://phab.enlightenment.org/w/windows/), Mac OS X, FreeBSD and
|
[Phabricator windows docs](https://phab.enlightenment.org/w/windows)),
|
||||||
NetBSD.
|
Mac OS X, FreeBSD and NetBSD.
|
||||||
|
|
||||||
COMPONENTS
|
## Components
|
||||||
----------
|
|
||||||
|
|
||||||
**Ecore:**
|
**Ecore:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This is the core main-loop, system events and execution layer. This
|
This is the core main-loop, system events and execution layer. This
|
||||||
handles running the main loop, integrating with external data and
|
handles running the main loop, integrating with external data and
|
||||||
|
@ -48,31 +48,25 @@ timing sources (the system clock, file descriptors, system signals),
|
||||||
and producing an event queue, walking that queue and dispatching
|
and producing an event queue, walking that queue and dispatching
|
||||||
events to appropriate callbacks.
|
events to appropriate callbacks.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Ecore Audio:**
|
**Ecore Audio:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This library provides an API for audio playback and recording. It uses
|
This library provides an API for audio playback and recording. It uses
|
||||||
pulse audio underneath to handle mixing and policies. The API for this
|
pulse audio underneath to handle mixing and policies. The API for this
|
||||||
should not be considered stable right now because it relies on EO and
|
should not be considered stable right now because it relies on EO and
|
||||||
EO is not considered finalized yet.
|
EO is not considered finalized yet.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Ecore Cocoa:**
|
**Ecore Cocoa:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This provides wrappers/abstractions around Max OS-X Cocoa APIs to help
|
This provides wrappers/abstractions around Max OS-X Cocoa APIs to help
|
||||||
Mac porting.
|
Mac porting.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Ecore Con:**
|
**Ecore Con:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This provides a completely event-based TCP/UDP and Unix domain socket
|
This provides a completely event-based TCP/UDP and Unix domain socket
|
||||||
API that integrates with the main-loop. This means no blocking to send
|
API that integrates with the main-loop. This means no blocking to send
|
||||||
|
@ -83,11 +77,9 @@ verification, CURL wrapping for HTTP connection usage (GETs, POSTs
|
||||||
etc.), asynchronous DNS lookups and provides the ability to also be a
|
etc.), asynchronous DNS lookups and provides the ability to also be a
|
||||||
server, not just a client, with the same event-based API.
|
server, not just a client, with the same event-based API.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Ecore Evas:**
|
**Ecore Evas:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This acts as glue between the display target (X11, Wayland,
|
This acts as glue between the display target (X11, Wayland,
|
||||||
Frame buffer, Cocoa on OSX, Win32 etc.) and Evas. It creates/provides a
|
Frame buffer, Cocoa on OSX, Win32 etc.) and Evas. It creates/provides a
|
||||||
|
@ -96,69 +88,55 @@ input events (Keyboard, Mouse, Multi-touch) into Evas, which then
|
||||||
selects the target object and calls the callbacks. It also provides
|
selects the target object and calls the callbacks. It also provides
|
||||||
wrappers/glue for manipulating the Window/Surface.
|
wrappers/glue for manipulating the Window/Surface.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Ecore Fb:**
|
**Ecore Fb:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This provides virtual terminal allocation, access and handling,
|
This provides virtual terminal allocation, access and handling,
|
||||||
frame buffer information, raw input handling for keyboard, mouse and
|
frame buffer information, raw input handling for keyboard, mouse and
|
||||||
touch (via tslib).
|
touch (via tslib).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Ecore File:**
|
**Ecore File:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This provides file access convenience APIs for doing simple file
|
This provides file access convenience APIs for doing simple file
|
||||||
operations like renames, copies, listing directories and more. It also
|
operations like renames, copies, listing directories and more. It also
|
||||||
supports file change monitoring and URL downloads.
|
supports file change monitoring and URL downloads.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Ecore IMF:**
|
**Ecore IMF:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This is an input method abstraction framework to allow EFL to talk to
|
This is an input method abstraction framework to allow EFL to talk to
|
||||||
things like SCIM, IBus, Wayland and XIM. This allows for complex text
|
things like SCIM, IBus, Wayland and XIM. This allows for complex text
|
||||||
entry in languages such as Chinese, Japanese and Korean.
|
entry in languages such as Chinese, Japanese and Korean.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Ecore IMF Evas:**
|
**Ecore IMF Evas:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This library glues Input method support from Ecore IMF and Evas
|
This library glues Input method support from Ecore IMF and Evas
|
||||||
together.
|
together.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Ecore Input:**
|
**Ecore Input:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This acts as a generic input layer where multiple display systems can
|
This acts as a generic input layer where multiple display systems can
|
||||||
post events in the same format to the event queue.
|
post events in the same format to the event queue.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Ecore Input Evas:**
|
**Ecore Input Evas:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This Routes events from Ecore Input into a given Evas canvas which
|
This Routes events from Ecore Input into a given Evas canvas which
|
||||||
will then route the event further to the destination object and
|
will then route the event further to the destination object and
|
||||||
callbacks.
|
callbacks.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Ecore IPC:**
|
**Ecore IPC:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This acts as a layer on top of Ecore Con which handles entire IPC
|
This acts as a layer on top of Ecore Con which handles entire IPC
|
||||||
message packets, dealing with header delta compression and
|
message packets, dealing with header delta compression and
|
||||||
|
@ -167,59 +145,39 @@ go as a single IPC message, regardless of payload data size. The
|
||||||
entire API is event based almost exactly like Ecore Con and thus it
|
entire API is event based almost exactly like Ecore Con and thus it
|
||||||
supports all the transport layers Ecore Con supports.
|
supports all the transport layers Ecore Con supports.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Ecore SDL:**
|
**Ecore SDL:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This acts as a wrapper/glue around SDL to handle SDL Windows as well
|
This acts as a wrapper/glue around SDL to handle SDL Windows as well
|
||||||
as input events from SDL and tie them to the Ecore main-loop and event
|
as input events from SDL and tie them to the Ecore main-loop and event
|
||||||
queue.
|
queue.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Ecore Wayland:**
|
**Ecore Wayland:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This is a glue/wrapper library to interface EFL to Wayland libraries
|
This is a glue/wrapper library to interface EFL to Wayland libraries
|
||||||
to tie them into the Ecore main-loop and event queue.
|
to tie them into the Ecore main-loop and event queue.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Ecore Win32:**
|
**Ecore Win32:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This acts as glue/wrapper around Windows Win32 APIs to tie them into
|
This acts as glue/wrapper around Windows Win32 APIs to tie them into
|
||||||
the Ecore main-loop and event queue.
|
the Ecore main-loop and event queue.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Ecore WinCE:**
|
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
|
||||||
|
|
||||||
This acts as glue/wrapper around Windows CE APIs to tie them into the
|
|
||||||
Ecore main-loop and event queue.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Ecore X:**
|
**Ecore X:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This is a library to wrap/deal with Xlib make dealing with X11 less painful
|
This is a library to wrap/deal with Xlib make dealing with X11 less painful
|
||||||
and less footwork as well as being glue to tie these into the Ecore main-loop
|
and less footwork as well as being glue to tie these into the Ecore main-loop
|
||||||
and event queue.
|
and event queue.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Edje:**
|
**Edje:**
|
||||||
|
|
||||||
//BSD 2-Clause license// (except the epp binary which is GPLv2)
|
*BSD 2-Clause license* (except the epp binary which is GPLv2)
|
||||||
|
|
||||||
This is a graphics event, input, theme, animation and theme
|
This is a graphics event, input, theme, animation and theme
|
||||||
abstraction library used to place many UI/UX elements into data files
|
abstraction library used to place many UI/UX elements into data files
|
||||||
|
@ -231,11 +189,9 @@ data files managed by Eet). These "edj" files are fully portable and
|
||||||
can work on any OS/Architecture just like a JPEG or PNG might be
|
can work on any OS/Architecture just like a JPEG or PNG might be
|
||||||
portable.
|
portable.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Eet:**
|
**Eet:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This library is a data storage, encoding and decoding library
|
This library is a data storage, encoding and decoding library
|
||||||
designed to be extremely compact, fast and easy to use. It can take
|
designed to be extremely compact, fast and easy to use. It can take
|
||||||
|
@ -250,29 +206,23 @@ Terminology. It supports encryption of data too via SSL, signing of
|
||||||
files, as well as various compression techniques. It also supports
|
files, as well as various compression techniques. It also supports
|
||||||
encoding and decoding of image data in lossless or lossy form.
|
encoding and decoding of image data in lossless or lossy form.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Eeze:**
|
**Eeze:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This library acts as an abstraction to discovering hardware interfaces
|
This library acts as an abstraction to discovering hardware interfaces
|
||||||
for sensors as well as removable media and much more.
|
for sensors as well as removable media and much more.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**EFL:**
|
**EFL:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This is just some core common header data like a common version number
|
This is just some core common header data like a common version number
|
||||||
for EFL and how to expose the EO API.
|
for EFL and how to expose the EO API.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Efreet:**
|
**Efreet:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This library provides code for handling Freedesktop.org standards such
|
This library provides code for handling Freedesktop.org standards such
|
||||||
as .desktop files, XDG Menus, Icon search paths and more. It provides
|
as .desktop files, XDG Menus, Icon search paths and more. It provides
|
||||||
|
@ -280,11 +230,9 @@ a central daemon to handle monitoring for changes that the library
|
||||||
talks to, and the daemon handles updating local cache files the
|
talks to, and the daemon handles updating local cache files the
|
||||||
library reads.
|
library reads.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Eina:**
|
**Eina:**
|
||||||
|
|
||||||
//LGPL v2 license//
|
*LGPL v2 license*
|
||||||
|
|
||||||
This library provides low-level routines for common things like linked
|
This library provides low-level routines for common things like linked
|
||||||
lists, hash tables, growable arrays, basic string buffers, shared
|
lists, hash tables, growable arrays, basic string buffers, shared
|
||||||
|
@ -293,29 +241,23 @@ memory pools, copy-on-write segments, iterators, matrices, general
|
||||||
data models, red/black trees, quad-trees, a simple SAX XML parser and
|
data models, red/black trees, quad-trees, a simple SAX XML parser and
|
||||||
more.
|
more.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**EIO:**
|
**EIO:**
|
||||||
|
|
||||||
//LGPL v2 license//
|
*LGPL v2 license*
|
||||||
|
|
||||||
This is an asynchronous I/O library for doing disk I/O without blocking.
|
This is an asynchronous I/O library for doing disk I/O without blocking.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**ElDBus:**
|
**ElDBus:**
|
||||||
|
|
||||||
//LGPL v2 license//
|
*LGPL v2 license*
|
||||||
|
|
||||||
This is a DBus access library to allow you to create DBus services as
|
This is a DBus access library to allow you to create DBus services as
|
||||||
well as clients. This glues in DBus into the main-loop so all access is
|
well as clients. This glues in DBus into the main-loop so all access is
|
||||||
asynchronous.
|
asynchronous.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Embryo:**
|
**Embryo:**
|
||||||
|
|
||||||
//Small license (same as ZLib license)//
|
*Small license (same as ZLib license)*
|
||||||
|
|
||||||
This is a small C-like language compiler and byte-code interpreter
|
This is a small C-like language compiler and byte-code interpreter
|
||||||
library. This is used for scripting in Edje. The code is based on
|
library. This is used for scripting in Edje. The code is based on
|
||||||
|
@ -323,11 +265,9 @@ original source from the Pawn/Small Language but has been made
|
||||||
portable (endianness issues fixed) and 64bit issues fixed, with the
|
portable (endianness issues fixed) and 64bit issues fixed, with the
|
||||||
runtime library being refactored to be extremely small.
|
runtime library being refactored to be extremely small.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Emotion:**
|
**Emotion:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This is a wrapper around Gstreamer 1.x pluggable decoder libraries
|
This is a wrapper around Gstreamer 1.x pluggable decoder libraries
|
||||||
This glues in the decoder library, and its output into a smart Evas object
|
This glues in the decoder library, and its output into a smart Evas object
|
||||||
|
@ -335,11 +275,9 @@ that will display the playback for you as the video plays, as well as
|
||||||
providing higher level controls to seek, play, pause and query the stream
|
providing higher level controls to seek, play, pause and query the stream
|
||||||
regardless of the back-end used.
|
regardless of the back-end used.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**EO:**
|
**EO:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This is a core object system API that EFL 1.8 and on depend on. The
|
This is a core object system API that EFL 1.8 and on depend on. The
|
||||||
API is not finalized, so do not depend on it yet in EFL 1.8, but
|
API is not finalized, so do not depend on it yet in EFL 1.8, but
|
||||||
|
@ -350,43 +288,35 @@ strong and weak references, auto-deletion of child objects, unifies
|
||||||
callback handling with a single path, and also abstracts object
|
callback handling with a single path, and also abstracts object
|
||||||
pointers to be indirect table lookups for increased safety at runtime.
|
pointers to be indirect table lookups for increased safety at runtime.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**EPhysics:**
|
**EPhysics:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This library provides a wrapper around the Bullet physics library,
|
This library provides a wrapper around the Bullet physics library,
|
||||||
allowing for it to be linked directly with Evas objects and control
|
allowing for it to be linked directly with Evas objects and control
|
||||||
their behavior as if they were real physical objects. This is now
|
their behavior as if they were real physical objects. This is now
|
||||||
disabled by default as it's rarely if ever used by anything.
|
disabled by default as it's rarely if ever used by anything.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Ethumb:**
|
**Ethumb:**
|
||||||
|
|
||||||
//LGPL v2 license//
|
*LGPL v2 license*
|
||||||
|
|
||||||
This library provides core API for a thumbnailing daemon as well as
|
This library provides core API for a thumbnailing daemon as well as
|
||||||
the thumbnail daemon itself. Ethumb Client talks with Ethumb to pass
|
the thumbnail daemon itself. Ethumb Client talks with Ethumb to pass
|
||||||
off thumbnail generation to a central location to be done
|
off thumbnail generation to a central location to be done
|
||||||
asynchronously.
|
asynchronously.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Ethumb Client:**
|
**Ethumb Client:**
|
||||||
|
|
||||||
//LGPL v2 license//
|
*LGPL v2 license*
|
||||||
|
|
||||||
This is the client-side part of Ethumb that provides an API for
|
This is the client-side part of Ethumb that provides an API for
|
||||||
clients to request the Ethumb thumbnailer to generate or find cached
|
clients to request the Ethumb thumbnailer to generate or find cached
|
||||||
thumbnails of files.
|
thumbnails of files.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Evas:**
|
**Evas:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This is the core rendering and scene graph abstraction library for
|
This is the core rendering and scene graph abstraction library for
|
||||||
EFL. It manages a stateful 2D scene graph that defines the entire
|
EFL. It manages a stateful 2D scene graph that defines the entire
|
||||||
|
@ -395,124 +325,108 @@ display systems like X11, Windows, Wayland, Frame-buffer etc. and via
|
||||||
many rendering APIs like OpenGL, OpenGL-ES 2, and pure software
|
many rendering APIs like OpenGL, OpenGL-ES 2, and pure software
|
||||||
implementations that are fast and accurate.
|
implementations that are fast and accurate.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Evil:**
|
**Evil:**
|
||||||
|
|
||||||
//BSD 2-Clause license//
|
*BSD 2-Clause license*
|
||||||
|
|
||||||
This library acts as a porting library for Windows to provide missing
|
This library acts as a porting library for Windows to provide missing
|
||||||
libc calls not in Mingw32 that EFL needs.
|
libc calls not in Mingw32 that EFL needs. It is used internally and
|
||||||
|
no symbol is public.
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
**Heif:**
|
## Requirements
|
||||||
|
|
||||||
//LGPL v3 license//
|
|
||||||
|
|
||||||
The license doesnt affect efl or apps using efl, but gpl3 or lgpl3
|
|
||||||
affects the entire os requiring any gpl/lgpl3 component be
|
|
||||||
user-replacable.
|
|
||||||
The end user must be able to modify the libheif code and still be
|
|
||||||
able to use the efl.
|
|
||||||
|
|
||||||
|
|
||||||
COMPILING AND INSTALLING
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
For sample configuration options please look in the ./confs/ directory
|
|
||||||
for scripts that pass in commonly used options.
|
|
||||||
|
|
||||||
See the INSTALL file: https://git.enlightenment.org/core/efl.git/tree/INSTALL
|
|
||||||
|
|
||||||
|
|
||||||
REQUIREMENTS
|
|
||||||
------------
|
|
||||||
|
|
||||||
EFL requires a C and C++ compiler by default. C++ exists mostly to interface
|
EFL requires a C and C++ compiler by default. C++ exists mostly to interface
|
||||||
to C++ libraries like Bullet and our C++ bindings.
|
to C++ libraries like Bullet and our C++ bindings.
|
||||||
|
|
||||||
Required by default:
|
Required by default:
|
||||||
|
|
||||||
* libpng
|
* libpng
|
||||||
* libjpeg
|
* libjpeg
|
||||||
* openjpeg2
|
* openjpeg2
|
||||||
* gstreamer (Ensure all codecs you want are installed.)
|
* gstreamer (Ensure all codecs you want are installed.)
|
||||||
* zlib
|
* zlib
|
||||||
* luajit (lua 5.1 or 5.2 support optional)
|
* luajit (lua 5.1 or 5.2 support optional)
|
||||||
* libtiff
|
* libtiff
|
||||||
* openssl
|
* openssl
|
||||||
* curl
|
* curl
|
||||||
* dbus
|
* dbus
|
||||||
* libc
|
* libc
|
||||||
* fontconfig
|
* fontconfig
|
||||||
* freetype2
|
* freetype2
|
||||||
* fribidi
|
* fribidi
|
||||||
* harfbuzz
|
* harfbuzz
|
||||||
* libpulse
|
* libpulse
|
||||||
* libsndfile
|
* libsndfile
|
||||||
* libx11
|
* libx11
|
||||||
* libxau
|
* libxau
|
||||||
* libxcomposite
|
* libxcomposite
|
||||||
* libxdamage
|
* libxdamage
|
||||||
* libxdmcp
|
* libxdmcp
|
||||||
* libxext
|
* libxext
|
||||||
* libxfixes
|
* libxfixes
|
||||||
* libxinerama
|
* libxinerama
|
||||||
* libxrandr
|
* libxrandr
|
||||||
* libxrender
|
* libxrender
|
||||||
* libxss
|
* libxss
|
||||||
* libxtst
|
* libxtst
|
||||||
* libxcursor
|
* libxcursor
|
||||||
* libxi (2.2 or newer)
|
* libxi (2.2 or newer)
|
||||||
* opengl(mesa etc.) (opengl/glx/full or opengl-es2/egl. full opengl only on osx - must be explicitly specified to be full to have support)
|
* opengl(mesa etc.) (opengl/glx/full or opengl-es2/egl. full opengl only on osx - must be explicitly specified to be full to have support)
|
||||||
* giflib/libgif
|
* giflib/libgif
|
||||||
* util-linux (limbount + libblkid)
|
* util-linux (limbount + libblkid)
|
||||||
* systemd / libudev
|
* systemd / libudev
|
||||||
* poppler / poppler-cpp
|
* poppler / poppler-cpp
|
||||||
* libraw
|
* libraw
|
||||||
* libspectre
|
* libspectre
|
||||||
* librsvg
|
* librsvg
|
||||||
* openmp (clang needs libomp, while gcc uses libgomp)
|
* openmp (clang needs libomp, while gcc uses libgomp)
|
||||||
* libwebp
|
* libwebp
|
||||||
|
|
||||||
Wayland support:
|
|
||||||
|
### Wayland support
|
||||||
|
|
||||||
You may also want wayland support when on Linux. This enables support
|
You may also want wayland support when on Linux. This enables support
|
||||||
for EFL to trget wayland support for client applications. To do this
|
for EFL to target wayland support for client applications. To do this
|
||||||
supply:
|
supply:
|
||||||
|
``` sh
|
||||||
|
-Dwl=true
|
||||||
|
```
|
||||||
|
|
||||||
-Dwl=true
|
### Framebuffer support
|
||||||
|
|
||||||
Framebuffer support:
|
|
||||||
|
|
||||||
This requires linux frame-buffer support, headers etc. This supports
|
|
||||||
basic frame-buffers like /dev/fb as well as input via /dev/input for
|
|
||||||
keyboards and mice in a basic way. Enable this with:
|
|
||||||
|
|
||||||
-Dfb=true
|
|
||||||
|
|
||||||
For more modern framebuffer support you may want drm/kms rendering
|
For more modern framebuffer support you may want drm/kms rendering
|
||||||
support so enable this. This is what you also want for wayland
|
support so enable this. This is what you also want for wayland
|
||||||
compositor support in enlightenment as it will want to be able to
|
compositor support in enlightenment as it will want to be able to
|
||||||
render to a moder framebuffer tarbet with atomic buffer swapping. To
|
render to a modern framebuffer target with atomic buffer swapping. To
|
||||||
do this provide:
|
do this provide:
|
||||||
|
``` sh
|
||||||
|
-Ddrm=true
|
||||||
|
```
|
||||||
|
|
||||||
-Ddrm=true
|
Legacy fbcon support also exists, but you probably no longer want to
|
||||||
|
use this as it is not maintained anymore. This supports basic frame-buffers
|
||||||
|
like /dev/fb as well as input via /dev/input for keyboards and mice in a
|
||||||
|
basic way. Enable this with:
|
||||||
|
``` sh
|
||||||
|
-Dfb=true
|
||||||
|
```
|
||||||
|
|
||||||
You may want to change the install prefix for EFL with:
|
You may want to change the install prefix for EFL with:
|
||||||
|
``` sh
|
||||||
--prefix=/path/to/prefix
|
--prefix=/path/to/prefix
|
||||||
|
```
|
||||||
|
|
||||||
The default prefix if not given is "/usr/local". Many people like to
|
The default prefix if not given is "/usr/local". Many people like to
|
||||||
use prefixes like /opt/e or /opt/efl or /home/USERNAME/software etc.
|
use prefixes like /opt/e or /opt/efl or /home/USERNAME/software etc.
|
||||||
|
|
||||||
COMPILER FLAGS
|
### Compiler flags
|
||||||
--------------
|
|
||||||
|
|
||||||
You can affect compilation optimization, debugging and other factors
|
You can affect compilation optimization, debugging and other factors
|
||||||
by setting your CFLAGS environment variable (and CXXFLAGS). Be aware
|
by setting your `CFLAGS` environment variable (and `CXXFLAGS`). Be aware
|
||||||
that to ensure ABI stability you should use the exact same CFLAGS /
|
that to ensure ABI stability you should use the exact same `CFLAGS` /
|
||||||
CXXFLAGS for all the build of EFL and any applications/libraries that
|
`CXXFLAGS` for all the build of EFL and any applications/libraries that
|
||||||
depend on them.
|
depend on them.
|
||||||
|
|
||||||
There are many other configure options that can be used, but in
|
There are many other configure options that can be used, but in
|
||||||
|
@ -525,13 +439,110 @@ these without understanding the implications. The defaults
|
||||||
have been carefully considered to provide full functionality so users
|
have been carefully considered to provide full functionality so users
|
||||||
will not be missing anything.
|
will not be missing anything.
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
CRYPTOGRAPHY
|
## Compiling and Installing
|
||||||
------------
|
|
||||||
|
|
||||||
EFL officially offers openssl or gnutls as cryptography backends. By
|
Meson is the build system used for this project. For more information
|
||||||
default it uses "openssl" to do signature, cipher and related. Alternatively
|
please see [mesonbuild.com](https://mesonbuild.com)
|
||||||
one can use "gnutls" (some distros are strict about licenses and want gnutls
|
|
||||||
instead of openssl) You can switch to gnutls with:
|
|
||||||
|
|
||||||
-Dcrypto=gnutls
|
You will need normal build tooling installed such as a compiler (gcc
|
||||||
|
or clang for example), pkg-config, ninja, any relevant package-dev or
|
||||||
|
package-devel packages if your distribution splits out development
|
||||||
|
headers (e.g. libc6-dev) etc.
|
||||||
|
|
||||||
|
Depending on where dependencies, you might have to set your
|
||||||
|
`PKG_CONFIG_PATH` environment variable like:
|
||||||
|
```sh
|
||||||
|
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig
|
||||||
|
```
|
||||||
|
|
||||||
|
Also note that some distributions like to add extra arch directories
|
||||||
|
to your library locations so you might have to have more like:
|
||||||
|
```sh
|
||||||
|
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig:/usr/local/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig
|
||||||
|
```
|
||||||
|
|
||||||
|
You will need to ensure that the destination library directory (e.g.
|
||||||
|
`/usr/local/lib` is in your /etc/ld.so.conf or /etc/ld.so.conf.d/
|
||||||
|
files and after installing anything that installs libraries you
|
||||||
|
re-run `ldconfig`. Please see relevant documentation on ldconfig and
|
||||||
|
ld.so.conf for your distribution.
|
||||||
|
|
||||||
|
You might also want to add the destination bin dir to your environment
|
||||||
|
variable PATH (see documentation on your shell PATH variable) such as:
|
||||||
|
```sh
|
||||||
|
export PATH=/usr/local/bin:/usr/bin:/bin
|
||||||
|
```
|
||||||
|
|
||||||
|
Normal compilation in /usr/local:
|
||||||
|
```sh
|
||||||
|
meson . build
|
||||||
|
ninja -C build
|
||||||
|
sudo ninja -C build install
|
||||||
|
```
|
||||||
|
|
||||||
|
For meson build generic options:
|
||||||
|
```sh
|
||||||
|
meson --help
|
||||||
|
```
|
||||||
|
|
||||||
|
For a list of project specific options supported:
|
||||||
|
```sh
|
||||||
|
cat meson_options.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
To set 1 or more project specific options:
|
||||||
|
```sh
|
||||||
|
meson --prefix=/path/to -Doption=value [-Dother=value2] [...] . build
|
||||||
|
```
|
||||||
|
|
||||||
|
To display current configuration:
|
||||||
|
```sh
|
||||||
|
meson configure build
|
||||||
|
```
|
||||||
|
|
||||||
|
The above will only work after at least the following is done:
|
||||||
|
```sh
|
||||||
|
meson . build
|
||||||
|
```
|
||||||
|
|
||||||
|
### Quick build help
|
||||||
|
|
||||||
|
How to clean out the build and config and start fresh:
|
||||||
|
```sh
|
||||||
|
rm -rf build
|
||||||
|
```
|
||||||
|
|
||||||
|
How to make a dist tarball and check its build:
|
||||||
|
(must do it from git tree clone and commit all changes to git first)
|
||||||
|
```sh
|
||||||
|
ninja -C build dist
|
||||||
|
```
|
||||||
|
|
||||||
|
How to change prefix:
|
||||||
|
```sh
|
||||||
|
meson --prefix=/path/to/prefix . build
|
||||||
|
```
|
||||||
|
|
||||||
|
How to install in a specific destination directory for packaging:
|
||||||
|
```sh
|
||||||
|
DESTDIR=/path/to/destdir ninja -C build install
|
||||||
|
```
|
||||||
|
|
||||||
|
How to build with verbose output (full commands run):
|
||||||
|
```sh
|
||||||
|
ninja -C build -v
|
||||||
|
```
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
|
**NOTE:** Nvidia OpenGL-ES/EGL seems to have bugs and performance issues.
|
||||||
|
All other drivers work just fine except Nvidia with OpenGL-ES/EGL. Users have
|
||||||
|
reported stuttering and graphical glitches and sometimes windows not
|
||||||
|
updating. If you want the best results and are stuck on Nvidia and unable to
|
||||||
|
change that, then:
|
||||||
|
|
||||||
|
* Make sure you do not enable **Wayland** i.e. Meson option `-Dwl=false` (this is default anyway if not provided)
|
||||||
|
* Make sure you do not enable **DRM** i.e. Meson option `-Ddrm=false` (this is default anyway if not provided)
|
||||||
|
* Make sure **OpenGL** is **full** i.e. Meson option `-Dopengl=full`
|
|
@ -1,6 +1,5 @@
|
||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
meson -Dsystemd=false -Dv4l2=false -Davahi=false -Deeze=false -Dx11=false \
|
meson -Dsystemd=false -Dv4l2=false -Davahi=false -Deeze=false -Dx11=false \
|
||||||
-Dopengl=full -Dcocoa=true -Dnls=false \
|
-Dopengl=full -Dcocoa=true -Dnls=false -Dinput=false \
|
||||||
-Demotion-loaders-disabler=gstreamer1,libvlc,xine \
|
|
||||||
-Decore-imf-loaders-disabler=scim,ibus \
|
-Decore-imf-loaders-disabler=scim,ibus \
|
||||||
$@ . build
|
$@ . build
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
group "Elm_Palette" struct {
|
||||||
|
value "version" int: 1000;
|
||||||
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
pals = [
|
pals = [
|
||||||
'default',
|
'default',
|
||||||
|
'empty',
|
||||||
'light',
|
'light',
|
||||||
'mauve-sunset',
|
'mauve-sunset',
|
||||||
'candy-mint',
|
'candy-mint',
|
||||||
|
|
|
@ -2,7 +2,7 @@ group "Elm_Config" struct {
|
||||||
value "config_version" int: 131096;
|
value "config_version" int: 131096;
|
||||||
value "entry_select_allow" uchar: 1;
|
value "entry_select_allow" uchar: 1;
|
||||||
value "engine" string: "";
|
value "engine" string: "";
|
||||||
value "vsync" uchar: 0;
|
value "vsync" uchar: 1;
|
||||||
//
|
//
|
||||||
value "thumbscroll_enable" uchar: 1;
|
value "thumbscroll_enable" uchar: 1;
|
||||||
value "thumbscroll_threshold" int: 24;
|
value "thumbscroll_threshold" int: 24;
|
||||||
|
|
|
@ -2,7 +2,7 @@ group "Elm_Config" struct {
|
||||||
value "config_version" int: 131096;
|
value "config_version" int: 131096;
|
||||||
value "entry_select_allow" uchar: 1;
|
value "entry_select_allow" uchar: 1;
|
||||||
value "engine" string: "";
|
value "engine" string: "";
|
||||||
value "vsync" uchar: 0;
|
value "vsync" uchar: 1;
|
||||||
value "thumbscroll_enable" uchar: 1;
|
value "thumbscroll_enable" uchar: 1;
|
||||||
value "thumbscroll_threshold" int: 24;
|
value "thumbscroll_threshold" int: 24;
|
||||||
value "thumbscroll_hold_threshold" int: 100;
|
value "thumbscroll_hold_threshold" int: 100;
|
||||||
|
|
|
@ -2,7 +2,7 @@ group "Elm_Config" struct {
|
||||||
value "config_version" int: 131096;
|
value "config_version" int: 131096;
|
||||||
value "entry_select_allow" uchar: 1;
|
value "entry_select_allow" uchar: 1;
|
||||||
value "engine" string: "";
|
value "engine" string: "";
|
||||||
value "vsync" uchar: 0;
|
value "vsync" uchar: 1;
|
||||||
value "thumbscroll_enable" uchar: 0;
|
value "thumbscroll_enable" uchar: 0;
|
||||||
value "thumbscroll_threshold" int: 4;
|
value "thumbscroll_threshold" int: 4;
|
||||||
value "thumbscroll_hold_threshold" int: 4;
|
value "thumbscroll_hold_threshold" int: 4;
|
||||||
|
|
|
@ -172,6 +172,7 @@ color_tree {
|
||||||
"/fg/normal/spinner/arrow";
|
"/fg/normal/spinner/arrow";
|
||||||
"/fg/normal/spinner/text";
|
"/fg/normal/spinner/text";
|
||||||
"/fg/normal/notification/text";
|
"/fg/normal/notification/text";
|
||||||
|
"/fg/pressed/notification/text/title";
|
||||||
"/fg/selected/winlist/item/text/iconified";
|
"/fg/selected/winlist/item/text/iconified";
|
||||||
"/fg/pressed/gadgets/tasks/text/iconified";
|
"/fg/pressed/gadgets/tasks/text/iconified";
|
||||||
"/fg/normal/gadgets/battery/level/discharge";
|
"/fg/normal/gadgets/battery/level/discharge";
|
||||||
|
@ -197,6 +198,7 @@ color_tree {
|
||||||
"/fg/selected/radio/radio";
|
"/fg/selected/radio/radio";
|
||||||
"/fg/normal/gadgets/backlight/base";
|
"/fg/normal/gadgets/backlight/base";
|
||||||
"/fg-alt";
|
"/fg-alt";
|
||||||
|
"/fg/normal/fileman/filesize/0";
|
||||||
}
|
}
|
||||||
":fg-prehigh" {
|
":fg-prehigh" {
|
||||||
"/fg/normal/flipselector/down";
|
"/fg/normal/flipselector/down";
|
||||||
|
@ -298,6 +300,7 @@ color_tree {
|
||||||
"/fg-alt/pressed";
|
"/fg-alt/pressed";
|
||||||
"/fg-alt/selected";
|
"/fg-alt/selected";
|
||||||
"/fg-alt/selected-pressed";
|
"/fg-alt/selected-pressed";
|
||||||
|
"/fg/selected/fileman/filesize/0";
|
||||||
}
|
}
|
||||||
":selected" {
|
":selected" {
|
||||||
"/bg/selected";
|
"/bg/selected";
|
||||||
|
@ -360,6 +363,7 @@ color_tree {
|
||||||
"/fg/normal/gadgets/mixer/volume/normal";
|
"/fg/normal/gadgets/mixer/volume/normal";
|
||||||
"/fg/normal/gadgets/music_control/progress";
|
"/fg/normal/gadgets/music_control/progress";
|
||||||
"/fg/normal/gadgets/music_control/text/tag";
|
"/fg/normal/gadgets/music_control/text/tag";
|
||||||
|
"/fg/normal/fileman/filesize/1";
|
||||||
}
|
}
|
||||||
":selected-light" {
|
":selected-light" {
|
||||||
"/bg/normal/tiling/position/base";
|
"/bg/normal/tiling/position/base";
|
||||||
|
@ -399,6 +403,9 @@ color_tree {
|
||||||
"/fg/normal/gadgets/packagekit/pkg/bug";
|
"/fg/normal/gadgets/packagekit/pkg/bug";
|
||||||
"/fg/normal/gadgets/packagekit/pkg/enhancement";
|
"/fg/normal/gadgets/packagekit/pkg/enhancement";
|
||||||
"/fg/normal/gadgets/packagekit/pkg/security";
|
"/fg/normal/gadgets/packagekit/pkg/security";
|
||||||
|
"/fg/normal/fileman/filesize/2";
|
||||||
|
"/fg/selected/fileman/filesize/2";
|
||||||
|
"/fg/normal/fileperm/execute";
|
||||||
}
|
}
|
||||||
":selected-alt-trans" {
|
":selected-alt-trans" {
|
||||||
"/bg/normal/access";
|
"/bg/normal/access";
|
||||||
|
@ -410,6 +417,8 @@ color_tree {
|
||||||
"/fg/normal/text-line-added";
|
"/fg/normal/text-line-added";
|
||||||
"/fg/normal/desklock/fprint/success";
|
"/fg/normal/desklock/fprint/success";
|
||||||
"/fg/normal/gadgets/procstats/mem/all";
|
"/fg/normal/gadgets/procstats/mem/all";
|
||||||
|
"/fg/normal/fileman/filesize/3";
|
||||||
|
"/fg/selected/fileman/filesize/3";
|
||||||
}
|
}
|
||||||
":selected2-dim" {
|
":selected2-dim" {
|
||||||
"/fg/disabled/text-line-added";
|
"/fg/disabled/text-line-added";
|
||||||
|
@ -418,6 +427,8 @@ color_tree {
|
||||||
"/fg/normal/gadgets/procstats/cpu/all";
|
"/fg/normal/gadgets/procstats/cpu/all";
|
||||||
"/fg/normal/gadgets/cpufreq/hands/max";
|
"/fg/normal/gadgets/cpufreq/hands/max";
|
||||||
"/fg/normal/gadgets/packagekit/pkg/important";
|
"/fg/normal/gadgets/packagekit/pkg/important";
|
||||||
|
"/fg/normal/fileman/filesize/4";
|
||||||
|
"/fg/selected/fileman/filesize/4";
|
||||||
}
|
}
|
||||||
":selected4" {
|
":selected4" {
|
||||||
"/fg/normal/text-urgent";
|
"/fg/normal/text-urgent";
|
||||||
|
@ -427,6 +438,7 @@ color_tree {
|
||||||
"/fg/normal/text-line-removed";
|
"/fg/normal/text-line-removed";
|
||||||
"/fg/normal/gadgets/temperature/hi";
|
"/fg/normal/gadgets/temperature/hi";
|
||||||
"/fg/normal/gadgets/clock/analog/hands/secs";
|
"/fg/normal/gadgets/clock/analog/hands/secs";
|
||||||
|
"/fg/normal/fileperm/write";
|
||||||
}
|
}
|
||||||
":selected4-dim" {
|
":selected4-dim" {
|
||||||
"/fg/disabled/text-warning";
|
"/fg/disabled/text-warning";
|
||||||
|
@ -445,6 +457,7 @@ color_tree {
|
||||||
}
|
}
|
||||||
":selected6" {
|
":selected6" {
|
||||||
"/fg/normal/text-string";
|
"/fg/normal/text-string";
|
||||||
|
"/fg/selected/fileman/filesize/1";
|
||||||
}
|
}
|
||||||
":selected6-dim" {
|
":selected6-dim" {
|
||||||
"/fg/disabled/text-string";
|
"/fg/disabled/text-string";
|
||||||
|
@ -496,6 +509,7 @@ color_tree {
|
||||||
}
|
}
|
||||||
":dim-lighter" {
|
":dim-lighter" {
|
||||||
"/dim/normal/hover";
|
"/dim/normal/hover";
|
||||||
|
"/dim/normal/inwin";
|
||||||
"/bg/normal/multibuttonentry/button";
|
"/bg/normal/multibuttonentry/button";
|
||||||
"/bg/normal/calendar/day/today";
|
"/bg/normal/calendar/day/today";
|
||||||
"/fg/normal/text-subtle";
|
"/fg/normal/text-subtle";
|
||||||
|
@ -544,6 +558,7 @@ color_tree {
|
||||||
}
|
}
|
||||||
":success" {
|
":success" {
|
||||||
"/fg/normal/text-success";
|
"/fg/normal/text-success";
|
||||||
|
"/fg/normal/fileperm/read";
|
||||||
}
|
}
|
||||||
":success-dim" {
|
":success-dim" {
|
||||||
"/fg/disabled/text-success";
|
"/fg/disabled/text-success";
|
||||||
|
@ -568,6 +583,7 @@ color_tree {
|
||||||
}
|
}
|
||||||
":number" {
|
":number" {
|
||||||
"/fg/normal/text-number";
|
"/fg/normal/text-number";
|
||||||
|
"/fg/normal/fileperm/setuid";
|
||||||
}
|
}
|
||||||
":number-dim" {
|
":number-dim" {
|
||||||
"/fg/disabled/text-number";
|
"/fg/disabled/text-number";
|
||||||
|
|
|
@ -433,9 +433,9 @@ group { name: "e/widgets/border/default/border";
|
||||||
rel.to: "top";
|
rel.to: "top";
|
||||||
rel2.relative: 0.0 0.0;
|
rel2.relative: 0.0 0.0;
|
||||||
rel2.offset: 31 3;
|
rel2.offset: 31 3;
|
||||||
min: 40 6;
|
min: RSZMINW RSZMINH;
|
||||||
align: 1.0 1.0;
|
align: 1.0 1.0;
|
||||||
color: 0 0 0 0; // no cc
|
color: RSZCOL; // no cc
|
||||||
fixed: 1 1;
|
fixed: 1 1;
|
||||||
offscale;
|
offscale;
|
||||||
}
|
}
|
||||||
|
@ -447,9 +447,9 @@ group { name: "e/widgets/border/default/border";
|
||||||
rel1.to: "e.event.resize.tl";
|
rel1.to: "e.event.resize.tl";
|
||||||
rel2.relative: 0.0 1.0;
|
rel2.relative: 0.0 1.0;
|
||||||
rel2.to: "e.event.resize.tr";
|
rel2.to: "e.event.resize.tr";
|
||||||
min: 0 6;
|
min: 0 RSZMINH;
|
||||||
align: 0.5 1.0;
|
align: 0.5 1.0;
|
||||||
color: 0 0 0 0; // no cc
|
color: RSZCOL2; // no cc
|
||||||
fixed: 1 1;
|
fixed: 1 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -461,9 +461,9 @@ group { name: "e/widgets/border/default/border";
|
||||||
rel1.offset: -32 0;
|
rel1.offset: -32 0;
|
||||||
rel2.relative: 1.0 0.0;
|
rel2.relative: 1.0 0.0;
|
||||||
rel2.offset: -1 3;
|
rel2.offset: -1 3;
|
||||||
min: 40 6;
|
min: RSZMINW RSZMINH;
|
||||||
align: 0.0 1.0;
|
align: 0.0 1.0;
|
||||||
color: 0 0 0 0; // no cc
|
color: RSZCOL; // no cc
|
||||||
fixed: 1 1;
|
fixed: 1 1;
|
||||||
offscale;
|
offscale;
|
||||||
}
|
}
|
||||||
|
@ -506,9 +506,9 @@ group { name: "e/widgets/border/default/border";
|
||||||
rel.to: "bottom";
|
rel.to: "bottom";
|
||||||
rel2.relative: 0.0 1.0;
|
rel2.relative: 0.0 1.0;
|
||||||
rel2.offset: 31 -1;
|
rel2.offset: 31 -1;
|
||||||
min: 40 10;
|
min: RSZMINW RSZMINH;
|
||||||
align: 0.0 0.5;
|
align: 1.0 0.0;
|
||||||
color: 0 0 0 0; // no cc
|
color: RSZCOL; // no cc
|
||||||
fixed: 1 1;
|
fixed: 1 1;
|
||||||
offscale;
|
offscale;
|
||||||
}
|
}
|
||||||
|
@ -530,9 +530,9 @@ group { name: "e/widgets/border/default/border";
|
||||||
rel1.relative: 1.0 0.0;
|
rel1.relative: 1.0 0.0;
|
||||||
rel2.to: "e.event.resize.br";
|
rel2.to: "e.event.resize.br";
|
||||||
rel2.relative: 0.0 1.0;
|
rel2.relative: 0.0 1.0;
|
||||||
min: 0 10;
|
min: 0 RSZMINH;
|
||||||
align: 0.5 0.5;
|
align: 0.5 0.0;
|
||||||
color: 0 0 0 0; // no cc
|
color: RSZCOL2; // no cc
|
||||||
fixed: 1 1;
|
fixed: 1 1;
|
||||||
offscale;
|
offscale;
|
||||||
}
|
}
|
||||||
|
@ -553,9 +553,9 @@ group { name: "e/widgets/border/default/border";
|
||||||
rel.to: "bottom";
|
rel.to: "bottom";
|
||||||
rel1.relative: 1.0 0.0;
|
rel1.relative: 1.0 0.0;
|
||||||
rel1.offset: -32 0;
|
rel1.offset: -32 0;
|
||||||
min: 40 10;
|
min: RSZMINW RSZMINH;
|
||||||
align: 0.0 0.5;
|
align: 0.0 0.0;
|
||||||
color: 0 0 0 0; // no cc
|
color: RSZCOL; // no cc
|
||||||
fixed: 1 1;
|
fixed: 1 1;
|
||||||
offscale;
|
offscale;
|
||||||
}
|
}
|
||||||
|
@ -590,9 +590,8 @@ group { name: "e/widgets/border/default/border";
|
||||||
repeat_events: 1;
|
repeat_events: 1;
|
||||||
description { state: "default" 0.0;
|
description { state: "default" 0.0;
|
||||||
fixed: 1 0;
|
fixed: 1 0;
|
||||||
rel1.to: "e.swallow.volume";
|
rel.to: "e.event.icon";
|
||||||
rel1.relative: 1.0 0.0;
|
rel1.relative: 1.0 0.0;
|
||||||
rel2.to: "e.swallow.volume";
|
|
||||||
rel2.relative: 1.0 1.0;
|
rel2.relative: 1.0 1.0;
|
||||||
rel2.offset: 0 -1;
|
rel2.offset: 0 -1;
|
||||||
align: 0.0 0.5;
|
align: 0.0 0.5;
|
||||||
|
@ -607,14 +606,20 @@ group { name: "e/widgets/border/default/border";
|
||||||
source: "e/widgets/border/volume";
|
source: "e/widgets/border/volume";
|
||||||
description { state: "default" 0.0;
|
description { state: "default" 0.0;
|
||||||
fixed: 1 0;
|
fixed: 1 0;
|
||||||
rel1.to: "e.event.icon";
|
rel1.to_x: "e.event.icon";
|
||||||
|
rel2.to_x: "e.event.icon";
|
||||||
|
rel1.to_y: "top";
|
||||||
|
rel2.to_y: "top";
|
||||||
rel1.relative: 1.0 0.0;
|
rel1.relative: 1.0 0.0;
|
||||||
rel2.to: "e.event.icon";
|
|
||||||
rel2.relative: 1.0 1.0;
|
rel2.relative: 1.0 1.0;
|
||||||
rel2.offset: 0 -1;
|
rel2.offset: 0 -1;
|
||||||
align: 0.0 0.5;
|
align: 0.0 0.5;
|
||||||
aspect: 1.0 1.0; aspect_preference: VERTICAL;
|
aspect: 1.0 1.0; aspect_preference: VERTICAL;
|
||||||
}
|
}
|
||||||
|
description { state: "visible";
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
rel.to_x: "e.procstats.swallow";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
programs {
|
programs {
|
||||||
|
@ -709,11 +714,13 @@ group { name: "e/widgets/border/default/border";
|
||||||
program { signal: "e,state,procstats,on"; source: "e";
|
program { signal: "e,state,procstats,on"; source: "e";
|
||||||
action: STATE_SET "visible" 0.0;
|
action: STATE_SET "visible" 0.0;
|
||||||
target: "e.procstats.swallow";
|
target: "e.procstats.swallow";
|
||||||
|
target: "e.swallow.volume";
|
||||||
target: "procstats";
|
target: "procstats";
|
||||||
}
|
}
|
||||||
program { signal: "e,state,procstats,off"; source: "e";
|
program { signal: "e,state,procstats,off"; source: "e";
|
||||||
action: STATE_SET "default" 0.0;
|
action: STATE_SET "default" 0.0;
|
||||||
target: "e.procstats.swallow";
|
target: "e.procstats.swallow";
|
||||||
|
target: "e.swallow.volume";
|
||||||
target: "procstats";
|
target: "procstats";
|
||||||
}
|
}
|
||||||
// program {
|
// program {
|
||||||
|
|
|
@ -549,7 +549,7 @@ group { name: "e/comp/frame/fullscreen";
|
||||||
visible: 1;
|
visible: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
part { name: "scr_shade"; type: RECT;
|
part { name: "scr_shade"; type: RECT; mouse_events: 0;
|
||||||
description { state: "default" 0.0;
|
description { state: "default" 0.0;
|
||||||
color: 0 0 0 0; // no cc
|
color: 0 0 0 0; // no cc
|
||||||
visible: 0;
|
visible: 0;
|
||||||
|
@ -584,7 +584,7 @@ group { name: "e/comp/frame/fullscreen";
|
||||||
rel.to: "shower";
|
rel.to: "shower";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
part { name: "fader"; type: RECT;
|
part { name: "fader"; type: RECT; mouse_events: 0;
|
||||||
description { state: "default" 0.0;
|
description { state: "default" 0.0;
|
||||||
rel.to: "e.swallow.content";
|
rel.to: "e.swallow.content";
|
||||||
color: 255 255 255 0; // no cc
|
color: 255 255 255 0; // no cc
|
||||||
|
|
|
@ -319,7 +319,7 @@ group { name: "e/comp/border/fullscreen";
|
||||||
visible: 1;
|
visible: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
part { name: "scr_shade"; type: RECT;
|
part { name: "scr_shade"; type: RECT; mouse_events: 0;
|
||||||
description { state: "default" 0.0;
|
description { state: "default" 0.0;
|
||||||
color: 0 0 0 0; // no cc
|
color: 0 0 0 0; // no cc
|
||||||
visible: 0;
|
visible: 0;
|
||||||
|
@ -355,7 +355,7 @@ group { name: "e/comp/border/fullscreen";
|
||||||
rel2.to: "shower";
|
rel2.to: "shower";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
part { name: "fader"; type: RECT;
|
part { name: "fader"; type: RECT; mouse_events: 0;
|
||||||
description { state: "default" 0.0;
|
description { state: "default" 0.0;
|
||||||
rel.to: "e.swallow.content";
|
rel.to: "e.swallow.content";
|
||||||
color: 255 255 255 0; // no cc
|
color: 255 255 255 0; // no cc
|
||||||
|
|
|
@ -490,9 +490,9 @@ group { "efl/border"; data.item: "version" "123";
|
||||||
rel.to: "top_clip";
|
rel.to: "top_clip";
|
||||||
rel2.relative: 0.0 0.0;
|
rel2.relative: 0.0 0.0;
|
||||||
rel2.offset: 31 3;
|
rel2.offset: 31 3;
|
||||||
min: 40 6;
|
min: RSZMINW RSZMINH;
|
||||||
align: 1.0 1.0;
|
align: 1.0 1.0;
|
||||||
color: 0 0 0 0; // no cc
|
color: RSZCOL; // no cc
|
||||||
fixed: 1 1;
|
fixed: 1 1;
|
||||||
}
|
}
|
||||||
desc { "hidden"; inherit: "default"; hid; }
|
desc { "hidden"; inherit: "default"; hid; }
|
||||||
|
@ -505,9 +505,9 @@ group { "efl/border"; data.item: "version" "123";
|
||||||
rel1.relative: 1.0 0.0;
|
rel1.relative: 1.0 0.0;
|
||||||
rel2.to: "efl.event.resize.tr";
|
rel2.to: "efl.event.resize.tr";
|
||||||
rel2.relative: 0.0 1.0;
|
rel2.relative: 0.0 1.0;
|
||||||
min: 0 6;
|
min: 0 RSZMINH;
|
||||||
align: 0.5 1.0;
|
align: 1.0 1.0;
|
||||||
color: 0 0 0 0; // no cc
|
color: RSZCOL2; // no cc
|
||||||
fixed: 1 1;
|
fixed: 1 1;
|
||||||
}
|
}
|
||||||
desc { "hidden"; inherit: "default"; hid; }
|
desc { "hidden"; inherit: "default"; hid; }
|
||||||
|
@ -521,9 +521,9 @@ group { "efl/border"; data.item: "version" "123";
|
||||||
rel1.offset: -32 0;
|
rel1.offset: -32 0;
|
||||||
rel2.relative: 1.0 0.0;
|
rel2.relative: 1.0 0.0;
|
||||||
rel2.offset: -1 3;
|
rel2.offset: -1 3;
|
||||||
min: 40 6;
|
min: RSZMINW RSZMINH;
|
||||||
align: 0.0 1.0;
|
align: 0.0 1.0;
|
||||||
color: 0 0 0 0; // no cc
|
color: RSZCOL; // no cc
|
||||||
fixed: 1 1;
|
fixed: 1 1;
|
||||||
}
|
}
|
||||||
desc { "hidden"; inherit: "default"; hid; }
|
desc { "hidden"; inherit: "default"; hid; }
|
||||||
|
@ -573,9 +573,9 @@ group { "efl/border"; data.item: "version" "123";
|
||||||
rel.to: "bottom_clip";
|
rel.to: "bottom_clip";
|
||||||
rel2.relative: 0.0 1.0;
|
rel2.relative: 0.0 1.0;
|
||||||
rel2.offset: 31 -1;
|
rel2.offset: 31 -1;
|
||||||
min: 40 10;
|
min: RSZMINW RSZMINH;
|
||||||
align: 0.0 0.5;
|
align: 1.0 0.0;
|
||||||
color: 0 0 0 0; // no cc
|
color: RSZCOL; // no cc
|
||||||
fixed: 1 1;
|
fixed: 1 1;
|
||||||
offscale;
|
offscale;
|
||||||
}
|
}
|
||||||
|
@ -589,9 +589,9 @@ group { "efl/border"; data.item: "version" "123";
|
||||||
rel1.relative: 1.0 0.0;
|
rel1.relative: 1.0 0.0;
|
||||||
rel2.to: "efl.event.resize.br";
|
rel2.to: "efl.event.resize.br";
|
||||||
rel2.relative: 0.0 1.0;
|
rel2.relative: 0.0 1.0;
|
||||||
min: 0 10;
|
min: 0 RSZMINH;
|
||||||
align: 0.5 0.5;
|
align: 0.5 0.0;
|
||||||
color: 0 0 0 0; // no cc
|
color: RSZCOL2; // no cc
|
||||||
fixed: 1 1;
|
fixed: 1 1;
|
||||||
offscale;
|
offscale;
|
||||||
}
|
}
|
||||||
|
@ -604,9 +604,9 @@ group { "efl/border"; data.item: "version" "123";
|
||||||
rel.to: "bottom_clip";
|
rel.to: "bottom_clip";
|
||||||
rel1.relative: 1.0 0.0;
|
rel1.relative: 1.0 0.0;
|
||||||
rel1.offset: -32 0;
|
rel1.offset: -32 0;
|
||||||
min: 40 10;
|
min: RSZMINW RSZMINH;
|
||||||
align: 0.0 0.5;
|
align: 0.0 0.0;
|
||||||
color: 0 0 0 0; // no cc
|
color: RSZCOL; // no cc
|
||||||
fixed: 1 1;
|
fixed: 1 1;
|
||||||
offscale;
|
offscale;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ group { "efl/win";
|
||||||
swallow { "efl.menu";
|
swallow { "efl.menu";
|
||||||
clip_to: "client_clip";
|
clip_to: "client_clip";
|
||||||
desc { "default";
|
desc { "default";
|
||||||
rel2.relative: 1 0;
|
rel2.relative: 1.0 0.0;
|
||||||
link.base: "efl,action,hide" "efl";
|
link.base: "efl,action,hide" "efl";
|
||||||
align: 0.5 0.0;
|
align: 0.5 0.0;
|
||||||
hid;
|
hid;
|
||||||
|
@ -23,7 +23,7 @@ group { "efl/win";
|
||||||
}
|
}
|
||||||
desc { "with_menu";
|
desc { "with_menu";
|
||||||
rel1.to: "efl.menu";
|
rel1.to: "efl.menu";
|
||||||
rel1.relative: 0 1;
|
rel1.relative: 0.0 1.0;
|
||||||
link.base: "efl,action,show_menu" "efl";
|
link.base: "efl,action,show_menu" "efl";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -497,9 +497,9 @@ group { name: "elm/border/base/default";
|
||||||
rel.to: "top_clip";
|
rel.to: "top_clip";
|
||||||
rel2.relative: 0.0 0.0;
|
rel2.relative: 0.0 0.0;
|
||||||
rel2.offset: 31 3;
|
rel2.offset: 31 3;
|
||||||
min: 40 6;
|
min: RSZMINW RSZMINH;
|
||||||
align: 1.0 1.0;
|
align: 1.0 1.0;
|
||||||
color: 0 0 0 0; // no cc
|
color: RSZCOL; // no cc
|
||||||
fixed: 1 1;
|
fixed: 1 1;
|
||||||
}
|
}
|
||||||
desc { "hidden"; inherit: "default"; hid; }
|
desc { "hidden"; inherit: "default"; hid; }
|
||||||
|
@ -512,9 +512,9 @@ group { name: "elm/border/base/default";
|
||||||
rel1.relative: 1.0 0.0;
|
rel1.relative: 1.0 0.0;
|
||||||
rel2.to: "elm.event.resize.tr";
|
rel2.to: "elm.event.resize.tr";
|
||||||
rel2.relative: 0.0 1.0;
|
rel2.relative: 0.0 1.0;
|
||||||
min: 0 6;
|
min: 0 RSZMINH;
|
||||||
align: 0.5 1.0;
|
align: 0.5 1.0;
|
||||||
color: 0 0 0 0; // no cc
|
color: RSZCOL2; // no cc
|
||||||
fixed: 1 1;
|
fixed: 1 1;
|
||||||
}
|
}
|
||||||
desc { "hidden"; inherit: "default"; hid; }
|
desc { "hidden"; inherit: "default"; hid; }
|
||||||
|
@ -528,9 +528,9 @@ group { name: "elm/border/base/default";
|
||||||
rel1.offset: -32 0;
|
rel1.offset: -32 0;
|
||||||
rel2.relative: 1.0 0.0;
|
rel2.relative: 1.0 0.0;
|
||||||
rel2.offset: -1 3;
|
rel2.offset: -1 3;
|
||||||
min: 40 6;
|
min: RSZMINW RSZMINH;
|
||||||
align: 0.0 1.0;
|
align: 0.0 1.0;
|
||||||
color: 0 0 0 0; // no cc
|
color: RSZCOL; // no cc
|
||||||
fixed: 1 1;
|
fixed: 1 1;
|
||||||
}
|
}
|
||||||
desc { "hidden"; inherit: "default"; hid; }
|
desc { "hidden"; inherit: "default"; hid; }
|
||||||
|
@ -556,7 +556,7 @@ group { name: "elm/border/base/default";
|
||||||
desc { "hidden";
|
desc { "hidden";
|
||||||
inherit: "default";
|
inherit: "default";
|
||||||
rel1 { relative: 0.0 1.0; offset: 0 0; }
|
rel1 { relative: 0.0 1.0; offset: 0 0; }
|
||||||
rel2 { relative: 1.0 1.0; offset: 0 0; }
|
rel2 { relative: 1.0 1.0; offset: -1 0; }
|
||||||
min: 0 0;
|
min: 0 0;
|
||||||
hid;
|
hid;
|
||||||
}
|
}
|
||||||
|
@ -580,9 +580,9 @@ group { name: "elm/border/base/default";
|
||||||
rel.to: "bottom_clip";
|
rel.to: "bottom_clip";
|
||||||
rel2.relative: 0.0 1.0;
|
rel2.relative: 0.0 1.0;
|
||||||
rel2.offset: 31 -1;
|
rel2.offset: 31 -1;
|
||||||
min: 40 10;
|
min: RSZMINW RSZMINH;
|
||||||
align: 0.0 0.5;
|
align: 1.0 0.0;
|
||||||
color: 0 0 0 0; // no cc
|
color: RSZCOL; // no cc
|
||||||
fixed: 1 1;
|
fixed: 1 1;
|
||||||
offscale;
|
offscale;
|
||||||
}
|
}
|
||||||
|
@ -596,9 +596,9 @@ group { name: "elm/border/base/default";
|
||||||
rel1.relative: 1.0 0.0;
|
rel1.relative: 1.0 0.0;
|
||||||
rel2.to: "elm.event.resize.br";
|
rel2.to: "elm.event.resize.br";
|
||||||
rel2.relative: 0.0 1.0;
|
rel2.relative: 0.0 1.0;
|
||||||
min: 0 10;
|
min: 0 RSZMINH;
|
||||||
align: 0.5 0.5;
|
align: 0.5 0.0;
|
||||||
color: 0 0 0 0; // no cc
|
color: RSZCOL2; // no cc
|
||||||
fixed: 1 1;
|
fixed: 1 1;
|
||||||
offscale;
|
offscale;
|
||||||
}
|
}
|
||||||
|
@ -611,9 +611,9 @@ group { name: "elm/border/base/default";
|
||||||
rel.to: "bottom_clip";
|
rel.to: "bottom_clip";
|
||||||
rel1.relative: 1.0 0.0;
|
rel1.relative: 1.0 0.0;
|
||||||
rel1.offset: -32 0;
|
rel1.offset: -32 0;
|
||||||
min: 40 10;
|
min: RSZMINW RSZMINH;
|
||||||
align: 0.0 0.5;
|
align: 0.0 0.0;
|
||||||
color: 0 0 0 0; // no cc
|
color: RSZCOL; // no cc
|
||||||
fixed: 1 1;
|
fixed: 1 1;
|
||||||
offscale;
|
offscale;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@ group { name: "elm/win/inwin/default";
|
||||||
parts {
|
parts {
|
||||||
part { name: "bg"; type: RECT; mouse_events: 1;
|
part { name: "bg"; type: RECT; mouse_events: 1;
|
||||||
description { state: "default" 0.0;
|
description { state: "default" 0.0;
|
||||||
color_class: "dim/normal/inwin";
|
color_class: "/dim/normal/inwin";
|
||||||
color: 255 255 255 0; // no cc
|
color: 255 255 255 0; // no cc
|
||||||
}
|
}
|
||||||
description { state: "visible" 0.0;
|
description { state: "visible" 0.0;
|
||||||
|
|
|
@ -7,6 +7,7 @@ group { name: "elm/notify/block_events/default";
|
||||||
color: 255 255 255 0; // no cc
|
color: 255 255 255 0; // no cc
|
||||||
}
|
}
|
||||||
desc { "visible";
|
desc { "visible";
|
||||||
|
inherit: "default" 0.0;
|
||||||
color: 255 255 255 255; // no cc
|
color: 255 255 255 255; // no cc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,17 +7,17 @@ group { name: "elm/win/base/default";
|
||||||
clip_to: "client_clip";
|
clip_to: "client_clip";
|
||||||
desc { "default";
|
desc { "default";
|
||||||
rel1.offset: 0 -1;
|
rel1.offset: 0 -1;
|
||||||
rel2.relative: 1 0;
|
rel2.relative: -1 -1;
|
||||||
align: 0.5 0.0;
|
align: 0.5 0.0;
|
||||||
hid;
|
hid;
|
||||||
link.base: "elm,action,hide" "elm";
|
link.base: "elm,action,hide" "elm";
|
||||||
min: 0 20;
|
min: 0 20;
|
||||||
|
fixed: 1 1;
|
||||||
}
|
}
|
||||||
desc { "visible";
|
desc { "visible";
|
||||||
inherit: "default";
|
inherit: "default";
|
||||||
rel1.offset: 0 0;
|
rel1.offset: 0 0;
|
||||||
rel2.offset: -1 0;
|
rel2.offset: -1 0;
|
||||||
fixed: 0 1;
|
|
||||||
vis;
|
vis;
|
||||||
link.base: "elm,action,show_menu" "elm";
|
link.base: "elm,action,show_menu" "elm";
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ group { name: "elm/win/base/default";
|
||||||
desc { "default"; }
|
desc { "default"; }
|
||||||
desc { "with_menu";
|
desc { "with_menu";
|
||||||
rel1.to: "elm.swallow.menu";
|
rel1.to: "elm.swallow.menu";
|
||||||
rel1.relative: 0 1;
|
rel1.relative: 0.0 1.0;
|
||||||
link.base: "elm,action,show_menu" "elm";
|
link.base: "elm,action,show_menu" "elm";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -403,29 +403,6 @@ group { name: "e/modules/ibox/icon_overlay";
|
||||||
rel.to: "background";
|
rel.to: "background";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
text { name: "spacer"; scale: 1;
|
|
||||||
desc {
|
|
||||||
color: 0 0 0 0; // no cc
|
|
||||||
rel1.relative: 1 0;
|
|
||||||
rel2.relative: 0 1;
|
|
||||||
text {
|
|
||||||
source: "e.text.label";
|
|
||||||
text_source: "e.text.label";
|
|
||||||
}
|
|
||||||
link.base: "e,origin,center" "e";
|
|
||||||
link.transition: SINUSOIDAL 0.1 CURRENT USE_DURATION_FACTOR 1;
|
|
||||||
}
|
|
||||||
desc { "left"; inherit: "default";
|
|
||||||
align: 0.0 0.5;
|
|
||||||
link.base: "e,origin,left" "e";
|
|
||||||
link.transition: SINUSOIDAL 0.1 CURRENT USE_DURATION_FACTOR 1;
|
|
||||||
}
|
|
||||||
desc { "right"; inherit: "default";
|
|
||||||
align: 1.0 0.5;
|
|
||||||
link.base: "e,origin,right" "e";
|
|
||||||
link.transition: SINUSOIDAL 0.1 CURRENT USE_DURATION_FACTOR 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
part { name: "bg"; type: RECT; mouse_events: 0;
|
part { name: "bg"; type: RECT; mouse_events: 0;
|
||||||
scale: 1;
|
scale: 1;
|
||||||
description { state: "default" 0.0;
|
description { state: "default" 0.0;
|
||||||
|
@ -469,6 +446,32 @@ group { name: "e/modules/ibox/icon_overlay";
|
||||||
visible: 1;
|
visible: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
text { name: "spacer"; scale: 1;
|
||||||
|
desc {
|
||||||
|
visible: 0;
|
||||||
|
rel1.offset: 4 4;
|
||||||
|
rel2.offset: -5 -5;
|
||||||
|
offscale;
|
||||||
|
text {
|
||||||
|
source: "e.text.label";
|
||||||
|
text_source: "e.text.label";
|
||||||
|
min: 1 1;
|
||||||
|
}
|
||||||
|
link.base: "e,origin,center" "e";
|
||||||
|
link.transition: SINUSOIDAL 0.1 CURRENT USE_DURATION_FACTOR 1;
|
||||||
|
color: 255 0 0 255;
|
||||||
|
}
|
||||||
|
desc { "left"; inherit: "default";
|
||||||
|
align: 0.0 0.5;
|
||||||
|
link.base: "e,origin,left" "e";
|
||||||
|
link.transition: SINUSOIDAL 0.1 CURRENT USE_DURATION_FACTOR 1;
|
||||||
|
}
|
||||||
|
desc { "right"; inherit: "default";
|
||||||
|
align: 1.0 0.5;
|
||||||
|
link.base: "e,origin,right" "e";
|
||||||
|
link.transition: SINUSOIDAL 0.1 CURRENT USE_DURATION_FACTOR 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
programs {
|
programs {
|
||||||
// program {
|
// program {
|
||||||
|
|
|
@ -732,6 +732,8 @@ ICON("utilities-terminal", "i-termprompt")
|
||||||
|
|
||||||
ICON("fprint", "i-fingerprint")
|
ICON("fprint", "i-fingerprint")
|
||||||
|
|
||||||
|
ICON("person-bust", "i-person-bust")
|
||||||
|
|
||||||
#undef ICON
|
#undef ICON
|
||||||
|
|
||||||
// regular icons
|
// regular icons
|
||||||
|
|
|
@ -21,6 +21,7 @@ group { name: "e/ilist";
|
||||||
offscale;
|
offscale;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
alias: "e.text.typebuf_label" "e.text.label";
|
||||||
part { name: "e.text.label"; type: TEXT; mouse_events: 0;
|
part { name: "e.text.label"; type: TEXT; mouse_events: 0;
|
||||||
clip_to: "typebuf_clip";
|
clip_to: "typebuf_clip";
|
||||||
scale: 1;
|
scale: 1;
|
||||||
|
|
|
@ -33,8 +33,7 @@ group { name: "e/modules/notification/main";
|
||||||
tag: "b" "+ font="FNBD" text_class=module_bold color=cc:/fg/normal/notification/text/bold";
|
tag: "b" "+ font="FNBD" text_class=module_bold color=cc:/fg/normal/notification/text/bold";
|
||||||
tag: "i" "+ font="FNIT" text_class=module_italic";
|
tag: "i" "+ font="FNIT" text_class=module_italic";
|
||||||
tag: "u" "+ underline=on underline_color=cc:/fg/normal/notification/text/underline";
|
tag: "u" "+ underline=on underline_color=cc:/fg/normal/notification/text/underline";
|
||||||
tag: "img" ""; // images not supported
|
tag: "link" "+ color=cc:/fg/normal/text-link underline=on underline_color=cc:/fg/normal/text-link";
|
||||||
tag: "a" ""; // links not supported
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,10 +71,10 @@ group { name: "e/modules/notification/main";
|
||||||
scale: 1;
|
scale: 1;
|
||||||
description { state: "default" 0.0;
|
description { state: "default" 0.0;
|
||||||
align: 0.0 0.5;
|
align: 0.0 0.5;
|
||||||
aspect: 1.0 1.0;
|
aspect: 1.0 1.0; aspect_preference: BOTH;
|
||||||
aspect_preference: BOTH;
|
|
||||||
rel.to: "base";
|
rel.to: "base";
|
||||||
rel1.offset: 12 12;
|
rel1.to_y: "notification.textblock.message";
|
||||||
|
rel1.offset: 12 0;
|
||||||
rel2.offset: 12 -13;
|
rel2.offset: 12 -13;
|
||||||
rel2.relative: 0.0 1.0;
|
rel2.relative: 0.0 1.0;
|
||||||
min: 24 24;
|
min: 24 24;
|
||||||
|
@ -83,26 +82,11 @@ group { name: "e/modules/notification/main";
|
||||||
offscale;
|
offscale;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
part { name: "notification.textblock.message"; type: TEXTBLOCK; mouse_events: 0;
|
|
||||||
clip_to: "bodyclip";
|
|
||||||
scale: 1;
|
|
||||||
description { state: "default" 0.0;
|
|
||||||
align: 0.0 0.0;
|
|
||||||
rel.to: "base";
|
|
||||||
rel1.to_x: "notification.swallow.app_icon";
|
|
||||||
rel1.to_y: "notification.text.title";
|
|
||||||
rel1.relative: 1.0 1.0;
|
|
||||||
rel1.offset: 4 4;
|
|
||||||
rel2.offset: -27 -13;
|
|
||||||
text { style: "notification_style";
|
|
||||||
min: 0 1;
|
|
||||||
}
|
|
||||||
fixed: 1 1;
|
|
||||||
offscale;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
part { name: "message"; type: TEXTBLOCK; mouse_events: 0;
|
part { name: "message"; type: TEXTBLOCK; mouse_events: 0;
|
||||||
scale: 1;
|
scale: 1;
|
||||||
|
entry_mode: EDITABLE;
|
||||||
|
select_mode: EXPLICIT;
|
||||||
|
multiline: 1;
|
||||||
description { state: "default" 0.0;
|
description { state: "default" 0.0;
|
||||||
align: 0.0 0.0;
|
align: 0.0 0.0;
|
||||||
min: 200 20;
|
min: 200 20;
|
||||||
|
@ -112,7 +96,9 @@ group { name: "e/modules/notification/main";
|
||||||
rel1.to_y: "notification.text.title";
|
rel1.to_y: "notification.text.title";
|
||||||
rel1.relative: 1.0 1.0;
|
rel1.relative: 1.0 1.0;
|
||||||
rel1.offset: 4 4;
|
rel1.offset: 4 4;
|
||||||
rel2.offset: -27 -13;
|
rel2.offset: -27 -5;
|
||||||
|
rel2.to_y: "notification.swallow.actions";
|
||||||
|
rel2.relative: 1.0 0.0;
|
||||||
text { style: "notification_style";
|
text { style: "notification_style";
|
||||||
text_source: "notification.textblock.message";
|
text_source: "notification.textblock.message";
|
||||||
min: 0 1;
|
min: 0 1;
|
||||||
|
@ -121,6 +107,45 @@ group { name: "e/modules/notification/main";
|
||||||
offscale;
|
offscale;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
part { name: "notification.textblock.message"; type: TEXTBLOCK;
|
||||||
|
clip_to: "bodyclip";
|
||||||
|
scale: 1;
|
||||||
|
entry_mode: EDITABLE;
|
||||||
|
select_mode: EXPLICIT;
|
||||||
|
multiline: 1;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
align: 0.0 0.0;
|
||||||
|
rel.to: "base";
|
||||||
|
rel1.to_x: "notification.swallow.app_icon";
|
||||||
|
rel1.to_y: "notification.text.title";
|
||||||
|
rel1.relative: 1.0 1.0;
|
||||||
|
rel1.offset: 4 4;
|
||||||
|
rel2.offset: -27 -5;
|
||||||
|
rel2.to_y: "notification.swallow.actions";
|
||||||
|
rel2.relative: 1.0 0.0;
|
||||||
|
text { style: "notification_style";
|
||||||
|
min: 0 1;
|
||||||
|
}
|
||||||
|
fixed: 1 1;
|
||||||
|
offscale;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "notification.swallow.desktop_icon"; type: SWALLOW; mouse_events: 0;
|
||||||
|
scale: 1;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
align: 0.0 0.0;
|
||||||
|
aspect: 1.0 1.0; aspect_preference: BOTH;
|
||||||
|
rel1.to_x: "base";
|
||||||
|
rel1.to_y: "notification.text.title";
|
||||||
|
rel1.offset: 12 0;
|
||||||
|
rel2.to: "notification.text.title";
|
||||||
|
rel2.offset: 12 -1;
|
||||||
|
rel2.relative: 0.0 1.0;
|
||||||
|
min: 15 15;
|
||||||
|
fixed: 1 1;
|
||||||
|
offscale;
|
||||||
|
}
|
||||||
|
}
|
||||||
part { name: "notification.text.title"; type: TEXT; mouse_events: 0;
|
part { name: "notification.text.title"; type: TEXT; mouse_events: 0;
|
||||||
clip_to: "titleclip";
|
clip_to: "titleclip";
|
||||||
scale: 1;
|
scale: 1;
|
||||||
|
@ -144,6 +169,24 @@ group { name: "e/modules/notification/main";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
part { name: "notification.swallow.actions"; type: SWALLOW;
|
||||||
|
scale: 1;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
align: 0.5 1.0;
|
||||||
|
rel.to: "base";
|
||||||
|
rel1.relative: 0.0 1.0;
|
||||||
|
rel1.offset: 12 -13;
|
||||||
|
rel2.offset: -13 -13;
|
||||||
|
offscale;
|
||||||
|
visible: 0;
|
||||||
|
}
|
||||||
|
description { state: "visible" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 1;
|
||||||
|
min: 40 20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
part { name: "close";
|
part { name: "close";
|
||||||
scale: 1;
|
scale: 1;
|
||||||
description { state: "default" 0.0;
|
description { state: "default" 0.0;
|
||||||
|
@ -190,14 +233,81 @@ group { name: "e/modules/notification/main";
|
||||||
program { signal: "mouse,clicked,1"; source: "base";
|
program { signal: "mouse,clicked,1"; source: "base";
|
||||||
action: SIGNAL_EMIT "notification,find" "theme";
|
action: SIGNAL_EMIT "notification,find" "theme";
|
||||||
}
|
}
|
||||||
// program {
|
program { signal: "e,state,actions,show"; source: "e";
|
||||||
// signal: "notification,new"; source: "notification";
|
action: STATE_SET "visible" 0.0;
|
||||||
// }
|
target: "notification.swallow.actions";
|
||||||
// program {
|
}
|
||||||
// signal: "notification,del"; source: "notification";
|
program { signal: "e,state,actions,hide"; source: "e";
|
||||||
// }
|
action: STATE_SET "default" 0.0;
|
||||||
// program {
|
target: "notification.swallow.actions";
|
||||||
// signal: "notification,deleted"; source: "notification";
|
}
|
||||||
// }
|
// program { signal: "e,category,device"; source: "e"; }
|
||||||
|
// program { signal: "e,category,device.added"; source: "e"; }
|
||||||
|
// program { signal: "e,category,device.error"; source: "e"; }
|
||||||
|
// program { signal: "e,category,device.removed"; source: "e"; }
|
||||||
|
// program { signal: "e,category,email"; source: "e"; }
|
||||||
|
// program { signal: "e,category,email.arrived"; source: "e"; }
|
||||||
|
// program { signal: "e,category,email.bounced"; source: "e"; }
|
||||||
|
// program { signal: "e,category,im"; source: "e"; }
|
||||||
|
// program { signal: "e,category,im.error"; source: "e"; }
|
||||||
|
// program { signal: "e,category,im.received"; source: "e"; }
|
||||||
|
// program { signal: "e,category,network"; source: "e"; }
|
||||||
|
// program { signal: "e,category,network.connected"; source: "e"; }
|
||||||
|
// program { signal: "e,category,network.disconnected"; source: "e"; }
|
||||||
|
// program { signal: "e,category,network.error"; source: "e"; }
|
||||||
|
// program { signal: "e,category,presence"; source: "e"; }
|
||||||
|
// program { signal: "e,category,presence.offline"; source: "e"; }
|
||||||
|
// program { signal: "e,category,presence.online"; source: "e"; }
|
||||||
|
// program { signal: "e,category,transfer"; source: "e"; }
|
||||||
|
// program { signal: "e,category,transfer.complete"; source: "e"; }
|
||||||
|
// program { signal: "e,category,transfer.error"; source: "e"; }
|
||||||
|
// program { signal: "e,urgency,low"; source: "e"; }
|
||||||
|
// program { signal: "e,urgency,normal"; source: "e"; }
|
||||||
|
// program { signal: "e,urgency,critical"; source: "e"; }
|
||||||
|
// program { signal: "notification,new"; source: "notification"; }
|
||||||
|
// program { signal: "notification,del"; source: "notification"; }
|
||||||
|
// program { signal: "notification,deleted"; source: "notification"; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
group { name: "e/modules/notification/action";
|
||||||
|
parts {
|
||||||
|
part { name: "e.text.label"; type: TEXT;
|
||||||
|
scale: 1;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.offset: 4 4;
|
||||||
|
rel2.offset: -5 -5;
|
||||||
|
color_class: "/fg/normal/notification/text/title";
|
||||||
|
text { font: FNBD; size: 10;
|
||||||
|
min: 1 1;
|
||||||
|
text_class: "notification_title";
|
||||||
|
}
|
||||||
|
offscale;
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
color_class: "/fg/pressed/notification/text/title";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "event"; type: RECT;
|
||||||
|
scale : 1;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
color: 0 0 0 0; // no cc
|
||||||
|
min: 40 20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
programs {
|
||||||
|
program { signal: "mouse,down,1"; source: "event";
|
||||||
|
action: STATE_SET "selected" 0.0;
|
||||||
|
target: "e.text.label";
|
||||||
|
}
|
||||||
|
program { signal: "mouse,up,1"; source: "event";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
target: "e.text.label";
|
||||||
|
}
|
||||||
|
program { signal: "mouse,clicked,1"; source: "event";
|
||||||
|
action: SIGNAL_EMIT "e,action,clicked" "e";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ group { name: "e/pointer/enlightenment/default/color";
|
||||||
scale: 1;
|
scale: 1;
|
||||||
description { state: "default" 0.0;
|
description { state: "default" 0.0;
|
||||||
color: 255 255 255 255; // no cc
|
color: 255 255 255 255; // no cc
|
||||||
FIXED_SIZE(32, 32)
|
// FIXED_SIZE(32, 32)
|
||||||
}
|
}
|
||||||
description { state: "suspend" 0.0;
|
description { state: "suspend" 0.0;
|
||||||
inherit: "default" 0.0;
|
inherit: "default" 0.0;
|
||||||
|
|
|
@ -152,6 +152,7 @@ I060("i-net-wifi-sig-3", "net-wifi-sig-3")
|
||||||
I060("i-net-wifi-sig-4", "net-wifi-sig-4")
|
I060("i-net-wifi-sig-4", "net-wifi-sig-4")
|
||||||
I060("i-star", "star")
|
I060("i-star", "star")
|
||||||
I060("i-star-off", "star-off")
|
I060("i-star-off", "star-off")
|
||||||
|
I060("i-person-bust", "person-bust")
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// larger color icons (mostly efm or settings)
|
// larger color icons (mostly efm or settings)
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 249 B |
Binary file not shown.
After Width: | Height: | Size: 338 B |
Binary file not shown.
After Width: | Height: | Size: 625 B |
|
@ -0,0 +1,100 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
version="1.1"
|
||||||
|
id="svg2"
|
||||||
|
width="15"
|
||||||
|
height="15"
|
||||||
|
viewBox="0 0 15 15"
|
||||||
|
sodipodi:docname="person-bust.svg"
|
||||||
|
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)"
|
||||||
|
inkscape:export-filename="/home/raster/C/th-efl/th/img/ic/stick-man-015.png"
|
||||||
|
inkscape:export-xdpi="96"
|
||||||
|
inkscape:export-ydpi="96"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
<metadata
|
||||||
|
id="metadata8">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs6">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient4128"
|
||||||
|
inkscape:swatch="solid">
|
||||||
|
<stop
|
||||||
|
id="stop4126"
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#000000;stop-opacity:1;" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
inkscape:document-rotation="0"
|
||||||
|
pagecolor="#404040"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="2560"
|
||||||
|
inkscape:window-height="1377"
|
||||||
|
id="namedview4"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:zoom="75.133333"
|
||||||
|
inkscape:cx="7.5"
|
||||||
|
inkscape:cy="7.5"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="g10"
|
||||||
|
inkscape:snap-bbox="true"
|
||||||
|
inkscape:bbox-paths="false"
|
||||||
|
inkscape:bbox-nodes="true"
|
||||||
|
inkscape:snap-bbox-edge-midpoints="false"
|
||||||
|
inkscape:object-paths="true"
|
||||||
|
inkscape:snap-intersection-paths="true"
|
||||||
|
inkscape:snap-smooth-nodes="true"
|
||||||
|
inkscape:pagecheckerboard="0">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid837"
|
||||||
|
spacingx="0.5"
|
||||||
|
spacingy="0.5" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
inkscape:label="Image"
|
||||||
|
id="g10">
|
||||||
|
<circle
|
||||||
|
r="2.5"
|
||||||
|
cy="4.5"
|
||||||
|
cx="7.5"
|
||||||
|
id="path4112"
|
||||||
|
style="fill:#fefefe;fill-opacity:1;stroke-width:2.75;stroke-linecap:round;stroke-linejoin:round" />
|
||||||
|
<rect
|
||||||
|
y="6.5"
|
||||||
|
x="6.5"
|
||||||
|
height="4"
|
||||||
|
width="2"
|
||||||
|
id="rect4116"
|
||||||
|
style="fill:#fdfdfd;fill-opacity:1;stroke-width:0.888936;stroke-linecap:round;stroke-linejoin:round" />
|
||||||
|
<path
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 3.5,13 h 8 v -3 c 0,-1 -1,-2 -2,-2 h -4 c -1,0 -2,1 -2,2 z"
|
||||||
|
id="path865"
|
||||||
|
sodipodi:nodetypes="ccccccc" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.0 KiB |
|
@ -9,6 +9,10 @@
|
||||||
|
|
||||||
#define SHELFPAD 3
|
#define SHELFPAD 3
|
||||||
#define ICMIN 15
|
#define ICMIN 15
|
||||||
|
#define RSZCOL 0 0 0 0
|
||||||
|
#define RSZCOL2 0 0 0 0
|
||||||
|
#define RSZMINW 44
|
||||||
|
#define RSZMINH 10
|
||||||
|
|
||||||
#define SPACER_TEXT "NN";
|
#define SPACER_TEXT "NN";
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
checkme_files = ['ecore', 'ecore_imf', 'ecore_x', 'eeze', 'efreet', 'elua', 'emotion', 'ethumb', 'ethumb_client']
|
checkme_files = ['ecore', 'ecore_imf', 'ecore_x', 'eeze', 'efreet', 'elua', 'emotion', 'ethumb', 'ethumb_client', 'evas']
|
||||||
foreach checkme : checkme_files
|
foreach checkme : checkme_files
|
||||||
install_data(join_paths(checkme, 'checkme'),
|
install_data(join_paths(checkme, 'checkme'),
|
||||||
install_dir : join_paths(dir_data, checkme)
|
install_dir : join_paths(dir_data, checkme)
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
|
@ -948,11 +948,6 @@
|
||||||
* @ref ecore_event_example_02_c "the explanation here".
|
* @ref ecore_event_example_02_c "the explanation here".
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
|
||||||
* @example ecore_fd_handler_gnutls_example.c
|
|
||||||
* Shows how to use fd handlers.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @example ecore_con_lookup_example.c
|
* @example ecore_con_lookup_example.c
|
||||||
* Shows how to make a simple DNS lookup. See the complete example description
|
* Shows how to make a simple DNS lookup. See the complete example description
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
project('efl', ['c','cpp'],
|
project('efl', ['c','cpp'],
|
||||||
version: '1.25.99',
|
version: '1.26.99',
|
||||||
default_options : ['buildtype=plain', 'cpp_std=c++11'],
|
default_options : ['buildtype=plain', 'warning_level=1', 'cpp_std=c++11'],
|
||||||
meson_version : '>=0.50'
|
meson_version : '>=0.50'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -73,7 +73,6 @@ local_scripts = join_paths('src', 'scripts')
|
||||||
dev_cflags = []
|
dev_cflags = []
|
||||||
dev_cflags_try = [
|
dev_cflags_try = [
|
||||||
'-fvisibility=hidden',
|
'-fvisibility=hidden',
|
||||||
'-Wall',
|
|
||||||
'-Wfloat-compare',
|
'-Wfloat-compare',
|
||||||
'-Wpointer-arith',
|
'-Wpointer-arith',
|
||||||
'-Wunused-parameter',
|
'-Wunused-parameter',
|
||||||
|
@ -224,10 +223,6 @@ if host_os == 'freebsd' or host_os == 'dragonfly'
|
||||||
# can cause major issues (2 copies of the same library).
|
# can cause major issues (2 copies of the same library).
|
||||||
crypto = declare_dependency(link_args : [ '-lssl', '-lcrypto'])
|
crypto = declare_dependency(link_args : [ '-lssl', '-lcrypto'])
|
||||||
config_h.set('HAVE_OPENSSL', '1')
|
config_h.set('HAVE_OPENSSL', '1')
|
||||||
elif get_option('crypto') == 'gnutls'
|
|
||||||
# gcrypt does not want to provide a pkg config file so we try the lib
|
|
||||||
crypto = [dependency('gnutls'), cc.find_library('gcrypt')]
|
|
||||||
config_h.set('HAVE_GNUTLS', '1')
|
|
||||||
elif get_option('crypto') == 'openssl'
|
elif get_option('crypto') == 'openssl'
|
||||||
crypto = dependency('openssl')
|
crypto = dependency('openssl')
|
||||||
config_h.set('HAVE_OPENSSL', '1')
|
config_h.set('HAVE_OPENSSL', '1')
|
||||||
|
|
|
@ -96,7 +96,7 @@ option('debug-threads',
|
||||||
|
|
||||||
option('build-examples',
|
option('build-examples',
|
||||||
type : 'boolean',
|
type : 'boolean',
|
||||||
value : true,
|
value : false,
|
||||||
description : 'Compile examples'
|
description : 'Compile examples'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@ option('build-tests',
|
||||||
|
|
||||||
option('crypto',
|
option('crypto',
|
||||||
type : 'combo',
|
type : 'combo',
|
||||||
choices : ['gnutls', 'openssl'],
|
choices : ['openssl'],
|
||||||
value : 'openssl',
|
value : 'openssl',
|
||||||
description : 'Which SSL Crypto library used in efl'
|
description : 'Which SSL Crypto library used in efl'
|
||||||
)
|
)
|
||||||
|
@ -195,8 +195,8 @@ option('unmount-path',
|
||||||
option('evas-loaders-disabler',
|
option('evas-loaders-disabler',
|
||||||
type : 'array',
|
type : 'array',
|
||||||
description : 'List of modular image/vector loaders to disable in efl',
|
description : 'List of modular image/vector loaders to disable in efl',
|
||||||
choices : ['', 'gst', 'pdf', 'ps', 'raw', 'svg', 'rsvg', 'xcf', 'bmp', 'dds', 'eet', 'generic', 'gif', 'ico', 'jp2k', 'jpeg', 'pmaps', 'png', 'psd', 'tga', 'tgv', 'tiff', 'wbmp', 'webp', 'xpm', 'json', 'avif', 'heif'],
|
choices : ['', 'gst', 'pdf', 'ps', 'raw', 'svg', 'rsvg', 'xcf', 'bmp', 'dds', 'eet', 'generic', 'gif', 'ico', 'jp2k', 'jpeg', 'pmaps', 'png', 'psd', 'tga', 'tgv', 'tiff', 'wbmp', 'webp', 'xpm', 'json', 'avif', 'heif', 'jxl'],
|
||||||
value : ['json', 'avif', 'heif']
|
value : ['json', 'avif', 'heif', 'jxl']
|
||||||
)
|
)
|
||||||
|
|
||||||
option('ecore-imf-loaders-disabler',
|
option('ecore-imf-loaders-disabler',
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
ar az_IR ca cs da de el eo es fa fi fr gl he hu it ja ko_KR ko lt nl pl ps pt ru sl sr tr ur vi yi zh_CN
|
ar az_IR ca cs da de el eo es fa fi fr gl he hu it ja ka ko_KR ko lt nl pl ps pt ru sl sr tr ur vi yi zh_CN
|
||||||
|
|
|
@ -406,7 +406,6 @@ src/examples/ecore/ecore_event_example_02.c
|
||||||
src/examples/ecore/ecore_exe_example.c
|
src/examples/ecore/ecore_exe_example.c
|
||||||
src/examples/ecore/ecore_exe_example_child.c
|
src/examples/ecore/ecore_exe_example_child.c
|
||||||
src/examples/ecore/ecore_fd_handler_example.c
|
src/examples/ecore/ecore_fd_handler_example.c
|
||||||
src/examples/ecore/ecore_fd_handler_gnutls_example.c
|
|
||||||
src/examples/ecore/ecore_file_download_example.c
|
src/examples/ecore/ecore_file_download_example.c
|
||||||
src/examples/ecore/ecore_getopt_example.c
|
src/examples/ecore/ecore_getopt_example.c
|
||||||
src/examples/ecore/ecore_idler_example.c
|
src/examples/ecore/ecore_idler_example.c
|
||||||
|
@ -861,11 +860,9 @@ src/lib/ecore_con/efl_net_socket_tcp.c
|
||||||
src/lib/ecore_con/efl_net_socket_udp.c
|
src/lib/ecore_con/efl_net_socket_udp.c
|
||||||
src/lib/ecore_con/efl_net_socket_unix.c
|
src/lib/ecore_con/efl_net_socket_unix.c
|
||||||
src/lib/ecore_con/efl_net_socket_windows.c
|
src/lib/ecore_con/efl_net_socket_windows.c
|
||||||
src/lib/ecore_con/efl_net_ssl_conn-gnutls.c
|
|
||||||
src/lib/ecore_con/efl_net_ssl_conn-none.c
|
src/lib/ecore_con/efl_net_ssl_conn-none.c
|
||||||
src/lib/ecore_con/efl_net_ssl_conn-openssl.c
|
src/lib/ecore_con/efl_net_ssl_conn-openssl.c
|
||||||
src/lib/ecore_con/efl_net_ssl_context.c
|
src/lib/ecore_con/efl_net_ssl_context.c
|
||||||
src/lib/ecore_con/efl_net_ssl_ctx-gnutls.c
|
|
||||||
src/lib/ecore_con/efl_net_ssl_ctx-none.c
|
src/lib/ecore_con/efl_net_ssl_ctx-none.c
|
||||||
src/lib/ecore_con/efl_net_ssl_ctx-openssl.c
|
src/lib/ecore_con/efl_net_ssl_ctx-openssl.c
|
||||||
src/lib/ecore_drm2/ecore_drm2.c
|
src/lib/ecore_drm2/ecore_drm2.c
|
||||||
|
@ -2484,7 +2481,6 @@ src/lib/embryo/embryo_time.c
|
||||||
src/lib/emile/emile_base64.c
|
src/lib/emile/emile_base64.c
|
||||||
src/lib/emile/emile_base64.h
|
src/lib/emile/emile_base64.h
|
||||||
src/lib/emile/emile_cipher.c
|
src/lib/emile/emile_cipher.c
|
||||||
src/lib/emile/emile_cipher_gnutls.c
|
|
||||||
src/lib/emile/emile_cipher.h
|
src/lib/emile/emile_cipher.h
|
||||||
src/lib/emile/emile_cipher_openssl.c
|
src/lib/emile/emile_cipher_openssl.c
|
||||||
src/lib/emile/emile_compress.c
|
src/lib/emile/emile_compress.c
|
||||||
|
@ -3164,6 +3160,7 @@ src/modules/evas/image_loaders/heif/evas_image_load_heif.c
|
||||||
src/modules/evas/image_loaders/ico/evas_image_load_ico.c
|
src/modules/evas/image_loaders/ico/evas_image_load_ico.c
|
||||||
src/modules/evas/image_loaders/jp2k/evas_image_load_jp2k.c
|
src/modules/evas/image_loaders/jp2k/evas_image_load_jp2k.c
|
||||||
src/modules/evas/image_loaders/jpeg/evas_image_load_jpeg.c
|
src/modules/evas/image_loaders/jpeg/evas_image_load_jpeg.c
|
||||||
|
src/modules/evas/image_loaders/jxl/evas_image_load_jxl.c
|
||||||
src/modules/evas/image_loaders/pmaps/evas_image_load_pmaps.c
|
src/modules/evas/image_loaders/pmaps/evas_image_load_pmaps.c
|
||||||
src/modules/evas/image_loaders/png/evas_image_load_png.c
|
src/modules/evas/image_loaders/png/evas_image_load_png.c
|
||||||
src/modules/evas/image_loaders/psd/evas_image_load_psd.c
|
src/modules/evas/image_loaders/psd/evas_image_load_psd.c
|
||||||
|
|
|
@ -0,0 +1,276 @@
|
||||||
|
# Georgian translation for Efl.
|
||||||
|
# Copyright (C) 2022 Enlightenment development team
|
||||||
|
# This file is put in the public domain.
|
||||||
|
# Temuri Doghonadze <temuri.doghonadze@gmail.com>, 2022.
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: elementary 1.11\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2020-04-19 16:13+0200\n"
|
||||||
|
"PO-Revision-Date: 2022-10-25 10:16+0200\n"
|
||||||
|
"Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>\n"
|
||||||
|
"Language-Team: Georgian <(nothing)>\n"
|
||||||
|
"Language: ka\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
"X-Generator: Poedit 3.2\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:85
|
||||||
|
msgid "Version:"
|
||||||
|
msgstr "ვერსია:"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:94
|
||||||
|
msgid "Usage:"
|
||||||
|
msgstr "გამოყენება:"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:101
|
||||||
|
#, c-format
|
||||||
|
msgid "%s [options]"
|
||||||
|
msgstr "%s [პარამეტრები]"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:301
|
||||||
|
msgid "Copyright:"
|
||||||
|
msgstr "უფლებები:"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:313
|
||||||
|
msgid "License:"
|
||||||
|
msgstr "ლიცენზია:"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:499
|
||||||
|
msgid "Type: "
|
||||||
|
msgstr "ტიპი: "
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:575
|
||||||
|
msgid "Default: "
|
||||||
|
msgstr "ნაგულისხმები: "
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:602
|
||||||
|
msgid "Choices: "
|
||||||
|
msgstr "არჩევანი: "
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:640 src/lib/ecore/ecore_getopt.c:641
|
||||||
|
msgid "No categories available."
|
||||||
|
msgstr "კატეგორიები ხელმიუწვდომელია."
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:645
|
||||||
|
msgid "Categories: "
|
||||||
|
msgstr "კატეგორიები: "
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:767
|
||||||
|
msgid "Options:\n"
|
||||||
|
msgstr "პარამეტრები:\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:776
|
||||||
|
msgid "Positional arguments:\n"
|
||||||
|
msgstr "პოზიციური არგუმენტები:\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:843
|
||||||
|
#, c-format
|
||||||
|
msgid "ERROR: unknown category '%s'.\n"
|
||||||
|
msgstr "შეცდომა: უცნობი კატეგორია '%s'.\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:947
|
||||||
|
#, c-format
|
||||||
|
msgid "ERROR: unknown option --%s.\n"
|
||||||
|
msgstr "შეცდომა: უცნობი პარამეტრი --%s.\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:949
|
||||||
|
#, c-format
|
||||||
|
msgid "ERROR: unknown option -%c.\n"
|
||||||
|
msgstr "შეცდომა: უცნობი პარამეტრი -%c.\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:1012
|
||||||
|
msgid "ERROR: "
|
||||||
|
msgstr "შეცდომა: "
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:1108 src/lib/ecore/ecore_getopt.c:1245
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:1261 src/lib/ecore/ecore_getopt.c:1276
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:1296 src/lib/ecore/ecore_getopt.c:1343
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:1463 src/lib/ecore/ecore_getopt.c:1504
|
||||||
|
msgid "value has no pointer set.\n"
|
||||||
|
msgstr "მნიშვნელობას მაჩვენებელი დაყენებული არ აქვს.\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:1140 src/lib/ecore/ecore_getopt.c:1363
|
||||||
|
#, c-format
|
||||||
|
msgid "unknown boolean value %s.\n"
|
||||||
|
msgstr "უცნობი ლოგიკური მნიშვნელობა %s.\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:1191 src/lib/ecore/ecore_getopt.c:1451
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid number format %s\n"
|
||||||
|
msgstr "რიცხვის არასწორი ფორმატი %s\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:1309
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid choice \"%s\". Valid values are: "
|
||||||
|
msgstr "არასწორი არჩევანი \"%s\". სწორი მნიშვნელობებია: "
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:1337
|
||||||
|
msgid "missing parameter to append.\n"
|
||||||
|
msgstr "მისაწერი გამორჩენილი პარამეტრი.\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:1441
|
||||||
|
msgid "could not parse value.\n"
|
||||||
|
msgstr "მნიშვნელობის დამუშავების შეცდომა.\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:1498
|
||||||
|
msgid "missing parameter.\n"
|
||||||
|
msgstr "ნაკლული პარამეტრი.\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:1511
|
||||||
|
msgid "missing callback function!\n"
|
||||||
|
msgstr "ნაკლული უკუგამოძახების ფუნქცია!\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:1542
|
||||||
|
msgid "no version was defined.\n"
|
||||||
|
msgstr "ვერსია აღწერილი არაა.\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:1559
|
||||||
|
msgid "no copyright was defined.\n"
|
||||||
|
msgstr "საავტორო უფლებები აღწერილი არაა.\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:1576
|
||||||
|
msgid "no license was defined.\n"
|
||||||
|
msgstr "ლიცენზია აღწერილი არაა.\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:1666
|
||||||
|
#, c-format
|
||||||
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
|
msgstr "შეცდომა: უცნობი პარამეტრი --%s. იგნორირებულია.\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:1706
|
||||||
|
#, c-format
|
||||||
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
|
msgstr "შეცდომა: პარამეტრისთვის --%s არგუმენტი აუცილებელია!\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:1748
|
||||||
|
#, c-format
|
||||||
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
|
msgstr "შეცდომა: უცნობი პარამეტრი -%c, იგნორირებულია.\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:1793
|
||||||
|
#, c-format
|
||||||
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
|
msgstr "შეცდომა: პარამეტრისთვის -%c არგუმენტი აუცილებელია!\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:1888
|
||||||
|
#, c-format
|
||||||
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
|
msgstr "შეცდომა: ნაკლული აუცილებელი პოზიციური არგუმენტი %s.\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:1920
|
||||||
|
#, c-format
|
||||||
|
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
||||||
|
msgstr ""
|
||||||
|
"შეცდომა: ქმედების მხარდაუჭერელი ტიპი (%d) პოზიციური არგუმენტისთვის %s\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:2041 src/lib/ecore/ecore_getopt.c:2107
|
||||||
|
msgid "ERROR: no parser provided.\n"
|
||||||
|
msgstr "შეცდომა: დამმუშავებელი მოწოდებული არაა.\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:2046 src/lib/ecore/ecore_getopt.c:2112
|
||||||
|
msgid "ERROR: no values provided.\n"
|
||||||
|
msgstr "შეცდომა: მნიშვნელობები მითითებული არაა.\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:2055 src/lib/ecore/ecore_getopt.c:2121
|
||||||
|
msgid "ERROR: no arguments provided.\n"
|
||||||
|
msgstr "შეცდომა: არგუმენტები მითითებული არაა.\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:2081
|
||||||
|
msgid "ERROR: invalid options found."
|
||||||
|
msgstr "შეცდომა: აღმოჩენილია არასწორი პარამეტრები."
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:2087 src/lib/ecore/ecore_getopt.c:2154
|
||||||
|
#, c-format
|
||||||
|
msgid " See --%s.\n"
|
||||||
|
msgstr " იხილეთ --%s.\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:2089 src/lib/ecore/ecore_getopt.c:2156
|
||||||
|
#, c-format
|
||||||
|
msgid " See -%c.\n"
|
||||||
|
msgstr " იხილეთ -%c.\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:2148
|
||||||
|
msgid "ERROR: invalid positional arguments found."
|
||||||
|
msgstr "შეცდომა: ნაპოვნია არასწორი პოზიციური არგუმენტები."
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:2183
|
||||||
|
#, c-format
|
||||||
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
|
msgstr "შეცდომა: გეომეტრიის არასწორი მნიშვნელობა '%s'\n"
|
||||||
|
|
||||||
|
#: src/lib/ecore/ecore_getopt.c:2201
|
||||||
|
#, c-format
|
||||||
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
|
msgstr "შეცდომა: ზომის არასწორი მნიშვნელობა '%s'\n"
|
||||||
|
|
||||||
|
#: src/lib/efreet/efreet_base.c:127
|
||||||
|
msgid "Desktop"
|
||||||
|
msgstr "სამუშაო მაგიდა"
|
||||||
|
|
||||||
|
#: src/lib/efreet/efreet_base.c:135
|
||||||
|
msgid "Downloads"
|
||||||
|
msgstr "გადმოწერები"
|
||||||
|
|
||||||
|
#: src/lib/efreet/efreet_base.c:144
|
||||||
|
msgid "Templates"
|
||||||
|
msgstr "შაბლონები"
|
||||||
|
|
||||||
|
#: src/lib/efreet/efreet_base.c:153
|
||||||
|
msgid "Public"
|
||||||
|
msgstr "საჯარო"
|
||||||
|
|
||||||
|
#: src/lib/efreet/efreet_base.c:162
|
||||||
|
msgid "Documents"
|
||||||
|
msgstr "დოკუმენტები"
|
||||||
|
|
||||||
|
#: src/lib/efreet/efreet_base.c:170
|
||||||
|
msgid "Music"
|
||||||
|
msgstr "მუსიკა"
|
||||||
|
|
||||||
|
#: src/lib/efreet/efreet_base.c:178
|
||||||
|
msgid "Pictures"
|
||||||
|
msgstr "სურათები"
|
||||||
|
|
||||||
|
#: src/lib/efreet/efreet_base.c:186
|
||||||
|
msgid "Videos"
|
||||||
|
msgstr "ვიდეო"
|
||||||
|
|
||||||
|
#: src/lib/evas/common/language/evas_language_utils.c:205
|
||||||
|
msgid "default:LTR"
|
||||||
|
msgstr "default:LTR"
|
||||||
|
|
||||||
|
#: src/lib/elementary/elc_naviframe.c:408
|
||||||
|
msgid "Title"
|
||||||
|
msgstr "სათაური"
|
||||||
|
|
||||||
|
#: src/lib/elementary/elc_naviframe.c:415
|
||||||
|
msgid "Subtitle"
|
||||||
|
msgstr "სუბტიტრები"
|
||||||
|
|
||||||
|
#: src/lib/elementary/elc_naviframe.c:966
|
||||||
|
msgid "Back"
|
||||||
|
msgstr "უკან"
|
||||||
|
|
||||||
|
#: src/lib/elementary/elc_fileselector.c:1755
|
||||||
|
msgid "Up"
|
||||||
|
msgstr "მაღლა"
|
||||||
|
|
||||||
|
#: src/lib/elementary/elc_fileselector.c:1769
|
||||||
|
msgid "Home"
|
||||||
|
msgstr "საწყისი"
|
||||||
|
|
||||||
|
#: src/lib/elementary/elc_fileselector.c:1787
|
||||||
|
msgid "Search"
|
||||||
|
msgstr "ძებნა"
|
||||||
|
|
||||||
|
#: src/lib/elementary/elc_fileselector.c:2061
|
||||||
|
msgid "OK"
|
||||||
|
msgstr "დიახ"
|
||||||
|
|
||||||
|
#: src/lib/elementary/elc_fileselector.c:2070
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr "გაუქმება"
|
||||||
|
|
112
po/ru.po
112
po/ru.po
|
@ -3,15 +3,15 @@
|
||||||
# This file is put in the public domain.
|
# This file is put in the public domain.
|
||||||
# Danny Moshnakov <dm@agent.co.il>, 2012.
|
# Danny Moshnakov <dm@agent.co.il>, 2012.
|
||||||
# Igor Murzov <garik@efl.so>, 2015.
|
# Igor Murzov <garik@efl.so>, 2015.
|
||||||
|
# Dmitri Chudinov <dmitri.chudinov@gmail.com>, 2022.
|
||||||
#
|
#
|
||||||
#: src/lib/elementary/elm_config.c:4267
|
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: elementary 1.11\n"
|
"Project-Id-Version: elementary 1.11\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2020-04-19 16:13+0200\n"
|
"POT-Creation-Date: 2020-04-19 16:13+0200\n"
|
||||||
"PO-Revision-Date: 2015-02-07 15:16+0300\n"
|
"PO-Revision-Date: 2022-06-07 11:55+0500\n"
|
||||||
"Last-Translator: Игорь Мурзов <garik@efl.so>\n"
|
"Last-Translator: Дмитрий Чудинов <dmitri.chudinov@gmail.com>\n"
|
||||||
"Language-Team: ru <enlightenment-intl@lists.sourceforge.net>\n"
|
"Language-Team: ru <enlightenment-intl@lists.sourceforge.net>\n"
|
||||||
"Language: ru\n"
|
"Language: ru\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
|
@ -22,191 +22,192 @@ msgstr ""
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:85
|
#: src/lib/ecore/ecore_getopt.c:85
|
||||||
msgid "Version:"
|
msgid "Version:"
|
||||||
msgstr ""
|
msgstr "Версия:"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:94
|
#: src/lib/ecore/ecore_getopt.c:94
|
||||||
msgid "Usage:"
|
msgid "Usage:"
|
||||||
msgstr ""
|
msgstr "Пример использования:"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:101
|
#: src/lib/ecore/ecore_getopt.c:101
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s [options]"
|
msgid "%s [options]"
|
||||||
msgstr ""
|
msgstr "%s [опций]"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:301
|
#: src/lib/ecore/ecore_getopt.c:301
|
||||||
msgid "Copyright:"
|
msgid "Copyright:"
|
||||||
msgstr ""
|
msgstr "Копирайт:"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:313
|
#: src/lib/ecore/ecore_getopt.c:313
|
||||||
msgid "License:"
|
msgid "License:"
|
||||||
msgstr ""
|
msgstr "Лицензия:"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:499
|
#: src/lib/ecore/ecore_getopt.c:499
|
||||||
msgid "Type: "
|
msgid "Type: "
|
||||||
msgstr ""
|
msgstr "Тип: "
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:575
|
#: src/lib/ecore/ecore_getopt.c:575
|
||||||
msgid "Default: "
|
msgid "Default: "
|
||||||
msgstr ""
|
msgstr "По умолчанию: "
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:602
|
#: src/lib/ecore/ecore_getopt.c:602
|
||||||
msgid "Choices: "
|
msgid "Choices: "
|
||||||
msgstr ""
|
msgstr "Варианты: "
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:640 src/lib/ecore/ecore_getopt.c:641
|
#: src/lib/ecore/ecore_getopt.c:640 src/lib/ecore/ecore_getopt.c:641
|
||||||
msgid "No categories available."
|
msgid "No categories available."
|
||||||
msgstr ""
|
msgstr "Нет доступных категорий."
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:645
|
#: src/lib/ecore/ecore_getopt.c:645
|
||||||
msgid "Categories: "
|
msgid "Categories: "
|
||||||
msgstr ""
|
msgstr "Категории: "
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:767
|
#: src/lib/ecore/ecore_getopt.c:767
|
||||||
msgid "Options:\n"
|
msgid "Options:\n"
|
||||||
msgstr ""
|
msgstr "Опции:\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:776
|
#: src/lib/ecore/ecore_getopt.c:776
|
||||||
msgid "Positional arguments:\n"
|
msgid "Positional arguments:\n"
|
||||||
msgstr ""
|
msgstr "Позиционные аргументы:\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:843
|
#: src/lib/ecore/ecore_getopt.c:843
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unknown category '%s'.\n"
|
msgid "ERROR: unknown category '%s'.\n"
|
||||||
msgstr ""
|
msgstr "ОШИБКА: неизвестная категория '%s'.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:947
|
#: src/lib/ecore/ecore_getopt.c:947
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unknown option --%s.\n"
|
msgid "ERROR: unknown option --%s.\n"
|
||||||
msgstr ""
|
msgstr "ОШИБКА: неизвестная опция --%s.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:949
|
#: src/lib/ecore/ecore_getopt.c:949
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c.\n"
|
msgid "ERROR: unknown option -%c.\n"
|
||||||
msgstr ""
|
msgstr "ОШИБКА: неизвестная опция -%c.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1012
|
#: src/lib/ecore/ecore_getopt.c:1012
|
||||||
msgid "ERROR: "
|
msgid "ERROR: "
|
||||||
msgstr ""
|
msgstr "ОШИБКА: "
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1108 src/lib/ecore/ecore_getopt.c:1245
|
#: src/lib/ecore/ecore_getopt.c:1108 src/lib/ecore/ecore_getopt.c:1245
|
||||||
#: src/lib/ecore/ecore_getopt.c:1261 src/lib/ecore/ecore_getopt.c:1276
|
#: src/lib/ecore/ecore_getopt.c:1261 src/lib/ecore/ecore_getopt.c:1276
|
||||||
#: src/lib/ecore/ecore_getopt.c:1296 src/lib/ecore/ecore_getopt.c:1343
|
#: src/lib/ecore/ecore_getopt.c:1296 src/lib/ecore/ecore_getopt.c:1343
|
||||||
#: src/lib/ecore/ecore_getopt.c:1463 src/lib/ecore/ecore_getopt.c:1504
|
#: src/lib/ecore/ecore_getopt.c:1463 src/lib/ecore/ecore_getopt.c:1504
|
||||||
msgid "value has no pointer set.\n"
|
msgid "value has no pointer set.\n"
|
||||||
msgstr ""
|
msgstr "значение не имеет установленного указателя.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1140 src/lib/ecore/ecore_getopt.c:1363
|
#: src/lib/ecore/ecore_getopt.c:1140 src/lib/ecore/ecore_getopt.c:1363
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unknown boolean value %s.\n"
|
msgid "unknown boolean value %s.\n"
|
||||||
msgstr ""
|
msgstr "неизвестное булево значение %s.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1191 src/lib/ecore/ecore_getopt.c:1451
|
#: src/lib/ecore/ecore_getopt.c:1191 src/lib/ecore/ecore_getopt.c:1451
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "invalid number format %s\n"
|
msgid "invalid number format %s\n"
|
||||||
msgstr ""
|
msgstr "неверный формат числа %s\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1309
|
#: src/lib/ecore/ecore_getopt.c:1309
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "invalid choice \"%s\". Valid values are: "
|
msgid "invalid choice \"%s\". Valid values are: "
|
||||||
msgstr ""
|
msgstr "недопустимый выбор \"%s\". Допустимыми значениями являются: "
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1337
|
#: src/lib/ecore/ecore_getopt.c:1337
|
||||||
msgid "missing parameter to append.\n"
|
msgid "missing parameter to append.\n"
|
||||||
msgstr ""
|
msgstr "недостающий параметр для добавления.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1441
|
#: src/lib/ecore/ecore_getopt.c:1441
|
||||||
msgid "could not parse value.\n"
|
msgid "could not parse value.\n"
|
||||||
msgstr ""
|
msgstr "не удалось разобрать значение.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1498
|
#: src/lib/ecore/ecore_getopt.c:1498
|
||||||
msgid "missing parameter.\n"
|
msgid "missing parameter.\n"
|
||||||
msgstr ""
|
msgstr "отсутствует параметр\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1511
|
#: src/lib/ecore/ecore_getopt.c:1511
|
||||||
msgid "missing callback function!\n"
|
msgid "missing callback function!\n"
|
||||||
msgstr ""
|
msgstr "отсутствует функция вызова (callback)\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1542
|
#: src/lib/ecore/ecore_getopt.c:1542
|
||||||
msgid "no version was defined.\n"
|
msgid "no version was defined.\n"
|
||||||
msgstr ""
|
msgstr "версия не определена\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1559
|
#: src/lib/ecore/ecore_getopt.c:1559
|
||||||
msgid "no copyright was defined.\n"
|
msgid "no copyright was defined.\n"
|
||||||
msgstr ""
|
msgstr "копирайт не определен\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1576
|
#: src/lib/ecore/ecore_getopt.c:1576
|
||||||
msgid "no license was defined.\n"
|
msgid "no license was defined.\n"
|
||||||
msgstr ""
|
msgstr "лицензия не определена\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1666
|
#: src/lib/ecore/ecore_getopt.c:1666
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unknown option --%s, ignored.\n"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr ""
|
msgstr "ОШИБКА: неизвестная опция --%s, проигнорировано\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1706
|
#: src/lib/ecore/ecore_getopt.c:1706
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr ""
|
msgstr "ОШИБКА: для опции --%s требуется указать аргумент!\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1748
|
#: src/lib/ecore/ecore_getopt.c:1748
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr ""
|
msgstr "ОШИБКА: неизвестная опция -%c, проигнорировано.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1793
|
#: src/lib/ecore/ecore_getopt.c:1793
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr ""
|
msgstr "ОШИБКА: для опции -%c требуется указать аргумент!\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1888
|
#: src/lib/ecore/ecore_getopt.c:1888
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr ""
|
msgstr "ОШИБКА: отсутствует необходимый позиционный аргумент %s.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1920
|
#: src/lib/ecore/ecore_getopt.c:1920
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"ОШИБКА: неподдерживаемый тип действия %d для позиционного аргумента %s\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2041 src/lib/ecore/ecore_getopt.c:2107
|
#: src/lib/ecore/ecore_getopt.c:2041 src/lib/ecore/ecore_getopt.c:2107
|
||||||
msgid "ERROR: no parser provided.\n"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr ""
|
msgstr "ОШИБКА: не предоставлен анализатор (parser).\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2046 src/lib/ecore/ecore_getopt.c:2112
|
#: src/lib/ecore/ecore_getopt.c:2046 src/lib/ecore/ecore_getopt.c:2112
|
||||||
msgid "ERROR: no values provided.\n"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr ""
|
msgstr "ОШИБКА: не предоставлены значения.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2055 src/lib/ecore/ecore_getopt.c:2121
|
#: src/lib/ecore/ecore_getopt.c:2055 src/lib/ecore/ecore_getopt.c:2121
|
||||||
msgid "ERROR: no arguments provided.\n"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr ""
|
msgstr "ОШИБКА: не предоставлены аргументы.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2081
|
#: src/lib/ecore/ecore_getopt.c:2081
|
||||||
msgid "ERROR: invalid options found."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr ""
|
msgstr "ОШИБКА: обнаружены недопустимые опции."
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2087 src/lib/ecore/ecore_getopt.c:2154
|
#: src/lib/ecore/ecore_getopt.c:2087 src/lib/ecore/ecore_getopt.c:2154
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr ""
|
msgstr " Смотри --%s.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2089 src/lib/ecore/ecore_getopt.c:2156
|
#: src/lib/ecore/ecore_getopt.c:2089 src/lib/ecore/ecore_getopt.c:2156
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr ""
|
msgstr " Смотри --%c.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2148
|
#: src/lib/ecore/ecore_getopt.c:2148
|
||||||
msgid "ERROR: invalid positional arguments found."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr ""
|
msgstr "ОШИБКА: найдены недопустимые позиционные аргументы."
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2183
|
#: src/lib/ecore/ecore_getopt.c:2183
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr ""
|
msgstr "ОШИБКА: некорректное значение геометрии '%s'\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2201
|
#: src/lib/ecore/ecore_getopt.c:2201
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr ""
|
msgstr "ОШИБКА: некорректное значение размера '%s'\n"
|
||||||
|
|
||||||
#: src/lib/efreet/efreet_base.c:127
|
#: src/lib/efreet/efreet_base.c:127
|
||||||
msgid "Desktop"
|
msgid "Desktop"
|
||||||
|
@ -222,7 +223,7 @@ msgstr "Шаблоны"
|
||||||
|
|
||||||
#: src/lib/efreet/efreet_base.c:153
|
#: src/lib/efreet/efreet_base.c:153
|
||||||
msgid "Public"
|
msgid "Public"
|
||||||
msgstr "Общий каталог"
|
msgstr "Открытый"
|
||||||
|
|
||||||
#: src/lib/efreet/efreet_base.c:162
|
#: src/lib/efreet/efreet_base.c:162
|
||||||
msgid "Documents"
|
msgid "Documents"
|
||||||
|
@ -249,9 +250,8 @@ msgid "Title"
|
||||||
msgstr "Заголовок"
|
msgstr "Заголовок"
|
||||||
|
|
||||||
#: src/lib/elementary/elc_naviframe.c:415
|
#: src/lib/elementary/elc_naviframe.c:415
|
||||||
#, fuzzy
|
|
||||||
msgid "Subtitle"
|
msgid "Subtitle"
|
||||||
msgstr "Заголовок"
|
msgstr "Подзаголовок"
|
||||||
|
|
||||||
#: src/lib/elementary/elc_naviframe.c:966
|
#: src/lib/elementary/elc_naviframe.c:966
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
|
@ -263,7 +263,7 @@ msgstr "Вверх"
|
||||||
|
|
||||||
#: src/lib/elementary/elc_fileselector.c:1769
|
#: src/lib/elementary/elc_fileselector.c:1769
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Дом"
|
msgstr "Главная"
|
||||||
|
|
||||||
#: src/lib/elementary/elc_fileselector.c:1787
|
#: src/lib/elementary/elc_fileselector.c:1787
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
|
@ -281,16 +281,16 @@ msgstr "Отмена"
|
||||||
#~ msgstr "Состояние: Отключено"
|
#~ msgstr "Состояние: Отключено"
|
||||||
|
|
||||||
#~ msgid "multi button entry label"
|
#~ msgid "multi button entry label"
|
||||||
#~ msgstr "метка многокопочного элемента"
|
#~ msgstr "метка многокнопочного элемента"
|
||||||
|
|
||||||
#~ msgid "multi button entry item"
|
#~ msgid "multi button entry item"
|
||||||
#~ msgstr "кнопка многокопочного элемента"
|
#~ msgstr "кнопка многокнопочного элемента"
|
||||||
|
|
||||||
#~ msgid "multi button entry"
|
#~ msgid "multi button entry"
|
||||||
#~ msgstr "многокнопочный элемент"
|
#~ msgstr "многокнопочный элемент"
|
||||||
|
|
||||||
#~ msgid "Next"
|
#~ msgid "Next"
|
||||||
#~ msgstr "Вперёд"
|
#~ msgstr "Далее"
|
||||||
|
|
||||||
#~ msgid "Popup Title"
|
#~ msgid "Popup Title"
|
||||||
#~ msgstr "Заголовок всплывающего окна"
|
#~ msgstr "Заголовок всплывающего окна"
|
||||||
|
@ -368,7 +368,7 @@ msgstr "Отмена"
|
||||||
#~ msgstr "элемент выбора дня"
|
#~ msgstr "элемент выбора дня"
|
||||||
|
|
||||||
#~ msgid "diskselector item"
|
#~ msgid "diskselector item"
|
||||||
#~ msgstr "элемент диска выбора"
|
#~ msgstr "элемент выбора диска"
|
||||||
|
|
||||||
#~ msgid "Cut"
|
#~ msgid "Cut"
|
||||||
#~ msgstr "Вырезать"
|
#~ msgstr "Вырезать"
|
||||||
|
@ -383,7 +383,7 @@ msgstr "Отмена"
|
||||||
#~ msgstr "Выбрать"
|
#~ msgstr "Выбрать"
|
||||||
|
|
||||||
#~ msgid "Entry"
|
#~ msgid "Entry"
|
||||||
#~ msgstr "Запись"
|
#~ msgstr "Ввод"
|
||||||
|
|
||||||
#~ msgid "Index"
|
#~ msgid "Index"
|
||||||
#~ msgstr "Алфавитный указатель"
|
#~ msgstr "Алфавитный указатель"
|
||||||
|
@ -419,7 +419,7 @@ msgstr "Отмена"
|
||||||
#~ msgstr "Состояние: Выбрано"
|
#~ msgstr "Состояние: Выбрано"
|
||||||
|
|
||||||
#~ msgid "State: Unselected"
|
#~ msgid "State: Unselected"
|
||||||
#~ msgstr "Состояние: Невыбрано"
|
#~ msgstr "Состояние: Не выбрано"
|
||||||
|
|
||||||
#~ msgid "Segment Control Item"
|
#~ msgid "Segment Control Item"
|
||||||
#~ msgstr "Элемент сегментного элемента управления"
|
#~ msgstr "Элемент сегментного элемента управления"
|
||||||
|
@ -438,7 +438,7 @@ msgstr "Отмена"
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#~ msgid "spinner text"
|
#~ msgid "spinner text"
|
||||||
#~ msgstr "счётчик"
|
#~ msgstr "текст счётчика"
|
||||||
|
|
||||||
#~ msgid "Selected"
|
#~ msgid "Selected"
|
||||||
#~ msgstr "Выбрано"
|
#~ msgstr "Выбрано"
|
||||||
|
@ -450,7 +450,7 @@ msgstr "Отмена"
|
||||||
#~ msgstr "С меню"
|
#~ msgstr "С меню"
|
||||||
|
|
||||||
#~ msgid "Unselected"
|
#~ msgid "Unselected"
|
||||||
#~ msgstr "Невыбрано"
|
#~ msgstr "Не выбраноы"
|
||||||
|
|
||||||
#~ msgid "Toolbar Item"
|
#~ msgid "Toolbar Item"
|
||||||
#~ msgstr "Элемент панели инструментов"
|
#~ msgstr "Элемент панели инструментов"
|
||||||
|
|
|
@ -4151,7 +4151,7 @@ do_xifdef(cpp_reader * pfile, struct directive *keyword,
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
/* Detect a #ifndef at start of file (not counting comments). */
|
/* Detect a #ifndef at start of file (not counting comments). */
|
||||||
if (ip->fname != 0 && keyword->type == T_IFNDEF)
|
if (ip->fname != NULL && keyword->type == T_IFNDEF)
|
||||||
start_of_file = pfile->only_seen_white == 2;
|
start_of_file = pfile->only_seen_white == 2;
|
||||||
|
|
||||||
pfile->no_macro_expand++;
|
pfile->no_macro_expand++;
|
||||||
|
|
|
@ -2,10 +2,6 @@
|
||||||
# include <config.h>
|
# include <config.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
# include <evil_private.h> /* setenv */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <Ecore.h>
|
#include <Ecore.h>
|
||||||
#include <Ecore_Ipc.h>
|
#include <Ecore_Ipc.h>
|
||||||
|
|
||||||
|
@ -155,7 +151,16 @@ _cb_client_data(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
|
||||||
fflush(efreetd_log_file);
|
fflush(efreetd_log_file);
|
||||||
if ((s = _parse_str(e->data, e->size)))
|
if ((s = _parse_str(e->data, e->size)))
|
||||||
{
|
{
|
||||||
setenv("LANG", s, 1);
|
char envlang[128], *env;
|
||||||
|
|
||||||
|
env = getenv("LANG");
|
||||||
|
if (!((env) && (!strcmp(env, s))))
|
||||||
|
{
|
||||||
|
snprintf(envlang, sizeof(envlang), "LANG=%s", s);
|
||||||
|
env = strdup(envlang);
|
||||||
|
putenv(env);
|
||||||
|
/* leak env intentionnally */
|
||||||
|
}
|
||||||
free(s);
|
free(s);
|
||||||
}
|
}
|
||||||
// return if desktop cache exists (bool as minor)
|
// return if desktop cache exists (bool as minor)
|
||||||
|
@ -179,7 +184,16 @@ _cb_client_data(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
|
||||||
fflush(efreetd_log_file);
|
fflush(efreetd_log_file);
|
||||||
if ((s = _parse_str(e->data, e->size)))
|
if ((s = _parse_str(e->data, e->size)))
|
||||||
{
|
{
|
||||||
setenv("LANG", s, 1);
|
char envlang[128], *env;
|
||||||
|
|
||||||
|
env = getenv("LANG");
|
||||||
|
if (!((env) && (!strcmp(env, s))))
|
||||||
|
{
|
||||||
|
snprintf(envlang, sizeof(envlang), "LANG=%s", s);
|
||||||
|
env = strdup(envlang);
|
||||||
|
putenv(env);
|
||||||
|
/* leak env intentionnally */
|
||||||
|
}
|
||||||
free(s);
|
free(s);
|
||||||
}
|
}
|
||||||
cache_desktop_update();
|
cache_desktop_update();
|
||||||
|
|
|
@ -2029,7 +2029,7 @@ _status_config_etc(Evas_Object *win,
|
||||||
elm_check_state_set(ck, elm_config_desktop_entry_get());
|
elm_check_state_set(ck, elm_config_desktop_entry_get());
|
||||||
|
|
||||||
// desktop_entry
|
// desktop_entry
|
||||||
CHECK_ADD("Entry Mangifiers", "Set popup magnifiers on start/end selection handles in entries", mag_change, NULL);
|
CHECK_ADD("Entry Magnifiers", "Set popup magnifiers on start/end selection handles in entries", mag_change, NULL);
|
||||||
elm_check_state_set(ck, elm_config_magnifier_enable_get());
|
elm_check_state_set(ck, elm_config_magnifier_enable_get());
|
||||||
|
|
||||||
// access
|
// access
|
||||||
|
|
|
@ -31,6 +31,7 @@ _selection(void *data, Evas_Object *obj EINA_UNUSED, Elm_Selection_Data *ev)
|
||||||
case ELM_SEL_FORMAT_IMAGE: fmt = "IMAGE"; break;
|
case ELM_SEL_FORMAT_IMAGE: fmt = "IMAGE"; break;
|
||||||
case ELM_SEL_FORMAT_VCARD: fmt = "VCARD"; break;
|
case ELM_SEL_FORMAT_VCARD: fmt = "VCARD"; break;
|
||||||
case ELM_SEL_FORMAT_HTML: fmt = "HTML"; break;
|
case ELM_SEL_FORMAT_HTML: fmt = "HTML"; break;
|
||||||
|
case ELM_SEL_FORMAT_URILIST: fmt = "URILIST"; break;
|
||||||
}
|
}
|
||||||
fprintf(stderr, "got selection type '%s': length %zu\n", fmt, ev->len);
|
fprintf(stderr, "got selection type '%s': length %zu\n", fmt, ev->len);
|
||||||
|
|
||||||
|
|
|
@ -475,7 +475,7 @@ _list_item_cb11(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_
|
||||||
{
|
{
|
||||||
Evas_Object *ctxpopup;
|
Evas_Object *ctxpopup;
|
||||||
Evas_Coord x,y;
|
Evas_Coord x,y;
|
||||||
char label[16];
|
char label[18];
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
if (list_mouse_down > 0) return;
|
if (list_mouse_down > 0) return;
|
||||||
|
|
|
@ -33,7 +33,6 @@
|
||||||
/ecore_exe_example
|
/ecore_exe_example
|
||||||
/ecore_exe_example_child
|
/ecore_exe_example_child
|
||||||
/ecore_fd_handler_example
|
/ecore_fd_handler_example
|
||||||
/ecore_fd_handler_gnutls_example
|
|
||||||
/ecore_file_download_example
|
/ecore_file_download_example
|
||||||
/ecore_getopt_example
|
/ecore_getopt_example
|
||||||
/ecore_idler_example
|
/ecore_idler_example
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
// Compile with:
|
// Compile with:
|
||||||
// gcc -o ecore_audio_custom ecore_audio_custom.c `pkg-config --libs --cflags ecore ecore-audio`
|
// gcc -o ecore_audio_custom ecore_audio_custom.c `pkg-config --libs --cflags ecore ecore-audio`
|
||||||
|
#define EFL_BETA_API_SUPPORT
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
@ -25,7 +26,7 @@ int read_cb(void *data EINA_UNUSED, Eo *eo_obj, void *buf, int len)
|
||||||
float *val = buf;
|
float *val = buf;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
ecore_audio_obj_volume_get(eo_obj, &volume);
|
volume = ecore_audio_obj_volume_get(eo_obj);
|
||||||
|
|
||||||
for(i=0; i<len/4; i++, phase1++)
|
for(i=0; i<len/4; i++, phase1++)
|
||||||
{
|
{
|
||||||
|
@ -56,9 +57,9 @@ main(int argc, const char *argv[])
|
||||||
|
|
||||||
ecore_app_args_set(argc, argv);
|
ecore_app_args_set(argc, argv);
|
||||||
|
|
||||||
out = efl_add_ref(ECORE_AUDIO_OBJ_OUT_PULSE_CLASS, NULL);
|
out = efl_add_ref(ECORE_AUDIO_OUT_PULSE_CLASS, NULL);
|
||||||
|
|
||||||
in = efl_add_ref(ECORE_AUDIO_OBJ_IN_CLASS, NULL);
|
in = efl_add_ref(ECORE_AUDIO_IN_CLASS, NULL);
|
||||||
if (!in)
|
if (!in)
|
||||||
{
|
{
|
||||||
printf("error when creating ecore audio source.\n");
|
printf("error when creating ecore audio source.\n");
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
// Compile with:
|
// Compile with:
|
||||||
// gcc -o ecore_audio_playback ecore_audio_playback.c `pkg-config --libs --cflags ecore eina ecore-audio`
|
// gcc -o ecore_audio_playback ecore_audio_playback.c `pkg-config --libs --cflags ecore eina ecore-audio`
|
||||||
|
#define EFL_BETA_API_SUPPORT
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -9,6 +10,7 @@
|
||||||
#include <termios.h>
|
#include <termios.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
|
||||||
#include <Ecore.h>
|
#include <Ecore.h>
|
||||||
#include <Ecore_Audio.h>
|
#include <Ecore_Audio.h>
|
||||||
#include <Eina.h>
|
#include <Eina.h>
|
||||||
|
@ -30,19 +32,19 @@ handle_cmd(char *cmd, size_t bread)
|
||||||
if (!out)
|
if (!out)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ecore_audio_obj_out_inputs_get(out, &out_inputs);
|
out_inputs = ecore_audio_obj_out_inputs_get(out);
|
||||||
EINA_LIST_FOREACH(out_inputs, input, in)
|
EINA_LIST_FOREACH(out_inputs, input, in)
|
||||||
{
|
{
|
||||||
ecore_audio_obj_in_seek(in, 0, SEEK_CUR, &pos);
|
pos = ecore_audio_obj_in_seek(in, 0, SEEK_CUR);
|
||||||
if (!strncmp(cmd, "<", bread))
|
if (!strncmp(cmd, "<", bread))
|
||||||
ecore_audio_obj_in_seek(in, -10, SEEK_CUR, &pos);
|
pos = ecore_audio_obj_in_seek(in, -10, SEEK_CUR);/* */
|
||||||
else if (!strncmp(cmd, ">", bread))
|
else if (!strncmp(cmd, ">", bread))
|
||||||
ecore_audio_obj_in_seek(in, 10, SEEK_CUR, &pos);
|
pos = ecore_audio_obj_in_seek(in, 10, SEEK_CUR);
|
||||||
|
|
||||||
min = pos / 60;
|
min = pos / 60;
|
||||||
|
|
||||||
ecore_audio_obj_name_get(in, &name);
|
name = ecore_audio_obj_name_get(in);
|
||||||
ecore_audio_obj_in_length_get(in, &length);
|
length = ecore_audio_obj_in_length_get(in);
|
||||||
printf("Position: %2im %5.02fs (%0.2f%%) - %s\n", min, pos - min * 60, pos/length*100, name);
|
printf("Position: %2im %5.02fs (%0.2f%%) - %s\n", min, pos - min * 60, pos/length*100, name);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -63,8 +65,8 @@ handle_cmd(char *cmd, size_t bread)
|
||||||
{
|
{
|
||||||
in = (Eo *)eina_list_data_get(inputs);
|
in = (Eo *)eina_list_data_get(inputs);
|
||||||
|
|
||||||
ecore_audio_obj_name_get(in, &name);
|
name = ecore_audio_obj_name_get(in);
|
||||||
ecore_audio_obj_in_length_get(in, &length);
|
length = ecore_audio_obj_in_length_get(in);
|
||||||
|
|
||||||
printf("Start: %s (%0.2fs)\n", name, length);
|
printf("Start: %s (%0.2fs)\n", name, length);
|
||||||
ret = ecore_audio_obj_out_input_attach(out, in);
|
ret = ecore_audio_obj_out_input_attach(out, in);
|
||||||
|
@ -84,8 +86,8 @@ handle_cmd(char *cmd, size_t bread)
|
||||||
{
|
{
|
||||||
in = (Eo *)eina_list_data_get(inputs);
|
in = (Eo *)eina_list_data_get(inputs);
|
||||||
|
|
||||||
ecore_audio_obj_name_get(in, &name);
|
name = ecore_audio_obj_name_get(in);
|
||||||
ecore_audio_obj_in_length_get(in, &length);
|
length = ecore_audio_obj_in_length_get(in);
|
||||||
|
|
||||||
printf("Start: %s (%0.2fs)\n", name, length);
|
printf("Start: %s (%0.2fs)\n", name, length);
|
||||||
ret = ecore_audio_obj_out_input_attach(out, in);
|
ret = ecore_audio_obj_out_input_attach(out, in);
|
||||||
|
@ -98,8 +100,8 @@ handle_cmd(char *cmd, size_t bread)
|
||||||
EINA_LIST_FOREACH(out_inputs, input, in)
|
EINA_LIST_FOREACH(out_inputs, input, in)
|
||||||
{
|
{
|
||||||
Eina_Bool loop;
|
Eina_Bool loop;
|
||||||
ecore_audio_obj_in_looped_get(in, &loop);
|
loop = ecore_audio_obj_in_looped_get(in);
|
||||||
ecore_audio_obj_name_get(in, &name);
|
name = ecore_audio_obj_name_get(in);
|
||||||
|
|
||||||
printf("%s song %s\n", !loop?"Looping":"Not looping", name);
|
printf("%s song %s\n", !loop?"Looping":"Not looping", name);
|
||||||
ecore_audio_obj_in_looped_set(in, !loop);
|
ecore_audio_obj_in_looped_set(in, !loop);
|
||||||
|
@ -124,11 +126,11 @@ handle_cmd(char *cmd, size_t bread)
|
||||||
double speed;
|
double speed;
|
||||||
EINA_LIST_FOREACH(out_inputs, input, in)
|
EINA_LIST_FOREACH(out_inputs, input, in)
|
||||||
{
|
{
|
||||||
ecore_audio_obj_in_speed_get(in, &speed);
|
speed = ecore_audio_obj_in_speed_get(in);
|
||||||
if (speed < 2.0)
|
if (speed < 2.0)
|
||||||
speed += 0.01;
|
speed += 0.01;
|
||||||
ecore_audio_obj_in_speed_set(in, speed);
|
ecore_audio_obj_in_speed_set(in, speed);
|
||||||
ecore_audio_obj_name_get(in, &name);
|
name = ecore_audio_obj_name_get(in);
|
||||||
printf("Speed: %3.0f%% (%s)\n", speed * 100, name);
|
printf("Speed: %3.0f%% (%s)\n", speed * 100, name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -137,11 +139,11 @@ handle_cmd(char *cmd, size_t bread)
|
||||||
double speed;
|
double speed;
|
||||||
EINA_LIST_FOREACH(out_inputs, input, in)
|
EINA_LIST_FOREACH(out_inputs, input, in)
|
||||||
{
|
{
|
||||||
ecore_audio_obj_in_speed_get(in, &speed);
|
speed = ecore_audio_obj_in_speed_get(in);
|
||||||
if (speed > 0.5)
|
if (speed > 0.5)
|
||||||
speed -= 0.01;
|
speed -= 0.01;
|
||||||
ecore_audio_obj_in_speed_set(in, speed);
|
ecore_audio_obj_in_speed_set(in, speed);
|
||||||
ecore_audio_obj_name_get(in, &name);
|
name = ecore_audio_obj_name_get(in);
|
||||||
printf("Speed: %3.0f%% (%s)\n", speed * 100, name);
|
printf("Speed: %3.0f%% (%s)\n", speed * 100, name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -149,9 +151,9 @@ handle_cmd(char *cmd, size_t bread)
|
||||||
{
|
{
|
||||||
EINA_LIST_FOREACH(out_inputs, input, in)
|
EINA_LIST_FOREACH(out_inputs, input, in)
|
||||||
{
|
{
|
||||||
ecore_audio_obj_paused_get(in, &paused);
|
paused = ecore_audio_obj_paused_get(in);
|
||||||
ecore_audio_obj_name_get(in, &name);
|
name = ecore_audio_obj_name_get(in);
|
||||||
ecore_audio_obj_in_remaining_get(in, &length);
|
length = ecore_audio_obj_in_remaining_get(in);
|
||||||
printf("%s %s\n%0.2f remaining\n", !paused ? "Paused" : "Unpaused", name, length);
|
printf("%s %s\n%0.2f remaining\n", !paused ? "Paused" : "Unpaused", name, length);
|
||||||
ecore_audio_obj_paused_set(in, !paused);
|
ecore_audio_obj_paused_set(in, !paused);
|
||||||
}
|
}
|
||||||
|
@ -191,12 +193,13 @@ handle_input(void *data EINA_UNUSED, Ecore_Fd_Handler *handler)
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _play_finished(void *data EINA_UNUSED, const Efl_Event *event)
|
static void
|
||||||
|
_play_finished(void *data EINA_UNUSED, const Efl_Event *event)
|
||||||
{
|
{
|
||||||
const char *name;
|
const char *name;
|
||||||
Eina_Bool ret;
|
Eina_Bool ret;
|
||||||
|
|
||||||
ecore_audio_obj_name_get(event->object, &name);
|
name = ecore_audio_obj_name_get(event->object);
|
||||||
printf("Done: %s\n", name);
|
printf("Done: %s\n", name);
|
||||||
|
|
||||||
inputs = eina_list_remove(inputs, event->object);
|
inputs = eina_list_remove(inputs, event->object);
|
||||||
|
@ -212,7 +215,7 @@ static void _play_finished(void *data EINA_UNUSED, const Efl_Event *event)
|
||||||
const char *name;
|
const char *name;
|
||||||
Eo *in = (Eo *)eina_list_data_get(inputs);
|
Eo *in = (Eo *)eina_list_data_get(inputs);
|
||||||
|
|
||||||
ecore_audio_obj_name_get(in, &name);
|
name = ecore_audio_obj_name_get(in);
|
||||||
printf("Start: %s\n", name);
|
printf("Start: %s\n", name);
|
||||||
ret = ecore_audio_obj_out_input_attach(out, in);
|
ret = ecore_audio_obj_out_input_attach(out, in);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
|
@ -223,8 +226,6 @@ static void _play_finished(void *data EINA_UNUSED, const Efl_Event *event)
|
||||||
printf("Stream done\n");
|
printf("Stream done\n");
|
||||||
ecore_main_loop_quit();
|
ecore_main_loop_quit();
|
||||||
}
|
}
|
||||||
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -252,7 +253,7 @@ main(int argc, const char *argv[])
|
||||||
{
|
{
|
||||||
if (!strncmp(argv[i], "tone:", 5))
|
if (!strncmp(argv[i], "tone:", 5))
|
||||||
{
|
{
|
||||||
in = efl_add_ref(ECORE_AUDIO_OBJ_IN_TONE_CLASS, NULL);
|
in = efl_add_ref(ECORE_AUDIO_IN_TONE_CLASS, NULL);
|
||||||
if (!in)
|
if (!in)
|
||||||
{
|
{
|
||||||
printf("error when creating ecore audio source.\n");
|
printf("error when creating ecore audio source.\n");
|
||||||
|
@ -276,7 +277,7 @@ main(int argc, const char *argv[])
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
in = efl_add_ref(ECORE_AUDIO_OBJ_IN_SNDFILE_CLASS, NULL);
|
in = efl_add_ref(ECORE_AUDIO_IN_SNDFILE_CLASS, NULL);
|
||||||
if (!in)
|
if (!in)
|
||||||
{
|
{
|
||||||
printf("error when creating ecore audio source.\n");
|
printf("error when creating ecore audio source.\n");
|
||||||
|
@ -291,7 +292,7 @@ main(int argc, const char *argv[])
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
efl_event_callback_add(in, ECORE_AUDIO_EV_IN_STOPPED, _play_finished, NULL);
|
efl_event_callback_add(in, ECORE_AUDIO_IN_EVENT_IN_STOPPED, _play_finished, NULL);
|
||||||
inputs = eina_list_append(inputs, in);
|
inputs = eina_list_append(inputs, in);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -302,12 +303,12 @@ main(int argc, const char *argv[])
|
||||||
if (!in)
|
if (!in)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
ecore_audio_obj_name_get(in, &name);
|
name = ecore_audio_obj_name_get(in);
|
||||||
ecore_audio_obj_in_length_get(in, &length);
|
length = ecore_audio_obj_in_length_get(in);
|
||||||
|
|
||||||
printf("Start: %s (%0.2fs)\n", name, length);
|
printf("Start: %s (%0.2fs)\n", name, length);
|
||||||
|
|
||||||
out = efl_add_ref(ECORE_AUDIO_OBJ_OUT_PULSE_CLASS, NULL);
|
out = efl_add_ref(ECORE_AUDIO_OUT_PULSE_CLASS, NULL);
|
||||||
ret = ecore_audio_obj_out_input_attach(out, in);
|
ret = ecore_audio_obj_out_input_attach(out, in);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
printf("Could not attach input %s\n", name);
|
printf("Could not attach input %s\n", name);
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
// Compile with:
|
// Compile with:
|
||||||
// gcc -o ecore_audio_to_ogg ecore_audio_to_ogg.c `pkg-config --libs --cflags ecore eina ecore-audio`
|
// gcc -o ecore_audio_to_ogg ecore_audio_to_ogg.c `pkg-config --libs --cflags ecore eina ecore-audio`
|
||||||
|
#define EFL_BETA_API_SUPPORT
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <libgen.h>
|
#include <libgen.h>
|
||||||
|
@ -15,21 +16,20 @@
|
||||||
double volume = 1;
|
double volume = 1;
|
||||||
Eina_List *inputs = NULL;
|
Eina_List *inputs = NULL;
|
||||||
|
|
||||||
static void _play_finished(void *data EINA_UNUSED, const Efl_Event *event)
|
static void
|
||||||
|
_play_finished(void *data EINA_UNUSED, const Efl_Event *event)
|
||||||
{
|
{
|
||||||
const char *name;
|
const char *name;
|
||||||
Eo *out;
|
Eo *out;
|
||||||
|
|
||||||
ecore_audio_obj_name_get(event->object, &name);
|
name = ecore_audio_obj_name_get(event->object);
|
||||||
printf("Done: %s\n", name);
|
printf("Done: %s\n", name);
|
||||||
|
|
||||||
ecore_audio_obj_in_output_get(event->object, &out);
|
out = ecore_audio_obj_in_output_get(event->object);
|
||||||
efl_unref(event->object);
|
efl_unref(event->object);
|
||||||
efl_unref(out);
|
efl_unref(out);
|
||||||
|
|
||||||
ecore_main_loop_quit();
|
ecore_main_loop_quit();
|
||||||
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -49,7 +49,7 @@ main(int argc, char *argv[])
|
||||||
ecore_audio_init();
|
ecore_audio_init();
|
||||||
|
|
||||||
|
|
||||||
in = efl_add_ref(ECORE_AUDIO_OBJ_IN_SNDFILE_CLASS, NULL);
|
in = efl_add_ref(ECORE_AUDIO_IN_SNDFILE_CLASS, NULL);
|
||||||
efl_name_set(in, basename(argv[1]));
|
efl_name_set(in, basename(argv[1]));
|
||||||
ret = ecore_audio_obj_source_set(in, argv[1]);
|
ret = ecore_audio_obj_source_set(in, argv[1]);
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
|
@ -58,9 +58,9 @@ main(int argc, char *argv[])
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
efl_event_callback_add(in, ECORE_AUDIO_EV_IN_STOPPED, _play_finished, NULL);
|
efl_event_callback_add(in, ECORE_AUDIO_IN_EVENT_IN_STOPPED, _play_finished, NULL);
|
||||||
|
|
||||||
out = efl_add_ref(ECORE_AUDIO_OBJ_OUT_SNDFILE_CLASS, NULL);
|
out = efl_add_ref(ECORE_AUDIO_OUT_SNDFILE_CLASS, NULL);
|
||||||
ret = ecore_audio_obj_source_set(out, argv[2]);
|
ret = ecore_audio_obj_source_set(out, argv[2]);
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
printf("Could not set %s as output\n", argv[2]);
|
printf("Could not set %s as output\n", argv[2]);
|
||||||
|
|
|
@ -1,232 +0,0 @@
|
||||||
//Compile with:
|
|
||||||
// gcc -o ecore_fd_handler_gnutls_example ecore_fd_handler_gnutls_example.c `pkg-config --cflags --libs ecore gnutls`
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
#include "config.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <fcntl.h>
|
|
||||||
#ifdef HAVE_NETINET_TCP_H
|
|
||||||
# include <netinet/tcp.h>
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_NETINET_IN_H
|
|
||||||
# include <netinet/in.h>
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_SYS_SOCKET_H
|
|
||||||
# include <sys/socket.h>
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_ARPA_INET_H
|
|
||||||
# include <arpa/inet.h>
|
|
||||||
#endif
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <gnutls/gnutls.h>
|
|
||||||
#include <Ecore.h>
|
|
||||||
|
|
||||||
/* Ecore_Fd_Handler example
|
|
||||||
* 2010 Mike Blumenkrantz
|
|
||||||
* compile with gcc $(pkgconfig --cflags --libs gnutls ecore)
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define print(...) \
|
|
||||||
do { \
|
|
||||||
fprintf(stderr, "line %i: ", __LINE__); \
|
|
||||||
fprintf(stderr, __VA_ARGS__); \
|
|
||||||
fprintf(stderr, "\n");\
|
|
||||||
} while(0)
|
|
||||||
|
|
||||||
static int done = 0;
|
|
||||||
|
|
||||||
static void
|
|
||||||
tls_log_func(int level, const char *str)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "|<%d>| %s", level, str);
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char *
|
|
||||||
SSL_GNUTLS_PRINT_HANDSHAKE_STATUS(gnutls_handshake_description_t status)
|
|
||||||
{
|
|
||||||
switch (status)
|
|
||||||
{
|
|
||||||
case GNUTLS_HANDSHAKE_HELLO_REQUEST:
|
|
||||||
return "Hello request";
|
|
||||||
|
|
||||||
case GNUTLS_HANDSHAKE_CLIENT_HELLO:
|
|
||||||
return "Client hello";
|
|
||||||
|
|
||||||
case GNUTLS_HANDSHAKE_SERVER_HELLO:
|
|
||||||
return "Server hello";
|
|
||||||
|
|
||||||
case GNUTLS_HANDSHAKE_CERTIFICATE_PKT:
|
|
||||||
return "Certificate packet";
|
|
||||||
|
|
||||||
case GNUTLS_HANDSHAKE_SERVER_KEY_EXCHANGE:
|
|
||||||
return "Server key exchange";
|
|
||||||
|
|
||||||
case GNUTLS_HANDSHAKE_CERTIFICATE_REQUEST:
|
|
||||||
return "Certificate request";
|
|
||||||
|
|
||||||
case GNUTLS_HANDSHAKE_SERVER_HELLO_DONE:
|
|
||||||
return "Server hello done";
|
|
||||||
|
|
||||||
case GNUTLS_HANDSHAKE_CERTIFICATE_VERIFY:
|
|
||||||
return "Certificate verify";
|
|
||||||
|
|
||||||
case GNUTLS_HANDSHAKE_CLIENT_KEY_EXCHANGE:
|
|
||||||
return "Client key exchange";
|
|
||||||
|
|
||||||
case GNUTLS_HANDSHAKE_FINISHED:
|
|
||||||
return "Finished";
|
|
||||||
|
|
||||||
case GNUTLS_HANDSHAKE_SUPPLEMENTAL:
|
|
||||||
return "Supplemental";
|
|
||||||
default:
|
|
||||||
return "Uncaught state";
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Connects to the peer and returns a socket
|
|
||||||
* descriptor.
|
|
||||||
*/
|
|
||||||
static int
|
|
||||||
tcp_connect(void)
|
|
||||||
{
|
|
||||||
const char *PORT = "443";
|
|
||||||
const char *SERVER = "69.58.181.89"; //verisign.com
|
|
||||||
int err, sd;
|
|
||||||
int flag = 1, curstate = 0;
|
|
||||||
struct sockaddr_in sa;
|
|
||||||
|
|
||||||
/* sets some fd options such as nonblock */
|
|
||||||
sd = socket(AF_INET, SOCK_STREAM, 0);
|
|
||||||
if (sd < 0) abort();
|
|
||||||
if (fcntl(sd, F_SETFL, O_NONBLOCK) < 0) perror("fcntl");
|
|
||||||
eina_file_close_on_exec(sd, EINA_TRUE);
|
|
||||||
if (setsockopt(sd, SOL_SOCKET, SO_REUSEADDR, (const void *)&curstate, sizeof(curstate)) < 0) perror("setsockopt");
|
|
||||||
|
|
||||||
if (setsockopt(sd, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(int)) < 0) perror("setsockopt");
|
|
||||||
|
|
||||||
memset(&sa, '\0', sizeof (sa));
|
|
||||||
sa.sin_family = AF_INET;
|
|
||||||
sa.sin_port = eina_htons(atoi(PORT));
|
|
||||||
if (inet_pton(AF_INET, SERVER, &sa.sin_addr)) perror("inet_pton");
|
|
||||||
|
|
||||||
/* connects to server
|
|
||||||
*/
|
|
||||||
err = connect(sd, (struct sockaddr *)&sa, sizeof (sa));
|
|
||||||
if ((err < 0) && (errno != EINPROGRESS))
|
|
||||||
{
|
|
||||||
print("Connect error\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
return sd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* closes the given socket descriptor.
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
tcp_close(int sd)
|
|
||||||
{
|
|
||||||
#ifdef _WIN32
|
|
||||||
shutdown(sd, SD_BOTH); /* no more receptions */
|
|
||||||
closesocket(sd);
|
|
||||||
#else
|
|
||||||
shutdown(sd, SHUT_RDWR); /* no more receptions */
|
|
||||||
close(sd);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_process_data(gnutls_session_t client, Ecore_Fd_Handler *fd_handler)
|
|
||||||
{
|
|
||||||
static int ret, lastret;
|
|
||||||
static unsigned int count = 0;
|
|
||||||
|
|
||||||
if (!done)
|
|
||||||
{
|
|
||||||
lastret = ret;
|
|
||||||
ret = gnutls_handshake(client);
|
|
||||||
count++;
|
|
||||||
if (gnutls_record_get_direction(client))
|
|
||||||
ecore_main_fd_handler_active_set(fd_handler, ECORE_FD_WRITE);
|
|
||||||
else
|
|
||||||
ecore_main_fd_handler_active_set(fd_handler, ECORE_FD_READ);
|
|
||||||
/* avoid printing messages infinity times */
|
|
||||||
if (lastret != ret)
|
|
||||||
{
|
|
||||||
print("gnutls returned with: %s - %s", gnutls_strerror_name(ret), gnutls_strerror(ret));
|
|
||||||
if ((ret == GNUTLS_E_WARNING_ALERT_RECEIVED) || (ret == GNUTLS_E_FATAL_ALERT_RECEIVED))
|
|
||||||
print("Also received alert: %s", gnutls_alert_get_name(gnutls_alert_get(client)));
|
|
||||||
print("last out: %s", SSL_GNUTLS_PRINT_HANDSHAKE_STATUS(gnutls_handshake_get_last_out(client)));
|
|
||||||
print("last in: %s", SSL_GNUTLS_PRINT_HANDSHAKE_STATUS(gnutls_handshake_get_last_in(client)));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gnutls_error_is_fatal(ret))
|
|
||||||
{
|
|
||||||
print("yarrr this be an error!");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (ret == GNUTLS_E_SUCCESS)
|
|
||||||
{
|
|
||||||
done = 1;
|
|
||||||
print("Handshake successful in %u handshake calls!", count);
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
}
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(void)
|
|
||||||
{
|
|
||||||
/* credentials */
|
|
||||||
gnutls_anon_client_credentials_t c_anoncred;
|
|
||||||
gnutls_certificate_credentials_t c_certcred;
|
|
||||||
|
|
||||||
gnutls_session_t client;
|
|
||||||
int sd;
|
|
||||||
|
|
||||||
/* General init. */
|
|
||||||
gnutls_global_init();
|
|
||||||
ecore_init();
|
|
||||||
gnutls_global_set_log_function(tls_log_func);
|
|
||||||
gnutls_global_set_log_level(6);
|
|
||||||
|
|
||||||
/* Init client */
|
|
||||||
gnutls_anon_allocate_client_credentials(&c_anoncred);
|
|
||||||
gnutls_certificate_allocate_credentials(&c_certcred);
|
|
||||||
gnutls_init(&client, GNUTLS_CLIENT);
|
|
||||||
/* set very specific priorities */
|
|
||||||
gnutls_priority_set_direct(client, "NONE:%VERIFY_ALLOW_X509_V1_CA_CRT:+RSA:+DHE-RSA:+DHE-DSS:+ANON-DH:+COMP-DEFLATE:+COMP-NULL:+CTYPE-X509:+SHA1:+SHA256:+SHA384:+SHA512:+AES-256-CBC:+AES-128-CBC:+3DES-CBC:+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:+VERS-SSL3.0", NULL);
|
|
||||||
gnutls_credentials_set(client, GNUTLS_CRD_ANON, c_anoncred);
|
|
||||||
gnutls_credentials_set(client, GNUTLS_CRD_CERTIFICATE, c_certcred);
|
|
||||||
gnutls_server_name_set(client, GNUTLS_NAME_DNS, "www.verisign.com", strlen("www.verisign.com"));
|
|
||||||
|
|
||||||
/* connect to the peer
|
|
||||||
*/
|
|
||||||
sd = tcp_connect();
|
|
||||||
|
|
||||||
/* associate gnutls with socket */
|
|
||||||
gnutls_transport_set_ptr(client, (gnutls_transport_ptr_t)(uintptr_t)sd);
|
|
||||||
/* add a callback for data being available for send/receive on socket */
|
|
||||||
if (!ecore_main_fd_handler_add(sd, ECORE_FD_READ | ECORE_FD_WRITE, (Ecore_Fd_Cb)_process_data, client, NULL, NULL))
|
|
||||||
{
|
|
||||||
print("could not create fd handler!");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
/* begin main loop */
|
|
||||||
ecore_main_loop_begin();
|
|
||||||
|
|
||||||
gnutls_bye(client, GNUTLS_SHUT_RDWR);
|
|
||||||
|
|
||||||
gnutls_deinit(client);
|
|
||||||
|
|
||||||
tcp_close(sd);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -18,13 +18,8 @@ if config_h.has('HAVE_FORK')
|
||||||
examples += 'ecore_pipe_simple_example'
|
examples += 'ecore_pipe_simple_example'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
gnutls = dependency('gnutls', required : false)
|
|
||||||
if gnutls.found()
|
|
||||||
examples += ['ecore_fd_handler_gnutls_example']
|
|
||||||
endif
|
|
||||||
|
|
||||||
foreach example : examples
|
foreach example : examples
|
||||||
executable(example, example + '.c', dependencies: [eina, ecore, ecore_file, gnutls])
|
executable(example, example + '.c', dependencies: [eina, ecore, ecore_file])
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
if get_option('gstreamer') == true
|
if get_option('gstreamer') == true
|
||||||
|
@ -39,9 +34,9 @@ endif
|
||||||
|
|
||||||
|
|
||||||
examples = [
|
examples = [
|
||||||
# 'ecore_audio_custom',
|
'ecore_audio_custom',
|
||||||
# 'ecore_audio_playback',
|
'ecore_audio_playback',
|
||||||
# 'ecore_audio_to_ogg',
|
'ecore_audio_to_ogg',
|
||||||
]
|
]
|
||||||
|
|
||||||
foreach example : examples
|
foreach example : examples
|
||||||
|
|
|
@ -720,8 +720,7 @@ ECORE_CON_API Eina_Bool ecore_con_lookup(const char *name, Ecore_Con_Dns_Cb done
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Returns if SSL support is available.
|
* @brief Returns if SSL support is available.
|
||||||
* @return @c 1 if SSL is available and provided by gnutls,
|
* @return @c 2 if SSL is available and provided by openssl,
|
||||||
* @c 2 if SSL is available and provided by openssl,
|
|
||||||
* @c 0 if it is not available.
|
* @c 0 if it is not available.
|
||||||
*/
|
*/
|
||||||
ECORE_CON_API int ecore_con_ssl_available_get(void);
|
ECORE_CON_API int ecore_con_ssl_available_get(void);
|
||||||
|
|
|
@ -165,9 +165,7 @@ ecore_con_shutdown(void)
|
||||||
ECORE_CON_API int
|
ECORE_CON_API int
|
||||||
ecore_con_ssl_available_get(void)
|
ecore_con_ssl_available_get(void)
|
||||||
{
|
{
|
||||||
#if HAVE_GNUTLS
|
#ifdef HAVE_OPENSSL
|
||||||
return 1;
|
|
||||||
#elif HAVE_OPENSSL
|
|
||||||
return 2;
|
return 2;
|
||||||
#else
|
#else
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -96,11 +96,9 @@ static Eina_Error efl_net_ssl_conn_hostname_verify_set(Efl_Net_Ssl_Conn *conn, E
|
||||||
static Eina_Error efl_net_ssl_conn_hostname_override_set(Efl_Net_Ssl_Conn *conn, const char *hostname);
|
static Eina_Error efl_net_ssl_conn_hostname_override_set(Efl_Net_Ssl_Conn *conn, const char *hostname);
|
||||||
|
|
||||||
#if HAVE_OPENSSL
|
#if HAVE_OPENSSL
|
||||||
#include "efl_net_ssl_conn-openssl.c"
|
# include "efl_net_ssl_conn-openssl.c"
|
||||||
#elif HAVE_GNUTLS
|
|
||||||
#include "efl_net_ssl_conn-gnutls.c"
|
|
||||||
#else
|
#else
|
||||||
#include "efl_net_ssl_conn-none.c"
|
# include "efl_net_ssl_conn-none.c"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define MY_CLASS EFL_NET_SOCKET_SSL_CLASS
|
#define MY_CLASS EFL_NET_SOCKET_SSL_CLASS
|
||||||
|
|
|
@ -1,362 +0,0 @@
|
||||||
#include <gnutls/gnutls.h>
|
|
||||||
#include <gnutls/x509.h>
|
|
||||||
|
|
||||||
struct _Efl_Net_Ssl_Conn {
|
|
||||||
gnutls_session_t session;
|
|
||||||
gnutls_datum_t ticket;
|
|
||||||
Eo *sock;
|
|
||||||
const char *hostname;
|
|
||||||
Efl_Net_Ssl_Verify_Mode verify_mode;
|
|
||||||
Eina_Bool hostname_verify;
|
|
||||||
Eina_Bool is_dialer;
|
|
||||||
};
|
|
||||||
|
|
||||||
static ssize_t
|
|
||||||
_efl_net_ssl_conn_write(gnutls_transport_ptr_t transp, const void *buf, size_t len)
|
|
||||||
{
|
|
||||||
Eina_Slice slice = {
|
|
||||||
.mem = buf,
|
|
||||||
.len = len
|
|
||||||
};
|
|
||||||
Efl_Net_Ssl_Conn *conn = transp;
|
|
||||||
Eina_Error err;
|
|
||||||
|
|
||||||
if ((!buf) || (len == 0)) return 0;
|
|
||||||
if (!conn) return 0;
|
|
||||||
|
|
||||||
if (!efl_io_writer_can_write_get(conn->sock))
|
|
||||||
{
|
|
||||||
DBG("socket=%p would block if written!", conn->sock);
|
|
||||||
gnutls_transport_set_errno(conn->session, EAGAIN);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
err = efl_io_writer_write(conn->sock, &slice, NULL);
|
|
||||||
if (err)
|
|
||||||
{
|
|
||||||
gnutls_transport_set_errno(conn->session, err);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
gnutls_transport_set_errno(conn->session, 0);
|
|
||||||
return slice.len;
|
|
||||||
}
|
|
||||||
|
|
||||||
static ssize_t
|
|
||||||
_efl_net_ssl_conn_read(gnutls_transport_ptr_t transp, void *buf, size_t len)
|
|
||||||
{
|
|
||||||
Eina_Rw_Slice slice = {
|
|
||||||
.mem = buf,
|
|
||||||
.len = len
|
|
||||||
};
|
|
||||||
Efl_Net_Ssl_Conn *conn = transp;
|
|
||||||
Eina_Error err;
|
|
||||||
|
|
||||||
if ((!buf) || (len == 0)) return 0;
|
|
||||||
if (!conn) return 0;
|
|
||||||
|
|
||||||
if (!efl_io_reader_can_read_get(conn->sock))
|
|
||||||
{
|
|
||||||
DBG("socket=%p would block if read!", conn->sock);
|
|
||||||
gnutls_transport_set_errno(conn->session, EAGAIN);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
err = efl_io_reader_read(conn->sock, &slice);
|
|
||||||
if (err)
|
|
||||||
{
|
|
||||||
gnutls_transport_set_errno(conn->session, err);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
gnutls_transport_set_errno(conn->session, 0);
|
|
||||||
return slice.len;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Error
|
|
||||||
efl_net_ssl_conn_setup(Efl_Net_Ssl_Conn *conn, Eina_Bool is_dialer, Efl_Net_Socket *sock, Efl_Net_Ssl_Context *context)
|
|
||||||
{
|
|
||||||
gnutls_certificate_request_t req;
|
|
||||||
int r;
|
|
||||||
|
|
||||||
EINA_SAFETY_ON_TRUE_RETURN_VAL(conn->session != NULL, EALREADY);
|
|
||||||
|
|
||||||
conn->is_dialer = is_dialer;
|
|
||||||
|
|
||||||
conn->session = efl_net_ssl_context_connection_new(context);
|
|
||||||
EINA_SAFETY_ON_NULL_RETURN_VAL(conn->session, ENOSYS);
|
|
||||||
|
|
||||||
gnutls_handshake_set_private_extensions(conn->session, 1);
|
|
||||||
|
|
||||||
switch (conn->verify_mode)
|
|
||||||
{
|
|
||||||
case EFL_NET_SSL_VERIFY_MODE_NONE:
|
|
||||||
req = GNUTLS_CERT_IGNORE;
|
|
||||||
break;
|
|
||||||
case EFL_NET_SSL_VERIFY_MODE_OPTIONAL:
|
|
||||||
req = GNUTLS_CERT_REQUEST;
|
|
||||||
break;
|
|
||||||
case EFL_NET_SSL_VERIFY_MODE_REQUIRED:
|
|
||||||
default:
|
|
||||||
req = GNUTLS_CERT_REQUIRE;
|
|
||||||
}
|
|
||||||
gnutls_certificate_server_set_request(conn->session, req);
|
|
||||||
|
|
||||||
if (is_dialer)
|
|
||||||
{
|
|
||||||
r = gnutls_session_ticket_enable_client(conn->session);
|
|
||||||
if (r < 0)
|
|
||||||
{
|
|
||||||
ERR("ssl_conn=%p could not enable session's ticket client: %s", conn, gnutls_strerror(r));
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
r = gnutls_session_ticket_key_generate(&conn->ticket);
|
|
||||||
if (r < 0)
|
|
||||||
{
|
|
||||||
ERR("ssl_conn=%p could not generate session ticket: %s", conn, gnutls_strerror(r));
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
r = gnutls_session_ticket_enable_server(conn->session, &conn->ticket);
|
|
||||||
if (r < 0)
|
|
||||||
{
|
|
||||||
ERR("ssl_conn=%p could not enable session's ticket server: %s", conn, gnutls_strerror(r));
|
|
||||||
goto error_ticket;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
conn->sock = sock;
|
|
||||||
gnutls_transport_set_ptr(conn->session, conn);
|
|
||||||
gnutls_transport_set_push_function(conn->session, _efl_net_ssl_conn_write);
|
|
||||||
gnutls_transport_set_pull_function(conn->session, _efl_net_ssl_conn_read);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
error_ticket:
|
|
||||||
gnutls_free(conn->ticket.data);
|
|
||||||
conn->ticket.data = NULL;
|
|
||||||
|
|
||||||
error:
|
|
||||||
gnutls_deinit(conn->session);
|
|
||||||
conn->session = NULL;
|
|
||||||
return ENOSYS;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
efl_net_ssl_conn_teardown(Efl_Net_Ssl_Conn *conn)
|
|
||||||
{
|
|
||||||
if (conn->session)
|
|
||||||
{
|
|
||||||
gnutls_bye(conn->session, GNUTLS_SHUT_RDWR);
|
|
||||||
gnutls_deinit(conn->session);
|
|
||||||
conn->session = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (conn->ticket.data)
|
|
||||||
{
|
|
||||||
gnutls_free(conn->ticket.data);
|
|
||||||
conn->ticket.data = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
eina_stringshare_replace(&conn->hostname, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Error
|
|
||||||
efl_net_ssl_conn_write(Efl_Net_Ssl_Conn *conn, Eina_Slice *slice)
|
|
||||||
{
|
|
||||||
ssize_t r = gnutls_record_send(conn->session, slice->mem, slice->len);
|
|
||||||
if (r < 0)
|
|
||||||
{
|
|
||||||
slice->len = 0;
|
|
||||||
if (gnutls_error_is_fatal(r))
|
|
||||||
{
|
|
||||||
ERR("ssl_conn=%p could not send %zd bytes: %s", conn, slice->len, gnutls_strerror(r));
|
|
||||||
return EINVAL;
|
|
||||||
}
|
|
||||||
DBG("ssl_conn=%p could not send %zd bytes: %s", conn, slice->len, gnutls_strerror(r));
|
|
||||||
return EAGAIN;
|
|
||||||
}
|
|
||||||
slice->len = r;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Error
|
|
||||||
efl_net_ssl_conn_read(Efl_Net_Ssl_Conn *conn, Eina_Rw_Slice *slice)
|
|
||||||
{
|
|
||||||
ssize_t r = gnutls_record_recv(conn->session, slice->mem, slice->len);
|
|
||||||
if (r < 0)
|
|
||||||
{
|
|
||||||
slice->len = 0;
|
|
||||||
if (gnutls_error_is_fatal(r))
|
|
||||||
{
|
|
||||||
ERR("ssl_conn=%p could not receive %zd bytes: %s", conn, slice->len, gnutls_strerror(r));
|
|
||||||
return EINVAL;
|
|
||||||
}
|
|
||||||
DBG("ssl_conn=%p could not receive %zd bytes: %s", conn, slice->len, gnutls_strerror(r));
|
|
||||||
return EAGAIN;
|
|
||||||
}
|
|
||||||
slice->len = r;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Error
|
|
||||||
_efl_net_ssl_conn_verify(Efl_Net_Ssl_Conn *conn)
|
|
||||||
{
|
|
||||||
unsigned status = 0;
|
|
||||||
int r;
|
|
||||||
|
|
||||||
r = gnutls_certificate_verify_peers2(conn->session, &status);
|
|
||||||
if (r < 0)
|
|
||||||
{
|
|
||||||
ERR("ssl_conn=%p could not verify peer: %s", conn, gnutls_strerror(r));
|
|
||||||
return EFL_NET_SOCKET_SSL_ERROR_HANDSHAKE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!status) return 0;
|
|
||||||
|
|
||||||
if (status & GNUTLS_CERT_INVALID)
|
|
||||||
WRN("ssl_conn=%p The certificate is not trusted.", conn);
|
|
||||||
if (status & GNUTLS_CERT_SIGNER_NOT_FOUND)
|
|
||||||
WRN("ssl_conn=%p The certificate hasn't got a known issuer.", conn);
|
|
||||||
if (status & GNUTLS_CERT_REVOKED)
|
|
||||||
WRN("ssl_conn=%p The certificate has been revoked.", conn);
|
|
||||||
if (status & GNUTLS_CERT_EXPIRED)
|
|
||||||
WRN("ssl_conn=%p The certificate has expired", conn);
|
|
||||||
if (status & GNUTLS_CERT_NOT_ACTIVATED)
|
|
||||||
WRN("ssl_conn=%p The certificate is not yet activated", conn);
|
|
||||||
|
|
||||||
return EFL_NET_SOCKET_SSL_ERROR_CERTIFICATE_VERIFY_FAILED;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Error
|
|
||||||
_efl_net_ssl_conn_hostname_verify(Efl_Net_Ssl_Conn *conn)
|
|
||||||
{
|
|
||||||
const gnutls_datum_t *list;
|
|
||||||
unsigned int size;
|
|
||||||
gnutls_x509_crt_t cert = NULL;
|
|
||||||
int r;
|
|
||||||
|
|
||||||
if ((!conn->hostname) || (conn->hostname[0] == '\0'))
|
|
||||||
{
|
|
||||||
ERR("ssl_conn=%p no hostname, cannot verify", conn);
|
|
||||||
return EFL_NET_SOCKET_SSL_ERROR_CERTIFICATE_VERIFY_FAILED;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gnutls_certificate_type_get(conn->session) != GNUTLS_CRT_X509)
|
|
||||||
{
|
|
||||||
ERR("ssl_conn=%p PGP certificates are not yet supported!", conn);
|
|
||||||
return EFL_NET_SOCKET_SSL_ERROR_CERTIFICATE_VERIFY_FAILED;
|
|
||||||
}
|
|
||||||
|
|
||||||
list = gnutls_certificate_get_peers(conn->session, &size);
|
|
||||||
if (!list)
|
|
||||||
{
|
|
||||||
ERR("ssl_conn=%p no peer certificate!", conn);
|
|
||||||
return EFL_NET_SOCKET_SSL_ERROR_HANDSHAKE;
|
|
||||||
}
|
|
||||||
|
|
||||||
r = gnutls_x509_crt_init(&cert);
|
|
||||||
EINA_SAFETY_ON_TRUE_RETURN_VAL(r < 0, EFL_NET_SOCKET_SSL_ERROR_CERTIFICATE_VERIFY_FAILED);
|
|
||||||
|
|
||||||
r = gnutls_x509_crt_import(cert, &list[0], GNUTLS_X509_FMT_DER);
|
|
||||||
if (r < 0)
|
|
||||||
{
|
|
||||||
ERR("ssl_conn=%p could not import x509 certificate to verify: %s", conn, gnutls_strerror(r));
|
|
||||||
gnutls_x509_crt_deinit(cert);
|
|
||||||
return EFL_NET_SOCKET_SSL_ERROR_CERTIFICATE_VERIFY_FAILED;
|
|
||||||
}
|
|
||||||
|
|
||||||
r = gnutls_x509_crt_check_hostname(cert, conn->hostname);
|
|
||||||
gnutls_x509_crt_deinit(cert);
|
|
||||||
|
|
||||||
if (r == 1)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
ERR("ssl_conn=%p hostname='%s' doesn't match certificate.",
|
|
||||||
conn, conn->hostname);
|
|
||||||
return EFL_NET_SOCKET_SSL_ERROR_CERTIFICATE_VERIFY_FAILED;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Error
|
|
||||||
efl_net_ssl_conn_handshake(Efl_Net_Ssl_Conn *conn, Eina_Bool *done)
|
|
||||||
{
|
|
||||||
int r = gnutls_handshake(conn->session);
|
|
||||||
if (r < 0)
|
|
||||||
{
|
|
||||||
*done = EINA_FALSE;
|
|
||||||
if (gnutls_error_is_fatal(r))
|
|
||||||
{
|
|
||||||
ERR("ssl_conn=%p could not handshake: %s", conn, gnutls_strerror(r));
|
|
||||||
return EFL_NET_SOCKET_SSL_ERROR_HANDSHAKE;
|
|
||||||
}
|
|
||||||
|
|
||||||
DBG("ssl_conn=%p did not finish handshake: %s", conn, gnutls_strerror(r));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (conn->verify_mode != EFL_NET_SSL_VERIFY_MODE_NONE)
|
|
||||||
{
|
|
||||||
Eina_Error err = _efl_net_ssl_conn_verify(conn);
|
|
||||||
if (err)
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (conn->hostname_verify)
|
|
||||||
{
|
|
||||||
Eina_Error err = _efl_net_ssl_conn_hostname_verify(conn);
|
|
||||||
if (err)
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
*done = EINA_TRUE;
|
|
||||||
DBG("ssl_conn=%p handshake finished!", conn);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Error
|
|
||||||
efl_net_ssl_conn_verify_mode_set(Efl_Net_Ssl_Conn *conn, Efl_Net_Ssl_Verify_Mode verify_mode)
|
|
||||||
{
|
|
||||||
gnutls_certificate_request_t req;
|
|
||||||
conn->verify_mode = verify_mode;
|
|
||||||
|
|
||||||
switch (conn->verify_mode)
|
|
||||||
{
|
|
||||||
case EFL_NET_SSL_VERIFY_MODE_NONE:
|
|
||||||
req = GNUTLS_CERT_IGNORE;
|
|
||||||
break;
|
|
||||||
case EFL_NET_SSL_VERIFY_MODE_OPTIONAL:
|
|
||||||
req = GNUTLS_CERT_REQUEST;
|
|
||||||
break;
|
|
||||||
case EFL_NET_SSL_VERIFY_MODE_REQUIRED:
|
|
||||||
default:
|
|
||||||
req = GNUTLS_CERT_REQUIRE;
|
|
||||||
}
|
|
||||||
gnutls_certificate_server_set_request(conn->session, req);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Error
|
|
||||||
efl_net_ssl_conn_hostname_verify_set(Efl_Net_Ssl_Conn *conn, Eina_Bool hostname_verify)
|
|
||||||
{
|
|
||||||
conn->hostname_verify = hostname_verify;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Error
|
|
||||||
efl_net_ssl_conn_hostname_override_set(Efl_Net_Ssl_Conn *conn, const char *hostname)
|
|
||||||
{
|
|
||||||
int r;
|
|
||||||
eina_stringshare_replace(&conn->hostname, hostname);
|
|
||||||
if (!hostname) hostname = "";
|
|
||||||
r = gnutls_server_name_set(conn->session, GNUTLS_NAME_DNS, hostname, strlen(hostname));
|
|
||||||
if (r < 0)
|
|
||||||
{
|
|
||||||
ERR("ssl_conn=%p could not set server name '%s': %s", conn, hostname, gnutls_strerror(r));
|
|
||||||
return EINVAL;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -27,7 +27,7 @@
|
||||||
static int
|
static int
|
||||||
efl_net_socket_bio_create(BIO *b)
|
efl_net_socket_bio_create(BIO *b)
|
||||||
{
|
{
|
||||||
#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
|
#if (LIBRESSL_VERSION_NUMBER >= 0x3050000fL) || ((OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER))
|
||||||
BIO_set_init(b, 1);
|
BIO_set_init(b, 1);
|
||||||
BIO_set_data(b, NULL);
|
BIO_set_data(b, NULL);
|
||||||
BIO_set_flags(b, 0);
|
BIO_set_flags(b, 0);
|
||||||
|
@ -44,7 +44,7 @@ static int
|
||||||
efl_net_socket_bio_destroy(BIO *b)
|
efl_net_socket_bio_destroy(BIO *b)
|
||||||
{
|
{
|
||||||
if (!b) return 0;
|
if (!b) return 0;
|
||||||
#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
|
#if (LIBRESSL_VERSION_NUMBER >= 0x3050000fL) || ((OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER))
|
||||||
BIO_set_init(b, 0);
|
BIO_set_init(b, 0);
|
||||||
BIO_set_data(b, NULL);
|
BIO_set_data(b, NULL);
|
||||||
BIO_set_flags(b, 0);
|
BIO_set_flags(b, 0);
|
||||||
|
@ -63,7 +63,7 @@ efl_net_socket_bio_read(BIO *b, char *buf, int len)
|
||||||
.mem = buf,
|
.mem = buf,
|
||||||
.len = len
|
.len = len
|
||||||
};
|
};
|
||||||
#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
|
#if (LIBRESSL_VERSION_NUMBER >= 0x3050000fL) || ((OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER))
|
||||||
Eo *sock = BIO_get_data(b);
|
Eo *sock = BIO_get_data(b);
|
||||||
#else
|
#else
|
||||||
Eo *sock = b->ptr;
|
Eo *sock = b->ptr;
|
||||||
|
@ -99,7 +99,7 @@ efl_net_socket_bio_write(BIO *b, const char *buf, int len)
|
||||||
.mem = buf,
|
.mem = buf,
|
||||||
.len = len
|
.len = len
|
||||||
};
|
};
|
||||||
#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
|
#if (LIBRESSL_VERSION_NUMBER >= 0x3050000fL) || ((OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER))
|
||||||
Eo *sock = BIO_get_data(b);
|
Eo *sock = BIO_get_data(b);
|
||||||
#else
|
#else
|
||||||
Eo *sock = b->ptr;
|
Eo *sock = b->ptr;
|
||||||
|
@ -146,7 +146,7 @@ efl_net_socket_bio_puts(BIO *b, const char *str)
|
||||||
static BIO_METHOD *
|
static BIO_METHOD *
|
||||||
__efl_net_socket_bio_get(void)
|
__efl_net_socket_bio_get(void)
|
||||||
{
|
{
|
||||||
#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
|
#if (LIBRESSL_VERSION_NUMBER >= 0x3050000fL) || ((OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER))
|
||||||
static BIO_METHOD *efl_net_socket_bio = NULL;
|
static BIO_METHOD *efl_net_socket_bio = NULL;
|
||||||
|
|
||||||
if (efl_net_socket_bio) return efl_net_socket_bio;
|
if (efl_net_socket_bio) return efl_net_socket_bio;
|
||||||
|
@ -359,7 +359,7 @@ efl_net_ssl_conn_setup(Efl_Net_Ssl_Conn *conn, Eina_Bool is_dialer, Efl_Net_Sock
|
||||||
conn->bio = BIO_new(__efl_net_socket_bio_get());
|
conn->bio = BIO_new(__efl_net_socket_bio_get());
|
||||||
EINA_SAFETY_ON_NULL_GOTO(conn->bio, error_bio);
|
EINA_SAFETY_ON_NULL_GOTO(conn->bio, error_bio);
|
||||||
|
|
||||||
#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
|
#if (LIBRESSL_VERSION_NUMBER >= 0x3050000fL) || ((OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER))
|
||||||
BIO_set_data(conn->bio, sock);
|
BIO_set_data(conn->bio, sock);
|
||||||
#else
|
#else
|
||||||
conn->bio->ptr = sock;
|
conn->bio->ptr = sock;
|
||||||
|
|
|
@ -81,11 +81,9 @@ static Eina_Error efl_net_ssl_ctx_hostname_verify_set(Efl_Net_Ssl_Ctx *ctx, Eina
|
||||||
static Eina_Error efl_net_ssl_ctx_hostname_set(Efl_Net_Ssl_Ctx *ctx, const char *hostname);
|
static Eina_Error efl_net_ssl_ctx_hostname_set(Efl_Net_Ssl_Ctx *ctx, const char *hostname);
|
||||||
|
|
||||||
#if HAVE_OPENSSL
|
#if HAVE_OPENSSL
|
||||||
#include "efl_net_ssl_ctx-openssl.c"
|
# include "efl_net_ssl_ctx-openssl.c"
|
||||||
#elif HAVE_GNUTLS
|
|
||||||
#include "efl_net_ssl_ctx-gnutls.c"
|
|
||||||
#else
|
#else
|
||||||
#include "efl_net_ssl_ctx-none.c"
|
# include "efl_net_ssl_ctx-none.c"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define MY_CLASS EFL_NET_SSL_CONTEXT_CLASS
|
#define MY_CLASS EFL_NET_SSL_CONTEXT_CLASS
|
||||||
|
|
|
@ -1,307 +0,0 @@
|
||||||
#include <gnutls/gnutls.h>
|
|
||||||
|
|
||||||
struct _Efl_Net_Ssl_Ctx {
|
|
||||||
gnutls_certificate_credentials_t x509_cred;
|
|
||||||
gnutls_priority_t priority;
|
|
||||||
Eina_Bool is_dialer;
|
|
||||||
};
|
|
||||||
|
|
||||||
static Eina_Error
|
|
||||||
_efl_net_ssl_ctx_load_lists(Efl_Net_Ssl_Ctx *ctx, Efl_Net_Ssl_Ctx_Config cfg)
|
|
||||||
{
|
|
||||||
Eina_List *n, *n_next, *pk_node;
|
|
||||||
const char *path;
|
|
||||||
unsigned certificates_count = eina_list_count(*cfg.certificates);
|
|
||||||
unsigned private_keys_count = eina_list_count(*cfg.private_keys);
|
|
||||||
unsigned certificate_revocation_lists_count = eina_list_count(*cfg.certificate_revocation_lists);
|
|
||||||
unsigned certificate_authorities_count = eina_list_count(*cfg.certificate_authorities);
|
|
||||||
int r;
|
|
||||||
|
|
||||||
ctx->is_dialer = cfg.is_dialer;
|
|
||||||
|
|
||||||
if (cfg.load_defaults)
|
|
||||||
{
|
|
||||||
r = gnutls_certificate_set_x509_system_trust(ctx->x509_cred);
|
|
||||||
if (r < 0)
|
|
||||||
{
|
|
||||||
ERR("ssl_ctx=%p could not load default paths: %s", ctx, gnutls_strerror(r));
|
|
||||||
return ENOSYS;
|
|
||||||
}
|
|
||||||
DBG("ssl_ctx=%p loaded default paths", ctx);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
DBG("ssl_ctx=%p did not load default paths", ctx);
|
|
||||||
|
|
||||||
/* GNUTLS needs certificate-key pairs, so we do:
|
|
||||||
*
|
|
||||||
* - if no private keys, use certificate as its own key;
|
|
||||||
*
|
|
||||||
* - if a private keys, walk the list alongside certificates, but
|
|
||||||
* do NOT delete elements if list sizes are different. Stop at
|
|
||||||
* last private key, allowing a single private key for multiple
|
|
||||||
* certificates.
|
|
||||||
*/
|
|
||||||
pk_node = *cfg.private_keys;
|
|
||||||
EINA_LIST_FOREACH_SAFE(*cfg.certificates, n, n_next, path)
|
|
||||||
{
|
|
||||||
const char *key = pk_node ? pk_node->data : path;
|
|
||||||
|
|
||||||
r = gnutls_certificate_set_x509_key_file(ctx->x509_cred, path, key, GNUTLS_X509_FMT_PEM);
|
|
||||||
if (r < 0)
|
|
||||||
{
|
|
||||||
ERR("ssl_ctx=%p could not use certificate from '%s' with key '%s': %s",
|
|
||||||
ctx, path, key, gnutls_strerror(r));
|
|
||||||
|
|
||||||
if (pk_node)
|
|
||||||
{
|
|
||||||
if (eina_list_count(*cfg.private_keys) == eina_list_count(*cfg.certificates))
|
|
||||||
{
|
|
||||||
pk_node = pk_node->next;
|
|
||||||
eina_stringshare_del(key);
|
|
||||||
*cfg.private_keys = eina_list_remove_list(*cfg.private_keys, pk_node->prev);
|
|
||||||
}
|
|
||||||
else if (pk_node->next) pk_node = pk_node->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
eina_stringshare_del(path);
|
|
||||||
*cfg.certificates = eina_list_remove_list(*cfg.certificates, n);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (pk_node->next) pk_node = pk_node->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
DBG("ssl_ctx=%p loaded certificate '%s' with key '%s'", ctx, path, key);
|
|
||||||
}
|
|
||||||
if (certificates_count && !*cfg.certificates)
|
|
||||||
{
|
|
||||||
ERR("ssl_ctx=%p none of the required certificates were loaded!", ctx);
|
|
||||||
return EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (private_keys_count && !*cfg.private_keys)
|
|
||||||
{
|
|
||||||
ERR("ssl_ctx=%p none of the required private keys were loaded!", ctx);
|
|
||||||
return EINVAL;
|
|
||||||
}
|
|
||||||
else if (pk_node != eina_list_last(*cfg.private_keys))
|
|
||||||
{
|
|
||||||
do
|
|
||||||
{
|
|
||||||
n = pk_node->next;
|
|
||||||
path = n->data;
|
|
||||||
ERR("ssl_ctx=%p extra private key is unused '%s'", ctx, path);
|
|
||||||
eina_stringshare_del(path);
|
|
||||||
*cfg.private_keys = eina_list_remove_list(*cfg.private_keys, n);
|
|
||||||
}
|
|
||||||
while (pk_node->next);
|
|
||||||
}
|
|
||||||
|
|
||||||
EINA_LIST_FOREACH_SAFE(*cfg.certificate_revocation_lists, n, n_next, path)
|
|
||||||
{
|
|
||||||
r = gnutls_certificate_set_x509_crl_file(ctx->x509_cred, path, GNUTLS_X509_FMT_PEM);
|
|
||||||
if (r < 0)
|
|
||||||
{
|
|
||||||
ERR("ssl_ctx=%p could not use certificate revocation lists from %s: %s",
|
|
||||||
ctx, path, gnutls_strerror(r));
|
|
||||||
eina_stringshare_del(path);
|
|
||||||
*cfg.certificate_revocation_lists = eina_list_remove_list(*cfg.certificate_revocation_lists, n);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
DBG("ssl_ctx=%p loaded certificate revocation lists '%s'", ctx, path);
|
|
||||||
}
|
|
||||||
if (certificate_revocation_lists_count && !*cfg.certificate_revocation_lists)
|
|
||||||
{
|
|
||||||
ERR("ssl_ctx=%p none of the required certificate revocation lists were loaded!", ctx);
|
|
||||||
return EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
EINA_LIST_FOREACH_SAFE(*cfg.certificate_authorities, n, n_next, path)
|
|
||||||
{
|
|
||||||
struct stat st;
|
|
||||||
|
|
||||||
r = 0;
|
|
||||||
if (stat(path, &st) != 0)
|
|
||||||
{
|
|
||||||
ERR("ssl_ctx=%p could not load certificate authorities from '%s': %s", ctx, path, eina_error_msg_get(errno));
|
|
||||||
eina_stringshare_del(path);
|
|
||||||
*cfg.certificate_authorities = eina_list_remove_list(*cfg.certificate_authorities, n);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
else if (S_ISDIR(st.st_mode))
|
|
||||||
r = gnutls_certificate_set_x509_trust_dir(ctx->x509_cred, path, GNUTLS_X509_FMT_PEM);
|
|
||||||
else
|
|
||||||
r = gnutls_certificate_set_x509_trust_file(ctx->x509_cred, path, GNUTLS_X509_FMT_PEM);
|
|
||||||
|
|
||||||
if (r < 0)
|
|
||||||
{
|
|
||||||
ERR("ssl_ctx=%p could not use certificate authorities from '%s': %s", ctx, path, gnutls_strerror(r));
|
|
||||||
eina_stringshare_del(path);
|
|
||||||
*cfg.certificate_authorities = eina_list_remove_list(*cfg.certificate_authorities, n);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
DBG("ssl_ctx=%p loaded certificate authorities '%s'", ctx, path);
|
|
||||||
}
|
|
||||||
if (certificate_authorities_count && !*cfg.certificate_authorities)
|
|
||||||
{
|
|
||||||
ERR("ssl_ctx=%p none of the required certificate authorities were loaded!", ctx);
|
|
||||||
return EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void *
|
|
||||||
efl_net_ssl_ctx_connection_new(Efl_Net_Ssl_Ctx *ctx)
|
|
||||||
{
|
|
||||||
gnutls_session_t session;
|
|
||||||
int r;
|
|
||||||
|
|
||||||
r = gnutls_init(&session, ctx->is_dialer ? GNUTLS_CLIENT : GNUTLS_SERVER);
|
|
||||||
if (r < 0)
|
|
||||||
{
|
|
||||||
ERR("ssl_ctx=%p could not create %s session: %s",
|
|
||||||
ctx, ctx->is_dialer ? "dialer" : "server", gnutls_strerror(r));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!ctx->priority)
|
|
||||||
{
|
|
||||||
r = gnutls_set_default_priority(session);
|
|
||||||
if (r < 0)
|
|
||||||
{
|
|
||||||
ERR("ssl_ctx=%p could not set default cipher priority: %s", ctx, gnutls_strerror(r));
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
r = gnutls_priority_set(session, ctx->priority);
|
|
||||||
if (r < 0)
|
|
||||||
{
|
|
||||||
ERR("ssl_ctx=%p could not set cipher priority: %s", ctx, gnutls_strerror(r));
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
r = gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, ctx->x509_cred);
|
|
||||||
if (r < 0)
|
|
||||||
{
|
|
||||||
ERR("ssl_ctx=%p could not set session credentials: %s", ctx, gnutls_strerror(r));
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
return session;
|
|
||||||
|
|
||||||
error:
|
|
||||||
gnutls_deinit(session);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Error
|
|
||||||
efl_net_ssl_ctx_setup(Efl_Net_Ssl_Ctx *ctx, Efl_Net_Ssl_Ctx_Config cfg)
|
|
||||||
{
|
|
||||||
Eina_Error err;
|
|
||||||
const char *priority;
|
|
||||||
int r;
|
|
||||||
|
|
||||||
EINA_SAFETY_ON_TRUE_RETURN_VAL(ctx->x509_cred != NULL, EALREADY);
|
|
||||||
|
|
||||||
switch (cfg.cipher)
|
|
||||||
{
|
|
||||||
case EFL_NET_SSL_CIPHER_AUTO:
|
|
||||||
priority = NULL;
|
|
||||||
break;
|
|
||||||
case EFL_NET_SSL_CIPHER_TLSV1:
|
|
||||||
priority = "NORMAL:%VERIFY_ALLOW_X509_V1_CA_CRT:!VERS-SSL3.0!VERS-TLS1.1:!VERS-TLS1.2";
|
|
||||||
break;
|
|
||||||
case EFL_NET_SSL_CIPHER_TLSV1_1:
|
|
||||||
priority = "NORMAL:%VERIFY_ALLOW_X509_V1_CA_CRT:!VERS-SSL3.0:!VERS-TLS1.0:!VERS-TLS1.2";
|
|
||||||
break;
|
|
||||||
case EFL_NET_SSL_CIPHER_TLSV1_2:
|
|
||||||
priority = "NORMAL:%VERIFY_ALLOW_X509_V1_CA_CRT:!VERS-SSL3.0:!VERS-TLS1.0:!VERS-TLS1.1";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
ERR("ssl_ctx=%p unsupported cipher %d", ctx, cfg.cipher);
|
|
||||||
return EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (priority)
|
|
||||||
{
|
|
||||||
const char *err_pos = NULL;
|
|
||||||
r = gnutls_priority_init(&ctx->priority, priority, &err_pos);
|
|
||||||
if (r < 0)
|
|
||||||
{
|
|
||||||
size_t off = err_pos - priority;
|
|
||||||
if (r == GNUTLS_E_INVALID_REQUEST)
|
|
||||||
{
|
|
||||||
ERR("ssl_ctx=%p invalid syntax on GNUTLS priority string offset %zd: '%s'", ctx, off, priority);
|
|
||||||
return EINVAL;
|
|
||||||
}
|
|
||||||
ERR("ssl_ctx=%p could not set GNUTLS priority offset %zd '%s': %s", ctx, off, priority, gnutls_strerror(r));
|
|
||||||
return EINVAL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
r = gnutls_certificate_allocate_credentials(&ctx->x509_cred);
|
|
||||||
if (r < 0)
|
|
||||||
{
|
|
||||||
ERR("ssl_ctx=%p could not allocate X509 credentials: %s", ctx, gnutls_strerror(r));
|
|
||||||
err = ENOSYS;
|
|
||||||
goto err_cert_alloc;
|
|
||||||
}
|
|
||||||
|
|
||||||
err = _efl_net_ssl_ctx_load_lists(ctx, cfg);
|
|
||||||
if (err)
|
|
||||||
{
|
|
||||||
ERR("ssl_ctx=%p failed to load certificate, private keys, CRL or CA", ctx);
|
|
||||||
goto err_load;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
err_load:
|
|
||||||
gnutls_certificate_free_credentials(ctx->x509_cred);
|
|
||||||
ctx->x509_cred = NULL;
|
|
||||||
err_cert_alloc:
|
|
||||||
gnutls_priority_deinit(ctx->priority);
|
|
||||||
ctx->priority = NULL;
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
efl_net_ssl_ctx_teardown(Efl_Net_Ssl_Ctx *ctx)
|
|
||||||
{
|
|
||||||
if (ctx->x509_cred)
|
|
||||||
{
|
|
||||||
gnutls_certificate_free_credentials(ctx->x509_cred);
|
|
||||||
ctx->x509_cred = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ctx->priority)
|
|
||||||
{
|
|
||||||
gnutls_priority_deinit(ctx->priority);
|
|
||||||
ctx->priority = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Error
|
|
||||||
efl_net_ssl_ctx_verify_mode_set(Efl_Net_Ssl_Ctx *ctx EINA_UNUSED, Efl_Net_Ssl_Verify_Mode verify_mode EINA_UNUSED)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Error
|
|
||||||
efl_net_ssl_ctx_hostname_verify_set(Efl_Net_Ssl_Ctx *ctx EINA_UNUSED, Eina_Bool hostname_verify EINA_UNUSED)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Error
|
|
||||||
efl_net_ssl_ctx_hostname_set(Efl_Net_Ssl_Ctx *ctx EINA_UNUSED, const char *hostname EINA_UNUSED)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -3816,6 +3816,19 @@ typedef void (*Ecore_Evas_Drag_Finished_Cb)(Ecore_Evas *ee, unsigned int seat, v
|
||||||
*/
|
*/
|
||||||
EAPI Eina_Bool ecore_evas_drag_start(Ecore_Evas *ee, unsigned int seat, Eina_Content *content, Ecore_Evas *drag_rep,
|
EAPI Eina_Bool ecore_evas_drag_start(Ecore_Evas *ee, unsigned int seat, Eina_Content *content, Ecore_Evas *drag_rep,
|
||||||
const char* action, Ecore_Evas_Drag_Finished_Cb terminate_cb, void *data);
|
const char* action, Ecore_Evas_Drag_Finished_Cb terminate_cb, void *data);
|
||||||
|
/**
|
||||||
|
* @brief Set the offset of the dragged symbol. Only valid during a drag
|
||||||
|
*
|
||||||
|
* @param[in] ee The Ecore Evas the drag operation started on.
|
||||||
|
* @param[in] seat The seat to use
|
||||||
|
* @param[in] offset The offset to apply to the upper left corner ofthe dragged window
|
||||||
|
*
|
||||||
|
* This must be called on the ee where ecore_evas_drag_start is called on, NOT on the drag representation
|
||||||
|
*
|
||||||
|
* @since 1.24
|
||||||
|
*/
|
||||||
|
EAPI void ecore_evas_drag_offset_set(Ecore_Evas *ee, unsigned int seat, Eina_Size2D offset);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Cancels an ongoing drag operation.
|
* @brief Cancels an ongoing drag operation.
|
||||||
|
|
|
@ -5645,10 +5645,28 @@ ecore_evas_drag_start(Ecore_Evas *ee, unsigned int seat, Eina_Content *content,
|
||||||
ee->drag.free = terminate_cb;
|
ee->drag.free = terminate_cb;
|
||||||
ee->drag.data = data;
|
ee->drag.data = data;
|
||||||
ee->drag.accepted = EINA_FALSE;
|
ee->drag.accepted = EINA_FALSE;
|
||||||
|
ee->drag.offset = EINA_SIZE2D(INT_MAX, INT_MAX);
|
||||||
|
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
ecore_evas_drag_offset_set(Ecore_Evas *ee, unsigned int seat, Eina_Size2D offset) {
|
||||||
|
Ecore_Evas_Selection_Seat_Buffers *buffers;
|
||||||
|
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN(ee);
|
||||||
|
buffers = _fetch_selection_buffers_of_seat(ee, seat, EINA_FALSE);
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN(buffers);
|
||||||
|
EINA_SAFETY_ON_TRUE_RETURN(buffers->selection_buffer[ECORE_EVAS_SELECTION_BUFFER_DRAG_AND_DROP_BUFFER] == NULL);
|
||||||
|
if (offset.w == INT_MAX || offset.h == INT_MAX)
|
||||||
|
{
|
||||||
|
ERR("Offset is INT_MAX, this is a reserved value! Executing Fallback!");
|
||||||
|
}
|
||||||
|
|
||||||
|
INF("Set offset to %d %d", offset.w, offset.h);
|
||||||
|
ee->drag.offset = offset;
|
||||||
|
}
|
||||||
|
|
||||||
EAPI Eina_Bool
|
EAPI Eina_Bool
|
||||||
ecore_evas_drag_cancel(Ecore_Evas *ee, unsigned int seat)
|
ecore_evas_drag_cancel(Ecore_Evas *ee, unsigned int seat)
|
||||||
{
|
{
|
||||||
|
|
|
@ -404,6 +404,7 @@ struct _Ecore_Evas
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
Ecore_Evas *rep;
|
Ecore_Evas *rep;
|
||||||
|
Eina_Size2D offset;
|
||||||
void *data;
|
void *data;
|
||||||
Ecore_Evas_Drag_Finished_Cb free;
|
Ecore_Evas_Drag_Finished_Cb free;
|
||||||
Eina_Bool accepted;
|
Eina_Bool accepted;
|
||||||
|
|
|
@ -2,17 +2,15 @@
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*FIXME: change OS specific value */
|
|
||||||
#if defined(__linux__) || defined(__FreeBSD__)
|
|
||||||
# include <linux/joystick.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#ifdef HAVE_EEZE
|
#ifdef HAVE_EEZE
|
||||||
#include "Eeze.h"
|
# if defined(__linux__)
|
||||||
|
# include <linux/joystick.h>
|
||||||
|
# endif
|
||||||
|
# include "Eeze.h"
|
||||||
#endif
|
#endif
|
||||||
#include "Ecore.h"
|
#include "Ecore.h"
|
||||||
#include "Ecore_Input.h"
|
#include "Ecore_Input.h"
|
||||||
|
|
|
@ -2534,6 +2534,7 @@ struct _Ecore_X_Event_Xkb
|
||||||
unsigned int base_mods; /** @since 1.21 */
|
unsigned int base_mods; /** @since 1.21 */
|
||||||
unsigned int latched_mods; /** @since 1.21 */
|
unsigned int latched_mods; /** @since 1.21 */
|
||||||
unsigned int locked_mods; /** @since 1.21 */
|
unsigned int locked_mods; /** @since 1.21 */
|
||||||
|
Eina_Bool map_notify; /** @since 1.27 */
|
||||||
};
|
};
|
||||||
typedef struct _Ecore_X_Event_Xkb Ecore_X_Event_Xkb; /** @since 1.7 */
|
typedef struct _Ecore_X_Event_Xkb Ecore_X_Event_Xkb; /** @since 1.7 */
|
||||||
typedef struct _Ecore_X_Event_Xkb Ecore_X_Xkb_State; /** @since 1.21 */
|
typedef struct _Ecore_X_Event_Xkb Ecore_X_Xkb_State; /** @since 1.21 */
|
||||||
|
|
|
@ -2470,28 +2470,24 @@ _ecore_x_event_handle_generic_event(XEvent *event)
|
||||||
#ifdef ECORE_XKB
|
#ifdef ECORE_XKB
|
||||||
|
|
||||||
void
|
void
|
||||||
free_hash(void *userdata EINA_UNUSED, void *funcdata EINA_UNUSED)
|
free_hash(void *data, void *ev)
|
||||||
{
|
{
|
||||||
eina_hash_del_by_data(emitted_events, (void*) 1);
|
eina_hash_del_by_key(emitted_events, (void *)&data);
|
||||||
|
if (ev) free(ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_ecore_x_event_handle_xkb(XEvent *xevent)
|
_ecore_x_event_handle_xkb(XEvent *xevent)
|
||||||
{
|
{
|
||||||
XkbEvent *xkbev;
|
XkbEvent *xkbev = (XkbEvent *)xevent;
|
||||||
|
Ecore_X_Event_Xkb *e;
|
||||||
xkbev = (XkbEvent *) xevent;
|
|
||||||
|
|
||||||
|
|
||||||
if (xkbev->any.xkb_type == XkbStateNotify)
|
if (xkbev->any.xkb_type == XkbStateNotify)
|
||||||
{
|
{
|
||||||
Ecore_X_Event_Xkb *e;
|
|
||||||
|
|
||||||
if (eina_hash_find(emitted_events, &xkbev->state.serial)) return;
|
if (eina_hash_find(emitted_events, &xkbev->state.serial)) return;
|
||||||
|
|
||||||
e = calloc(1, sizeof(Ecore_X_Event_Xkb));
|
e = calloc(1, sizeof(Ecore_X_Event_Xkb));
|
||||||
if (!e)
|
if (!e) return;
|
||||||
return;
|
|
||||||
|
|
||||||
e->group = xkbev->state.group;
|
e->group = xkbev->state.group;
|
||||||
e->base_group = xkbev->state.base_group;
|
e->base_group = xkbev->state.base_group;
|
||||||
|
@ -2502,14 +2498,18 @@ _ecore_x_event_handle_xkb(XEvent *xevent)
|
||||||
e->base_mods = xkbev->state.base_mods;
|
e->base_mods = xkbev->state.base_mods;
|
||||||
e->latched_mods = xkbev->state.latched_mods;
|
e->latched_mods = xkbev->state.latched_mods;
|
||||||
e->locked_mods = xkbev->state.locked_mods;
|
e->locked_mods = xkbev->state.locked_mods;
|
||||||
ecore_event_add(ECORE_X_EVENT_XKB_STATE_NOTIFY, e, free_hash, NULL);
|
ecore_event_add(ECORE_X_EVENT_XKB_STATE_NOTIFY, e, free_hash,
|
||||||
eina_hash_add(emitted_events, &xkbev->state.serial, (void*) 1);
|
(void *)(intptr_t)xkbev->new_kbd.serial);
|
||||||
|
eina_hash_add(emitted_events, &xkbev->state.serial, (void *)1);
|
||||||
}
|
}
|
||||||
else if ((xkbev->any.xkb_type == XkbNewKeyboardNotify) ||
|
else if ((xkbev->any.xkb_type == XkbNewKeyboardNotify) ||
|
||||||
(xkbev->any.xkb_type == XkbMapNotify))
|
(xkbev->any.xkb_type == XkbMapNotify))
|
||||||
{
|
{
|
||||||
if (eina_hash_find(emitted_events, &xkbev->state.serial)) return;
|
if (eina_hash_find(emitted_events, &xkbev->state.serial)) return;
|
||||||
|
|
||||||
|
e = calloc(1, sizeof(Ecore_X_Event_Xkb));
|
||||||
|
if (!e) return;
|
||||||
|
|
||||||
if (xkbev->any.xkb_type == XkbMapNotify)
|
if (xkbev->any.xkb_type == XkbMapNotify)
|
||||||
{
|
{
|
||||||
XkbMapNotifyEvent *xkbmapping = (XkbMapNotifyEvent *)xkbev;
|
XkbMapNotifyEvent *xkbmapping = (XkbMapNotifyEvent *)xkbev;
|
||||||
|
@ -2522,14 +2522,16 @@ _ecore_x_event_handle_xkb(XEvent *xevent)
|
||||||
_ecore_x_modifiers_get();
|
_ecore_x_modifiers_get();
|
||||||
_ecore_x_window_grab_resume();
|
_ecore_x_window_grab_resume();
|
||||||
_ecore_x_key_grab_resume();
|
_ecore_x_key_grab_resume();
|
||||||
|
e->map_notify = EINA_TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
XkbNewKeyboardNotifyEvent *xkbnkn = (void*)xkbev;
|
XkbNewKeyboardNotifyEvent *xkbnkn = (void*)xkbev;
|
||||||
if (!(xkbnkn->changed & XkbNKN_KeycodesMask)) return;
|
if (!(xkbnkn->changed & XkbNKN_KeycodesMask)) return;
|
||||||
}
|
}
|
||||||
ecore_event_add(ECORE_X_EVENT_XKB_NEWKBD_NOTIFY, NULL, free_hash, NULL);
|
ecore_event_add(ECORE_X_EVENT_XKB_NEWKBD_NOTIFY, e, free_hash,
|
||||||
eina_hash_add(emitted_events, &xkbev->new_kbd.serial, (void*) 1);
|
(void *)(intptr_t)xkbev->new_kbd.serial);
|
||||||
|
eina_hash_add(emitted_events, &xkbev->new_kbd.serial, (void *)1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* ifdef ECORE_XKB */
|
#endif /* ifdef ECORE_XKB */
|
||||||
|
|
|
@ -465,7 +465,14 @@ ecore_x_root_screen_barriers_set(Ecore_X_Rectangle *screens, int num)
|
||||||
static int bar_num = 0;
|
static int bar_num = 0;
|
||||||
static int bar_alloc = 0;
|
static int bar_alloc = 0;
|
||||||
Region reg, reg2, reg3;
|
Region reg, reg2, reg3;
|
||||||
|
Window rwin, cwin;
|
||||||
|
int rx, ry, wx, wy;
|
||||||
int i, j;
|
int i, j;
|
||||||
|
int closest_dist, dist;
|
||||||
|
int sx, sy, dx, dy;
|
||||||
|
unsigned int mask;
|
||||||
|
Eina_Bool inside = EINA_FALSE;
|
||||||
|
Ecore_X_Rectangle *closest_screen = NULL;
|
||||||
|
|
||||||
// clear out old root screen barriers....
|
// clear out old root screen barriers....
|
||||||
if (bar)
|
if (bar)
|
||||||
|
@ -476,6 +483,55 @@ ecore_x_root_screen_barriers_set(Ecore_X_Rectangle *screens, int num)
|
||||||
}
|
}
|
||||||
free(bar);
|
free(bar);
|
||||||
}
|
}
|
||||||
|
// ensure mouse pointer is insude the new set of screens if it is not
|
||||||
|
// inside them right now
|
||||||
|
XQueryPointer(_ecore_x_disp, DefaultRootWindow(_ecore_x_disp),
|
||||||
|
&rwin, &cwin, &rx, &ry, &wx, &wy, &mask);
|
||||||
|
for (i = 0; i < num; i++)
|
||||||
|
{
|
||||||
|
if ((rx >= screens[i].x) &&
|
||||||
|
(rx < (screens[i].x + (int)screens[i].width)) &&
|
||||||
|
(ry >= screens[i].y) &&
|
||||||
|
(ry < (screens[i].y + (int)screens[i].height)))
|
||||||
|
{
|
||||||
|
inside = EINA_TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (!closest_screen) closest_screen = &(screens[i]);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// screen center
|
||||||
|
sx = closest_screen->x + (closest_screen->width / 2);
|
||||||
|
sy = closest_screen->y + (closest_screen->height / 2);
|
||||||
|
dx = rx - sx;
|
||||||
|
dy = ry - sy;
|
||||||
|
// square dist to center
|
||||||
|
closest_dist = ((dx * dx) + (dy * dy));
|
||||||
|
// screen center
|
||||||
|
sx = screens[i].x + (screens[i].width / 2);
|
||||||
|
sy = screens[i].y + (screens[i].height / 2);
|
||||||
|
dx = rx - sx;
|
||||||
|
dy = ry - sy;
|
||||||
|
// square dist to center
|
||||||
|
dist = ((dx * dx) + (dy * dy));
|
||||||
|
// if closer than previous closest, then this screen is closer
|
||||||
|
if (dist < closest_dist) closest_screen = &(screens[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// if the pointer is not inside oneof the new screen areas then
|
||||||
|
// move it to the center of the closest one to ensure it doesn't get
|
||||||
|
// stuck outside
|
||||||
|
if ((!inside) && (closest_screen))
|
||||||
|
{
|
||||||
|
// screen center
|
||||||
|
sx = closest_screen->x + (closest_screen->width / 2);
|
||||||
|
sy = closest_screen->y + (closest_screen->height / 2);
|
||||||
|
// move pointer there
|
||||||
|
XWarpPointer(_ecore_x_disp, None,
|
||||||
|
DefaultRootWindow(_ecore_x_disp),
|
||||||
|
0, 0, 0, 0, sx, sy);
|
||||||
|
}
|
||||||
|
|
||||||
bar = NULL;
|
bar = NULL;
|
||||||
bar_num = 0;
|
bar_num = 0;
|
||||||
bar_alloc = 0;
|
bar_alloc = 0;
|
||||||
|
|
|
@ -1636,7 +1636,7 @@ ecore_x_netwm_moveresize_request_send(Ecore_X_Window win,
|
||||||
xev.xclient.data.l[3] = button;
|
xev.xclient.data.l[3] = button;
|
||||||
xev.xclient.data.l[4] = 1;
|
xev.xclient.data.l[4] = 1;
|
||||||
|
|
||||||
XSendEvent(_ecore_x_disp, win, False,
|
XSendEvent(_ecore_x_disp, DefaultRootWindow(_ecore_x_disp), False,
|
||||||
SubstructureNotifyMask | SubstructureRedirectMask, &xev);
|
SubstructureNotifyMask | SubstructureRedirectMask, &xev);
|
||||||
if (_ecore_xlib_sync) ecore_x_sync();
|
if (_ecore_xlib_sync) ecore_x_sync();
|
||||||
}
|
}
|
||||||
|
|
|
@ -382,7 +382,7 @@ _drm_vblank_handler(int fd EINA_UNUSED,
|
||||||
D(" @%1.5f vblank %i\n", ecore_time_get(), frame);
|
D(" @%1.5f vblank %i\n", ecore_time_get(), frame);
|
||||||
if (pframe != frame)
|
if (pframe != frame)
|
||||||
{
|
{
|
||||||
#define DELTA_COUNT 10
|
#if 0 // disable timestamp from vblank and use time event arrived
|
||||||
double t = (double)sec + ((double)usec / 1000000);
|
double t = (double)sec + ((double)usec / 1000000);
|
||||||
unsigned long long tusec, ptusec, tdelt = 0;
|
unsigned long long tusec, ptusec, tdelt = 0;
|
||||||
static unsigned int psec = 0, pusec = 0;
|
static unsigned int psec = 0, pusec = 0;
|
||||||
|
@ -411,10 +411,15 @@ _drm_vblank_handler(int fd EINA_UNUSED,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_drm_fail_count = 0;
|
_drm_fail_count = 0;
|
||||||
_drm_send_time(t);
|
|
||||||
pframe = frame;
|
|
||||||
psec = sec;
|
|
||||||
pusec = usec;
|
pusec = usec;
|
||||||
|
psec = sec;
|
||||||
|
#else
|
||||||
|
double t = ecore_time_get();
|
||||||
|
_drm_send_time(t);
|
||||||
|
sec = 0;
|
||||||
|
usec = 0;
|
||||||
|
#endif
|
||||||
|
pframe = frame;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -4082,10 +4082,8 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
|
||||||
}
|
}
|
||||||
if (edje_object_update_hints_get(ep->typedata.swallow->swallowed_object))
|
if (edje_object_update_hints_get(ep->typedata.swallow->swallowed_object))
|
||||||
{
|
{
|
||||||
Edje *ted;
|
Edje *ted = _edje_fetch(ep->typedata.swallow->swallowed_object);
|
||||||
|
if (ted) _edje_recalc_do(ted);
|
||||||
ted = _edje_fetch(ep->typedata.swallow->swallowed_object);
|
|
||||||
_edje_recalc_do(ted);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Edje_Size *min = NULL, *max = NULL;
|
Edje_Size *min = NULL, *max = NULL;
|
||||||
|
|
|
@ -13731,6 +13731,21 @@ _edje_source_with_double_values_append(const char *param_name, char val_num, dou
|
||||||
|
|
||||||
#define INHERIT_CHECK_STRING(ATTRIBUTE_STR) (strcmp(inherit_pd->ATTRIBUTE_STR, pd->ATTRIBUTE_STR))
|
#define INHERIT_CHECK_STRING(ATTRIBUTE_STR) (strcmp(inherit_pd->ATTRIBUTE_STR, pd->ATTRIBUTE_STR))
|
||||||
|
|
||||||
|
static inline char *
|
||||||
|
gen_indent_relative_str(int indent_space)
|
||||||
|
{
|
||||||
|
size_t str_len = strlen("relative") + indent_space + 1;
|
||||||
|
char *relative_str = malloc(str_len);
|
||||||
|
|
||||||
|
if (!relative_str)
|
||||||
|
{
|
||||||
|
ERR("Out of memory");
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
snprintf(relative_str, str_len, "%*srelative", indent_space, "");
|
||||||
|
return relative_str;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_edje_generate_source_state_relative(Edje *ed,
|
_edje_generate_source_state_relative(Edje *ed,
|
||||||
Edje_Part_Description_Common *pd,
|
Edje_Part_Description_Common *pd,
|
||||||
|
@ -13826,13 +13841,14 @@ _edje_generate_source_state_relative(Edje *ed,
|
||||||
|
|
||||||
if (relative)
|
if (relative)
|
||||||
{
|
{
|
||||||
char relative_str[strlen("relative") + indent_space + 1];
|
char *relative_str = gen_indent_relative_str(indent_space);
|
||||||
snprintf(relative_str, strlen("relative") + indent_space + 1,
|
|
||||||
"%*srelative", indent_space, "");
|
_edje_source_with_double_values_append
|
||||||
_edje_source_with_double_values_append(relative_str, 2,
|
(relative_str, 2,
|
||||||
TO_DOUBLE(pd->rel1.relative_x),
|
TO_DOUBLE(pd->rel1.relative_x),
|
||||||
TO_DOUBLE(pd->rel1.relative_y),
|
TO_DOUBLE(pd->rel1.relative_y),
|
||||||
buf, &ret);
|
buf, &ret);
|
||||||
|
free(relative_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (offset)
|
if (offset)
|
||||||
|
@ -13945,13 +13961,14 @@ _edje_generate_source_state_relative(Edje *ed,
|
||||||
|
|
||||||
if (relative)
|
if (relative)
|
||||||
{
|
{
|
||||||
char relative_str[strlen("relative") + indent_space + 1];
|
char *relative_str = gen_indent_relative_str(indent_space);
|
||||||
snprintf(relative_str, strlen("relative") + indent_space + 1,
|
|
||||||
"%*srelative", indent_space, "");
|
_edje_source_with_double_values_append
|
||||||
_edje_source_with_double_values_append(relative_str, 2,
|
(relative_str, 2,
|
||||||
TO_DOUBLE(pd->rel2.relative_x),
|
TO_DOUBLE(pd->rel2.relative_x),
|
||||||
TO_DOUBLE(pd->rel2.relative_y),
|
TO_DOUBLE(pd->rel2.relative_y),
|
||||||
buf, &ret);
|
buf, &ret);
|
||||||
|
free(relative_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (offset)
|
if (offset)
|
||||||
|
@ -14196,13 +14213,14 @@ fill:
|
||||||
|
|
||||||
if (orig_rel)
|
if (orig_rel)
|
||||||
{
|
{
|
||||||
char relative[strlen("relative") + indent_space + 1];
|
char *relative_str = gen_indent_relative_str(indent_space);
|
||||||
snprintf(relative, strlen("relative") + indent_space + 1,
|
|
||||||
"%*srelative", indent_space, "");
|
_edje_source_with_double_values_append
|
||||||
_edje_source_with_double_values_append(relative, 2,
|
(relative_str, 2,
|
||||||
TO_DOUBLE(img->image.fill.pos_rel_x),
|
TO_DOUBLE(img->image.fill.pos_rel_x),
|
||||||
TO_DOUBLE(img->image.fill.pos_rel_y),
|
TO_DOUBLE(img->image.fill.pos_rel_y),
|
||||||
buf, &ret);
|
buf, &ret);
|
||||||
|
free(relative_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (orig_abs)
|
if (orig_abs)
|
||||||
|
@ -14226,13 +14244,14 @@ fill:
|
||||||
|
|
||||||
if (size_rel)
|
if (size_rel)
|
||||||
{
|
{
|
||||||
char relative[strlen("relative") + indent_space + 1];
|
char *relative_str = gen_indent_relative_str(indent_space);
|
||||||
snprintf(relative, strlen("relative") + indent_space + 1,
|
|
||||||
"%*srelative", indent_space, "");
|
_edje_source_with_double_values_append
|
||||||
_edje_source_with_double_values_append(relative, 2,
|
(relative_str, 2,
|
||||||
TO_DOUBLE(img->image.fill.rel_x),
|
TO_DOUBLE(img->image.fill.rel_x),
|
||||||
TO_DOUBLE(img->image.fill.rel_y),
|
TO_DOUBLE(img->image.fill.rel_y),
|
||||||
buf, &ret);
|
buf, &ret);
|
||||||
|
free(relative_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (size_abs)
|
if (size_abs)
|
||||||
|
@ -14539,13 +14558,14 @@ fill_proxy:
|
||||||
|
|
||||||
if (orig_rel)
|
if (orig_rel)
|
||||||
{
|
{
|
||||||
char relative[strlen("relative") + indent_space + 1];
|
char *relative_str = gen_indent_relative_str(indent_space);
|
||||||
snprintf(relative, strlen("relative") + indent_space + 1,
|
|
||||||
"%*srelative", indent_space, "");
|
_edje_source_with_double_values_append
|
||||||
_edje_source_with_double_values_append(relative, 2,
|
(relative_str, 2,
|
||||||
TO_DOUBLE(pro->proxy.fill.pos_rel_x),
|
TO_DOUBLE(pro->proxy.fill.pos_rel_x),
|
||||||
TO_DOUBLE(pro->proxy.fill.pos_rel_y),
|
TO_DOUBLE(pro->proxy.fill.pos_rel_y),
|
||||||
buf, &ret);
|
buf, &ret);
|
||||||
|
free(relative_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (orig_abs)
|
if (orig_abs)
|
||||||
|
@ -14569,13 +14589,14 @@ fill_proxy:
|
||||||
|
|
||||||
if (size_rel)
|
if (size_rel)
|
||||||
{
|
{
|
||||||
char relative[strlen("relative") + indent_space + 1];
|
char *relative_str = gen_indent_relative_str(indent_space);
|
||||||
snprintf(relative, strlen("relative") + indent_space + 1,
|
|
||||||
"%*srelative", indent_space, "");
|
_edje_source_with_double_values_append
|
||||||
_edje_source_with_double_values_append(relative, 2,
|
(relative_str, 2,
|
||||||
TO_DOUBLE(pro->proxy.fill.rel_x),
|
TO_DOUBLE(pro->proxy.fill.rel_x),
|
||||||
TO_DOUBLE(pro->proxy.fill.rel_y),
|
TO_DOUBLE(pro->proxy.fill.rel_y),
|
||||||
buf, &ret);
|
buf, &ret);
|
||||||
|
free(relative_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (size_abs)
|
if (size_abs)
|
||||||
|
@ -14875,7 +14896,7 @@ _edje_generate_source_state_text(Edje *ed, Edje_Part_Description_Common *pd,
|
||||||
source = (txt->text.id_source == -1) ? EINA_FALSE : EINA_TRUE;
|
source = (txt->text.id_source == -1) ? EINA_FALSE : EINA_TRUE;
|
||||||
text_source = (txt->text.id_text_source == -1) ? EINA_FALSE : EINA_TRUE;
|
text_source = (txt->text.id_text_source == -1) ? EINA_FALSE : EINA_TRUE;
|
||||||
ellipsis = EQ(txt->text.ellipsis, ZERO) ? EINA_FALSE : EINA_TRUE;
|
ellipsis = EQ(txt->text.ellipsis, ZERO) ? EINA_FALSE : EINA_TRUE;
|
||||||
style = (edje_string_id_get(&txt->text.style) == 0) ? EINA_FALSE : EINA_TRUE;
|
style = (edje_string_id_get(&txt->text.style) == NULL) ? EINA_FALSE : EINA_TRUE;
|
||||||
color_3 = ((txt->text.color3.r == 0) && (txt->text.color3.g == 0) &&
|
color_3 = ((txt->text.color3.r == 0) && (txt->text.color3.g == 0) &&
|
||||||
(txt->text.color3.b == 0) && (txt->text.color3.a == 128)) ? EINA_FALSE : EINA_TRUE;
|
(txt->text.color3.b == 0) && (txt->text.color3.a == 128)) ? EINA_FALSE : EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2002,8 +2002,8 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
||||||
_edje_emit(ed, "entry,key,backspace", rp->part->name);
|
_edje_emit(ed, "entry,key,backspace", rp->part->name);
|
||||||
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
|
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
|
||||||
}
|
}
|
||||||
else if (!strcmp(ev->key, "Delete") ||
|
else if ((!strcmp(ev->key, "Delete") ||
|
||||||
(!strcmp(ev->key, "KP_Delete") && !ev->string))
|
(!strcmp(ev->key, "KP_Delete") && !ev->string)) && (!shift))
|
||||||
{
|
{
|
||||||
_compose_seq_reset(en);
|
_compose_seq_reset(en);
|
||||||
if (control)
|
if (control)
|
||||||
|
@ -2083,9 +2083,9 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
||||||
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
|
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
|
||||||
}
|
}
|
||||||
#if defined(__APPLE__) && defined(__MACH__)
|
#if defined(__APPLE__) && defined(__MACH__)
|
||||||
else if ((super) && (!shift) && (!strcmp(ev->key, "v")))
|
else if (((super) && (!shift) && (!strcmp(ev->key, "v"))) || ((shift) && (!super) && (!strcmp(ev->key, "Insert"))))
|
||||||
#else
|
#else
|
||||||
else if ((control) && (!shift) && (!strcmp(ev->key, "v")))
|
else if (((control) && (!shift) && (!strcmp(ev->key, "v"))) || ((shift) && (!control) && (!strcmp(ev->key, "Insert"))))
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
_compose_seq_reset(en);
|
_compose_seq_reset(en);
|
||||||
|
@ -2131,6 +2131,13 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
||||||
_edje_emit(ed, "entry,cut,notify", rp->part->name);
|
_edje_emit(ed, "entry,cut,notify", rp->part->name);
|
||||||
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
|
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
|
||||||
}
|
}
|
||||||
|
else if ((!strcmp(ev->key, "Delete") ||
|
||||||
|
(!strcmp(ev->key, "KP_Delete") && !ev->string)) && (shift))
|
||||||
|
{
|
||||||
|
_compose_seq_reset(en);
|
||||||
|
_edje_emit(ed, "entry,cut,notify", rp->part->name);
|
||||||
|
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
|
||||||
|
}
|
||||||
#if defined(__APPLE__) && defined(__MACH__)
|
#if defined(__APPLE__) && defined(__MACH__)
|
||||||
else if ((super) && (!strcmp(ev->key, "z")))
|
else if ((super) && (!strcmp(ev->key, "z")))
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -511,7 +511,7 @@ _edje_message_propagate_send(Edje *ed, Edje_Queue queue, Edje_Message_Type type,
|
||||||
if (_injob > 0)
|
if (_injob > 0)
|
||||||
{
|
{
|
||||||
if (!_job_loss_timer)
|
if (!_job_loss_timer)
|
||||||
_job_loss_timer = ecore_timer_add(0.001, _edje_job_loss_timer, NULL);
|
_job_loss_timer = ecore_timer_add(0.000, _edje_job_loss_timer, NULL);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -691,6 +691,23 @@ eet_close(Eet_File *ef);
|
||||||
EAPI Eet_Error
|
EAPI Eet_Error
|
||||||
eet_sync(Eet_File *ef);
|
eet_sync(Eet_File *ef);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ingroup Eet_File_Group
|
||||||
|
* @brief does exactly what eet_xunc() does but also fsyncs file data
|
||||||
|
* @param ef A valid eet file handle.
|
||||||
|
* @return An eet error identifier.
|
||||||
|
*
|
||||||
|
* This function does everything eet_xunc() does with one addition - it
|
||||||
|
* ensures data is written to/synced to disk (as best is possible) by
|
||||||
|
* calling fdatasync() on the file before writes are all queued/done.
|
||||||
|
*
|
||||||
|
* If the eet file handle is not valid nothing will be done.
|
||||||
|
*
|
||||||
|
* @since 1.27
|
||||||
|
*/
|
||||||
|
EAPI Eet_Error
|
||||||
|
eet_sync_sync(Eet_File *ef);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ingroup Eet_File_Group
|
* @ingroup Eet_File_Group
|
||||||
* @brief Returns a handle to the shared string dictionary of the Eet file
|
* @brief Returns a handle to the shared string dictionary of the Eet file
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue