When moved mouse among two objects having cursor set,
EVAS_CALLBACK_MOUSE_OUT and EVAS_CALLBACK_MOUSE_IN are fired.
I observed that evas_object_del in callback of EVAS_CALLBACK_MOUSE_OUT
calls EVAS_CALLBACK_MOUSE_IN
so that newly added cursor object was detached.
Basically, EGL does not define a GL_DRAW_FRAMEBUFFER_BINDING so we
test for that and if not found then define it to be
GL_FRAMEBUFFER_BINDING
Signed-off-by: Chris Michael <devilhorns@comcast.net>
(Bad antognolli, No cookie !!)
NB: Fixes build break !!! If we are going to use defines from glext.h,
let's be sure to have the necessary header included Yes ?? ;)
Signed-off-by: Chris Michael <devilhorns@comcast.net>
If we don't do this, the framebuffer object used on shader_array_flush()
will be wrong.
NOTE: shader_array_flush() should take care of setting the fbo
correctly.
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.
This may break under heavy load so we shouldn't rely on it. Instead make
sure that time only moves forward.
Signed-off-by: Daniel Willmann <d.willmann@samsung.com>
Previous multiplication just truncated the fraction part to 16 bits. If
we round properly we can actually increase accuracy a bit.
Signed-off-by: Daniel Willmann <d.willmann@samsung.com>
- to enable this feature, compile with --with-profile=debug
- the mid tables and tables are write protected after modifications,
you will segfault if you mess with them
- because of mmap PAGE_SIZE alignement and added magic header, almost a
memory page is wasted per table and mid table allocation.
- reducing the number of tables per mid table and the number of entries
per table solves this.
For native surface rendering (glX, egl) in gl-backend, if pixel get callback
function is called for native rendering, there is a case where evas will
try to call evas_gl_common_context_flush() to flush its remaining commands
in its command queue while the context is set current to the native surface/
context that is called within the pixel get callback. So, I've added an
engine function that forces a flush before it enters the pixel get callback
function.
CEDRIC... it WAS YOU!... YOU BROKE ETHUMB!... i was.. RIGHT! :) well
done. your borking skills are pretty good. :) you broke load opt
downscaling for jpegs in general.. it just happened to turn up in
ethumb.
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
It is needed to set the engine internal borderless property.
Also update the border (frame) object, showing/hiding it as needed, and
updating the framespace size when the frame object is handled by the
engine.
If this Ecore_Evas already has a mouse inside it, there's no need to
send an additional mouse in event.
Additionally, always send a mouse_move event before a mouse_down, so the
Evas pointer position can be updated properly before the mouse down.
"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.
Evas engine is created per window but evas_gl engine was not properly
updating the engine info for new windows that are created. So, addressed
the design issue by passing engine_data to evas_gl engine apis..
Add ecore_x_input_raw_select function placeholder:
NB: xcb does not have xinput 2 support yet BUT someone added those
functions to the xlib code WITHOUT adding them to the xcb code.
SPANK SPANK !!
Signed-off-by: Chris Michael <cp.michael@samsung.com>
LMAO: xcb stuff did not even compile because of this ... and how knows
how long it has been broken ...
Signed-off-by: Chris Michael <cp.michael@samsung.com>
not noticed until recently.. we add a nul byte to the end of our text
selections that we shouldnt. most toolkits/apps skip it but some..
like emacs... dont.
Before this patch, the proxy will be clipped if the source is clipped by output area even if the soure_clip is disabled,
Additionally, src_clip/src_event/src_visible options must be supported in edje.
it seems glmapbuffer can be nasty overhead on some drivers, so go back
to gldrawarrays by default until such a time as we know a lot more...
i'm looking at YOU nvidia! YOU!
Move this handling entirely into ecore_wl_window_update_size() and
create and set it whenever it is necessary. There's no need to keep a
pointer on the Ecore_Wl_Window struct.
Now the opaque and input regions are updated on ecore_wl_window_resize,
there's no need to call ecore_wl_window_buffer_attach() for this
anymore.
The checks on alpha and transparent flags were also fixed.
ecore_wl_window_update_size() is now called by ecore_wl_window_resize(),
reducing duplicated code.
Goal is to be able to remove all internal Evas call from inside all
loader module. To do so we are going to open and hold a reference to the
file from outside of the module, read the header, create the image data,
load the data, close that reference.
Once that done, the next step is to let the file remain open as soon as
the filename/key is set and add an API to set an Eina_File directly. This
way edje can maintain the same file open as it use for an edje object,
keeping things in sync and avoid rendering glitch during update.