CoreAudio support was initially introduced by commit
62e29b39f4 as an experimental feature.
It played basic sounds, but suffered from drawbacks: it was controlling
the master channel, and therefore any sound played by ecore_audio would
shut down a previous sound (e.g. background music) for the time of the
sound being played. So that wasn't exactly great... Also, after some
time, some hangs have been reported when playing a sound on input. Most
of the time, it translated as a pause in the main loop (see T3797).
More recently (several months ago), ecore_audio with CoreAudio stopped
working during 1.19 development...
So... CoreAudio support on macOS has never been great. And now it's fully
broken. Instead of trying to revive the thing, let just use PulseAudio.
PulseAudio can be installed without any trouble on macOS thanks to
package managers such as Homebrew. Actually, the efl package provided by
Homebrew already provides PulseAudio as a dependency. And it actually
just works very fine. Dropping CoreAudio seems therefore a nice option:
removes unmaintained code, fixes bugs, and add features.
When a 'make dist' is executed on a repository that does not have
CoreAudio support, eolian files required for CoreAudio compilation will
not be distributed, making the source distribution incompatible where
CoreAudio is required.
There is the same potential issue for pulseaudio, but as it is a basic
requirement, it is likely to always have been distributed because the
distribution was always created from a base which enabled pulseaudio.
This allows to produce on Linux a sources tarball usable on Mac OS X.
@fix
so libpuls and libsndfile suck in dependencies. they suck in so much
that by the time linking is done we've written to about 230kb of
PRIVATE MEMORY as dirty pages in symbol tablesm global veriables etc.
etc. - this is just horrible. especially if an app never makes any
sound... it's just wasted memory. this stuff is invisible to normal
memory debug tools. so this begins to address things. please see
T4227. my numbers now put me at:
1780Kb total dirty writable mapped from library file pages. down from
2012Kb.
This fixes some memory bloat reported in the above ticket, but there
is more to fix for sure.
@fix
We hit another argument too long error with CLEANFILES. Moving the generated
files for js and lua into separated variables and cleaning them manually fixes
the issue.
This is again to avoid the "Argument list too long" error we are hitting more and
more now. Given we just merged elementary, emotion generic players, evas generic
loaders and elm_code it is not surprising we are hitting it again.
This time the number of files being hold in DISTFILES has just grown to big so a
make dist was no longer possible. If one looks at what the DISTFILES variable
from automake holds you can image it grows a lot with all the source files plus
generated files we have in tree now.
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
To cut off a big chunk but still keep all the other automagic in place for
SOURCE files I went and renamed the EXTRA_DIST in src/ to EXTRA_DIST2 and handle
the files in a dist-hook now.
Another thing to note here is that this also only happens as we have the one big
Makefile with includes. If we go back to per directory Makefiles this problem
should vanish as well. In any case we need a solution for 1.18 now and this is
what I have to offer. If you have a cleaner solution in mind feel welcome to
test it out and if everything we need keeps working (make, make examples,
make check, make benchmark, make dist and make distcheck) go ahead.
We have been putting the generated eo files and BUILT_SOURCES into CLEANFILES
several times. So far this have not been a real problem but with the elm merge
and more and more eo files showing up this did explode recently.
During make distcheck a lot of files kept being around and make complained about
them. It took some digging to find the arguments list to long error. If you want
details on this great limitation have a look here:
http://www.linuxjournal.com/article/6060
In our case we have been lucky enough that we just appened many files over and
over again. Not doing that solves the issue for now. My testing showed no
problems but if I missed something let me know.
Fixes T3386
To configure efl sources with bindings to use in nodejs add ––with-js=nodejs in configure flags to generate node files
$ configure --with-js=nodejs
and compile normally with:
$ make
$ make install
To use, you have to require efl:
efl = require('efl')
The bindings is divided in two parts: generated and manually
written. The generation uses the Eolian library for parsing Eo files
and generate C++ code that is compiled against V8 interpreter library
to create a efl.node file that can be required in a node.js instance.
@feature
Summary:
Ecore_Audio now supports Apple's CoreAudio to play sounds read by libsndfile.
edje_multisense integrates this new feature to enable PLAY_SAMPLE on OS X.
Test Plan:
Compiles, links and installs fine on OS X.
Run terminology and elementary_test to hear sound played on user input.
Reviewers: raster, naguirre, cedric
Reviewed By: cedric
Subscribers: plamot, cedric
Differential Revision: https://phab.enlightenment.org/D2295
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This cleans up a lot of the build system. This makes everything
consistent, clean, less redundant and also fixes the issue of make clean
not cleaning up generated files.
The VIO wrapper functions are needed from the sndfile inputs and outputs
so move them to a separate file and access from both.
Signed-off-by: Daniel Willmann <d.willmann@samsung.com>
Now instead of having ifdefs in the .c files we just don't compile the
ones we don't need. Much cleaner.
Signed-off-by: Daniel Willmann <d.willmann@samsung.com>
A protected read function must now be implemented by the child class to
perform the actual reading.
Signals on playback loop and end are sent.
Signed-off-by: Daniel Willmann <d.willmann@samsung.com>
Instead of -I$(top_srcdir)... -I$(top_builddir)... and then do it for
the .la, use the EFL_ macros to generate the contents to be used in
automake files.
There is a nasty bit that libtool will parse Makefile*.am and will not
get _DEPENDENCIES from _LIBADD and _LDADD if these are in
@REPLACEMENT@. To solve this we must explicitly set _DEPENDENCIES. The
contents of this is almost the same as _LIBADD or _LDADD with the
"_INTERNAL_" replacement name.
I hope the code will be result will be shorter and consistent as there
is less places to change when we add/remove dependencies.
Statistics are quite impressive (diffstat):
{{{
37 files changed, 663 insertions(+), 1599 deletions(-)
}}}
SVN revision: 82785
Carefully compared 'svn export' and 'make dist' results and couple of
files were missing.
Changes:
* Makefile.am: removed all .pc from EXTRA_DIST, we shouldn't
distribute them here as they will contain ./configure data such as
install location.
* src/Makefile.am: moved all if-endif to files, otherwise EXTRA_DIST
won't work properly. We must EXTRA_DIST outside of the if-endif
block.
* static_libs/liblinebreak: removed couple of unused files.
SVN revision: 82241
- remove EFL_LIBS and EFL_CFLAGS, use per-lib values that inherit
from EFL (general)
- add NAME_LDFLAGS and EFL_LDFLAGS for linker flags.
- LDADD (binaries) now use NAME_LDFLAGS instead of NAME_LIBS, as they
link to libname.la and that will pull in the libtool dependencies
SVN revision: 81915
tree simply is broken and doesnt compile. error here:
...
src/Makefile_Evas.am:1809: unterminated conditionals: HAVE_WINDOWS_TRUE
src/Makefile.am:24: src/Makefile_Evas.am' included from here
src/Makefile.am:128: unterminated conditionals: HAVE_WINDOWS_TRUE
src/Makefile.am: installing ./depcomp'
automake: ####################
automake: ## Internal Error ##
automake: ####################
automake: undefined condition TRUE' for RECURSIVE_TARGETS'
automake: RECURSIVE_TARGETS:
automake: {
automake: HAVE_WINDOWS => {
automake: type: +=
automake: where: /usr/share/automake-1.11/am/texinfos.am:
automake: comment:
automake: value: dvi-recursive html-recursive info-recursive
pdf-recursive ps-recursive \
automake: install-dvi-recursive \
automake: install-html-recursive \
automake: install-info-recursive \
automake: install-pdf-recursive \
automake: install-ps-recursive all-recursive check-recursive
installcheck-recursive
automake: owner: Automake
automake: }
automake: }
automake:
automake: Please contact <bug-automake@gnu.org>.
at /usr/share/automake-1.11/Automake/Channels.pm line 657
Automake::Channels::msg('automake', '', 'undefined condition
TRUE\' for RECURSIVE_TARGETS\'\x{a}RECURSIV...') called at
/usr/share/automake-1.11/Automake/ChannelDefs.pm line 208
Automake::ChannelDefs::prog_error('undefined condition TRUE\'
for RECURSIVE_TARGETS\'\x{a}RECURSIV...') called at
/usr/share/automake-1.11/Automake/Item.pm line 94
Automake::Item::rdef('Automake::Variable=HASH(0x38cbe20)',
'Automake::Condition=HASH(0x2832a48)') called at /usr/bin/automake
line 4102
Automake::handle_subdirs() called at /usr/bin/automake line 8305
Automake::generate_makefile('src/Makefile.am',
'src/Makefile.in') called at /usr/bin/automake line 8602
Automake::handle_makefile('src/Makefile.in') called at
/usr/bin/automake line 8616
Automake::handle_makefiles_serial() called at
/usr/bin/automake line 8769
autoreconf: automake failed with exit status: 255
...
i looked at the HAVE_WINDOWS if's and it seems fine to me - i couldnt
find what was missing, so i had to resort to a revert instead of fix :(
sorry :(
SVN revision: 81267
Disabled by default, enable with --enable-audio
ALSA support is disabled as it is not there yet. Pulseaudio should work
though.
Support for .ogg and .wav is there as well (.mp3 is not)
Signed-off-by: Daniel Willmann <d.willmann@samsung.com>
SVN revision: 81000