Add alsa .c and .h file for Ecore_Audio alsa support
This is not well tested and thus disabled by default
Signed-off-by: Daniel Willmann <d.willmann@samsung.com>
For now programs using pulse output need to include the respective .h
file themselves.
Make sure test, examples, multisense and pulse actually include the
needed headers
Signed-off-by: Daniel Willmann <d.willmann@samsung.com>
or tripple clicked.
selection should be allowed when select_allow is true whatever
select_mode is.
Reproduce step is below.
1. ELM_THEME=default-desktop ELM_PROFILE=standard elementary_test
--test-win-only "Entry Scrolled
2. double click on password entry.
When a signal change a state of a edje box to a state that was already active
and we add/del a item of edje box a crash happen.
Example:
test.edc:
collections {
group {
name: "box_text";
parts {
part {
name: "elm.box.buttons";
type: BOX;
description {
state: "default" 0.0;
min: 0 100;
max: 9999 100;
align: 0 0;
box {
layout: "horizontal";
min: 1 1;
}
visible: 0;
}
description {
state: "show" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
}
programs {
program {
signal: "show,buttons";
source: "gui";
action: STATE_SET "show" 0.0;
transition: ACCELERATE 1;
target: "elm.box.buttons";
}
program {
signal: "hide,buttons";
source: "gui";
action: STATE_SET "default" 0.0;
transition: ACCELERATE 1;
target: "elm.box.buttons";
}
}
}
}
test.c:
//Compile with:
//gcc -g test.c -o test `pkg-config --cflags --libs elementary edje ecore`
static int count = 0;
static Eina_Bool _fill(void *data)
{
int i;
Evas_Object *layout = data;
Evas_Object *edje = elm_layout_edje_get(layout);
edje_object_part_box_remove_all(edje, "elm.box.buttons", EINA_TRUE);
elm_layout_signal_emit(layout, "show,buttons", "gui");
printf("_fill()\n");
for (i = 0; i < 5; i++, count++)
{
Evas_Object *btn;
char buf[50];
btn = elm_button_add(layout);
snprintf(buf, sizeof(buf), "button %d", count);
elm_object_text_set(btn, buf);
edje_object_part_box_append(edje, "elm.box.buttons", btn);
evas_object_show(btn);
}
return EINA_TRUE;
}
EAPI_MAIN int
elm_main(int argc, char **argv)
{
Evas_Object *win, *bg, *layout;
win = elm_win_add(NULL, "test", ELM_WIN_BASIC);
elm_win_title_set(win, "Test");
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
elm_win_autodel_set(win, EINA_TRUE);
bg = elm_bg_add(win);
elm_bg_color_set(bg, 255, 255, 255);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
layout = elm_layout_add(win);
elm_layout_file_set(layout, "test.edj", "box_text");
evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(layout);
_fill(layout);
ecore_timer_add(5, _fill, layout);
evas_object_resize(win, 800, 320);
evas_object_show(win);
elm_run();
elm_shutdown();
return 0;
}
ELM_MAIN()
(gdb) bt
0x00000000 in ?? ()
0xb7add287 in _edje_box_layout_calculate_coords ()
from /usr/lib/libedje.so.1
0xb7add5cd in _edje_box_layout () from /usr/lib/libedje.so.1
0xb7c98ff7 in _evas_object_box_smart_calculate ()
from /usr/lib/libevas.so.1
0xb7c97a36 in evas_object_smart_calculate () from /usr/lib/libevas.so.1
0xb7ae1b12 in _edje_part_recalc_single () from /usr/lib/libedje.so.1
0xb7ae3380 in _edje_part_recalc () from /usr/lib/libedje.so.1
0xb7ae59ff in _edje_recalc_do () from /usr/lib/libedje.so.1
0xb7b3603a in _edje_smart_calculate () from /usr/lib/libedje.so.1
0xb7c97be2 in evas_call_smarts_calculate () from /usr/lib/libevas.so.1
0xb7cc7d88 in evas_render_updates_internal () from /usr/lib/libevas.so.1
0xb7ba7c97 in _ecore_evas_x_render () from /usr/lib/libecore_evas.so.1
0xb7ba27c6 in _ecore_evas_idle_enter () from /usr/lib/libecore_evas.so.1
0xb7c27212 in _ecore_idle_enterer_call () from /usr/lib/libecore.so.1
0xb7c28d3d in _ecore_main_loop_iterate_internal ()
from /usr/lib/libecore.so.1
0xb7c2941f in ecore_main_loop_begin () from /usr/lib/libecore.so.1
0xb7e8def8 in elm_run () from /usr/lib/libelementary.so.1
0xb7f6f8ee in appcore_efl_main () from /usr/lib/libappcore-efl.so.1
0xb7644bb5 in app_efl_main () from /usr/lib/libcapi-appfw-application.so.0
0x08074c5a in main (argc=1, argv=0xbffffb64) at src/main_tizen.c:155
==2036== Jump to the invalid address stated on the next line
==2036== at 0x0: ???
==2036== by 0x44C35CC: _edje_box_layout (in /usr/lib/libedje.so.1.7.99)
==2036== by 0x42E8FF6: _evas_object_box_smart_calculate (in /usr/lib/libevas.so.1.7.99)
==2036== by 0x42E7A35: evas_object_smart_calculate (in /usr/lib/libevas.so.1.7.99)
==2036== by 0x44C7B11: _edje_part_recalc_single (in /usr/lib/libedje.so.1.7.99)
==2036== by 0x44C937F: _edje_part_recalc (in /usr/lib/libedje.so.1.7.99)
==2036== by 0x44CB9FE: _edje_recalc_do (in /usr/lib/libedje.so.1.7.99)
==2036== by 0x451C039: _edje_smart_calculate (in /usr/lib/libedje.so.1.7.99)
==2036== by 0x42E7BE1: evas_call_smarts_calculate (in /usr/lib/libevas.so.1.7.99)
==2036== by 0x4317D87: evas_render_updates_internal (in /usr/lib/libevas.so.1.7.99)
==2036== by 0x4465C96: _ecore_evas_x_render (in /usr/lib/libecore_evas.so.1.7.99)
==2036== by 0x44607C5: _ecore_evas_idle_enter (in /usr/lib/libecore_evas.so.1.7.99)
==2036== Address 0x0 is not stack'd, malloc'd or (recently) free'd
We called anim->start aftwards just to be sure to stick to something if
all fail.
edje proxy parts seem to break (crash) when animating a state change from custom->default on an animator. adding a null check here avoids that and seems to work fine, but I am not an edje_calc expert
"edje: open Eina_File ourself instead of delegating it to edje."
"edje: don't never corrupt an opened edje object."
This reverts commits 8727e43c1f and 8f12f21cf0, which caused nonstop crashes.
Now, Edje.h includes three new files:
- Edje_Eo.h: Eo API functions (functions defines, enums, base id).
- Edje_Legacy.h: contains the API functions related to objects
- Edje_Common.h: common data (structs, enums...) + functions not related to
objects.
This phase is needed for the EFL 1.8 release to disable Eo APIs if we
consider it is not enough mature to be used by applications.