Ecore_Audio.h had #ifdef HAVE_PULSE ... and that is just so wrong as
this is something an ap[p may or may not set in its config.h ... but
this certainly hase no place in our public headers. the api's there
should always be there... symbols always... just imtplementation may
be empty ... though ecore_audio doesnt build at all without pulse...
so it's moot.
so fix this build issue i found when fixing e build issues with meson
changes etc.
@fix
Summary: I had fixed some typos and wrong expressions, such as capital letters, $simbols in .eo and singulars in Ecore, Ecore_Audio, Ecore_Cocoa, Ecore_Con, and Ector API reference doxygen.
Test Plan: Doxygen Revision
Reviewers: Jaehyun_Cho, stefan, jpeg, cedric, raster
Reviewed By: Jaehyun_Cho
Differential Revision: https://phab.enlightenment.org/D4943
in some cases, pulse events trigger spawning another pulse instance, and
the environment at this time is used to determine whether to attempt an
x11 connection
fix T2599
@fix
Summary:
pa_stream's write callback requires to size of stream data
using 'len' parameter.
This size depend on pulse audio's internal status and not
consistent.
When a efl read audio's last stream, length of read('bread')
is less than write callback's 'len' parameter.
If the gap between 'len' and 'bread' is small,
last stream is played fortunately.
Otherwise, the last stream is discarded.
(It is doubtful about pa_stream's pre-buffering.)
To prevent it, push silent stream which is amount
of deficient length.
@fix T5281
Reviewers: raster
Reviewed By: raster
Subscribers: cedric, jpeg, woohyun
Maniphest Tasks: T5281
Differential Revision: https://phab.enlightenment.org/D4726
Summary: I had fixed some typos and wrong expressions, euch as capital letters, singular Etc. in Ecore and Edje API reference doxygen.
Test Plan: Doxygen Revision
Reviewers: stefan, cedric, raster, Jaehyun_Cho, jpeg
Subscribers: conr2d
Differential Revision: https://phab.enlightenment.org/D4677
This covers ecore audio, avahi, buffer and con.
Summary: There are some typos and cacologigue statements in
doxygen of ecore_audio, ecore_avahi, ecore_buffer, and ecore_con.
Test Plan: API Doxygen Revision
Reviewers: stefan, cedric, raster, Jaehyun_Cho
Subscribers: jpeg, conr2d
Differential Revision: https://phab.enlightenment.org/D4652
Now you can't use the same syntax as you would for a method to
implement a property as whole, instead you need to specify the
getter and/or setter explicitly. This is to allow parent classes
to expand their properties without altering behavior of the child
classes.
pulse insists on connecting to the xserver on init/setup context if:
1. DISPLAY is set
AND
2. DISPLAY is not empty
so to do a pretty horrible worka-round, empty off the display if its
set so pa doesnt go connect to x and do this if WAYLAND_DISPLAy is set
assuming we'll use wayland then. this is far better than a solid
rock-hard hang. :)
@fix
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.
Efl.Object.event_callback_call no longer calls legacy smart callbacks;
calling only event callbacks registered with the given event description
pointer.
Create the method Efl.Object.event_callback_legacy_call to inherit the old
behavior from Efl.Object.event_callback_call, calling both Efl.Object events
and legacy smart callbacks.
Update all other files accordingly in order to still supply legacy
callbacks while they are necessary.
This removes some useless code in various places, where the
switch from eo_do() to standard function call was not properly
refactored.
This changes:
type ret = 0;
ret = my_eo_function();
return ret;
To:
return my_eo_function();
This was code for sndfile. sndfile module should have been
used instead of the pulseaudio one.
It led to a build break when having sndfile but not pulseaudio.
Ref: 879d93377b
so drop trying to appease the openbsd packages and stick to "upstream
so major versions" and let users fix their systems with symlinks. also
report what we are looking for so they have a chance to symlink to
make efl happy.
at some point we should make a single simple runtime lib linker
subsystem in efl so all these errors are reported in the same way,
input libray names are listed in a simple consistent way etc. etc.
for now we have 3 locations in efl that do this and they are roughly
similar. we can unify it later.
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
Basically everyone should have it. If not, maybe we should consider
to test the value of _POSIX_C_SOURCE before testing platform specific
defines, or adding a feature check.
Fixes the following warning on DragonFlyBSD:
lib/ecore_audio/ecore_audio_obj_out_pulse.c:282:60: warning: implicit declaration of function 'basename' [-Wimplicit-function-declaration]
class_vars.context = pa_context_new(class_vars.api, basename(argv[0]));
^
lib/ecore_audio/ecore_audio_obj_out_pulse.c:282:60: warning: passing argument 2 of 'pa_context_new' makes pointer from integer without a cast [-Wint-conversion]
In file included from /usr/local/include/pulse/pulseaudio.h:29:0,
from lib/ecore_audio/ecore_audio_private.h:17,
from lib/ecore_audio/ecore_audio_obj_out_pulse.c:18:
/usr/local/include/pulse/context.h:172:13: note: expected 'const char *' but argument is of type 'int'
pa_context *pa_context_new(pa_mainloop_api *mainloop, const char *name);
^
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This lets me narrow down the remaining cases of pointers across the EFL.
The void pointers will later need to be reevaluated on per-case basis and
replaced appropriately where possible/feasible.
Complex types (i.e. list, array, hash, accessor etc.) now do not require
pointers with them anymore (the pointer is implied) and the same goes for
class handles. Eolian now explicitly disallows creating pointers to these
as well. This is the first part of the work to remove pointers from Eolian
completely, with the goal of simplifying the DSL (higher level) and therefore
making it easier for bindings (as well as easier API usage).
@feature
Previously events used to use class name as a prefix and ignored eo_prefix
when specified. This is no longer the case. Events follow eo_prefix by default
now. In order to get around this for classes where this is undesirable, a new
field event_prefix was added which takes priority over eo_prefix. If neither
is specified, class name is used like previously.
@feature
Eolian had a restriction due to the C++ generator that classes and
namespaces would be named differently. Now that the C++ generator is
fixed, eolian dropped the restriction and we can finally fix the wrong
namespaces in ecore audio.
This patch fixes a compiler warning where eo_del was being called on
an Ecore_Job.
ref c1141c7b0b
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
I just ran my script (email to follow) to migrate all of the EFL
automatically. This commit is *only* the automatic conversion, so it can
be easily reverted and re-run.
==27523== Invalid write of size 8
==27523== at 0x9E855F5: _ecore_time_wrapper (ecore_audio_pulse_ml.c:132)
==27523== by 0x647E5CF: _ecore_call_task_cb (ecore_private.h:336)
==27523== by 0x647FB8B: _ecore_timer_expired_call (ecore_timer.c:733)
==27523== by 0x647F9EE: _ecore_timer_expired_timers_call (ecore_timer.c:686)
==27523== by 0x647B4CE: _ecore_main_loop_iterate_internal (ecore_main.c:1814)
==27523== by 0x647998E: ecore_main_loop_begin (ecore_main.c:983)
==27523== by 0x4E4F676: elm_run (elm_main.c:1099)
==27523== by 0x12801B: elm_main (test.c:1010)
==27523== by 0x1280C4: main (test.c:1021)
==27523== Address 0x20537208 is 8 bytes inside a block of size 56 free'd
==27523== at 0x4A07D6A: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==27523== by 0x9E858ED: _ecore_pa_time_free (ecore_audio_pulse_ml.c:204)
==27523== by 0x108DB350: free_events (socket-client.c:109)
==27523== by 0x108DBA53: do_call (socket-client.c:157)
==27523== by 0x9E855F0: _ecore_time_wrapper (ecore_audio_pulse_ml.c:131)
==27523== by 0x647E5CF: _ecore_call_task_cb (ecore_private.h:336)
==27523== by 0x647FB8B: _ecore_timer_expired_call (ecore_timer.c:733)
==27523== by 0x647F9EE: _ecore_timer_expired_timers_call (ecore_timer.c:686)
==27523== by 0x647B4CE: _ecore_main_loop_iterate_internal (ecore_main.c:1814)
==27523== by 0x647998E: ecore_main_loop_begin (ecore_main.c:983)
==27523== by 0x4E4F676: elm_run (elm_main.c:1099)
==27523== by 0x12801B: elm_main (test.c:1010)
==27523== by 0x1280C4: main (test.c:1021)
@fix