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
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
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.
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 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.
This was not really useful and against the Eolian guidelines.
While I promised I won't break things until the 27th, I was ill
(still am), so I'm giving myself a 1 day pass. :P
From now on, constructors should return a value, usually the object
being worked on, or NULL (if the constructor failed). This can also
be used for implementing singletons, by just always returning the same
object from the constructor.
This is one of the final steps towards stabilizing Eo.
@feature
Summary:
Fixes warning:
lib/ecore_audio/ecore_audio_obj_out_pulse.c:275:60: warning: implicit declaration of function 'basename' is invalid in C99
[-Wimplicit-function-declaration]
class_vars.context = pa_context_new(class_vars.api, basename(argv[0]));
^
lib/ecore_audio/ecore_audio_obj_out_pulse.c:275:60: warning: incompatible integer to pointer conversion passing 'int' to parameter of
type 'const char *' [-Wint-conversion]
class_vars.context = pa_context_new(class_vars.api, basename(argv[0]));
^~~~~~~~~~~~~~~~~
/usr/local/include/pulse/context.h:174:67: note: passing argument to parameter 'name' here
pa_context *pa_context_new(pa_mainloop_api *mainloop, const char *name);
^
Test Plan: It now compiles without warning.
Projects: #efl
Differential Revision: https://phab.enlightenment.org/D2313
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: Fix implicit function declaration of basename() which led to a violent crash when used.
Reviewers: cedric, naguirre, raoulh, raster
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1162
Signed-off-by: Cedric BAIL <c.bail@partner.samsung.com>
This reverts commit 1714fe93f4.
We actually want this type, it makes things clearer.
Conflicts:
src/tests/eo/function_overrides/function_overrides_inherit2.c
src/tests/eo/function_overrides/function_overrides_simple.c
src/tests/eo/suite/eo_test_class_simple.c
well well well. i WASN'T crazy. there WAS a leak. it was
ecore-audio+multisense. if a pulse audio output doesn't connect... NO
ONE KNOWS. all audio streams keep being appended to it forever just
consuming more memory indefinitely. there is no way to handle it.
expose events so it CAN be handled.
ecore_audio_obj_out now also supports VIO. Add attribute need_writer so
we can generalize the idler creation for subclasses at a later time.
Signed-off-by: Daniel Willmann <d.willmann@samsung.com>
Using pa_stream_write_begin we can just request a buffer to write into
This reduces the amount of calloc()/free() and memcpy calls.
Signed-off-by: Daniel Willmann <d.willmann@samsung.com>
input_attach, input_detach, format_set, and source_set now return an
Eina_Bool
Tests, examples and edje_multisense adapted
Signed-off-by: Daniel Willmann <d.willmann@samsung.com>
In case of short reads just make sure that playback is started
immediately. No need to drain just yet as that just causes issues with
delayed removals of streams.
Signed-off-by: Daniel Willmann <d.willmann@samsung.com>