"item,activated" smart callback is added to notice when an item is
activated.
"item,activated" smart callback is called as follows.
1. Item push is finished and the new item is activated.
2. Item pop is finished and the previous item is activated.
void *event_info in smart callback is the activated item pointer.
This happens with shared objects.
The situation seems to be:
1. object has composited object a of class A in thread 1
2. call something on object a from thread 2, deadlock
In fact, do anything from thread 2 on a shared object and you deadlock.
EO is now extremely restrictive wrt. threads so that efl_data_scope_get()
can't work outside the main loop. This patch fixes the usage to create
sw buffers as shared objects (accessible from both the main loop and evas
async thread) and use plain old pointers where possible.
The buffers now have no parent because efl_add(CLASS, obj_from_mainloop)
does not work with shared objects. This is bad, as the buffers conceptually
belong to the main loop, and only need to be accessible from the draw thread
for a few calls. The main loop determines their lifecycle.
Fixes T4628
this fixes intitial iconic state for x11 as demonstrated by
terminology -I
but enlightenment is broken though... xterm -iconic also shows the
same break with a black window.
@fix
so we handled override cases and set withdrawn to false on show, but
when normally managed it might be nicer to wait for a state change via
the wm state property to know we are "normal"
this should fix T4699
@fix
The value stored by efl_future_all is an accessor, not an
iterator. This fixes the usage of promises internally to
the fileselector widget.
See 1a2014a122
Fixes T4686
An eio model (and I believe most other models as well, in fact)
require a Efl.Loop.User as parent in order for efl future/promises
to work. This adds a fallback code directly inside eio model. The
alternative was to parent and efl_del all models in fileselector.
See T4686
And indirectly also Efl.Canvas.Object.
I believe those two classes should even inherit from Efl.Loop.User.
Right now this patch relies on the new dependence of Evas over Ecore,
and is maybe a bit ugly as is.
Ping @cedric
See T4686
This reverts commit 2c736adc87.
well that was totally unexpected. - efl app windows dont show at all..
wtf? this should not have affected that at all..
so we handled override cases and set withdrawn to false on show, but
when normally managed it might be nicer to wait for a state change via
the wm state property to know we are "normal"
this should fix T4699
We need a method that allows us to place the cursors at the start and end of an
annotation. This is required for things like getting the geometry of a range.
@feature
The ported geometry_get was actually the legacy simple_geometry_get.
For getting simple geometries like selection this was enough, but I forgot that
we also need to query more complex geometries e.g. links.
This is required to implement link anchors in Ui Text.
Now geometry_get and simple_geometry_get are the same as their legacy
counterparts.
@feature
It's not because the bug with __builtin_prefetch is inside
clang/llvm that we must break the build for people who prefer it
over gcc. As soon as a non-broken version is out, the ifdef must
be either removed (and ask people to update their clang install)
or add a version check based on __clang_xxx__.
Compilation tested with clang 3.8.1 and gcc 6.2.1.
"push,finished" and "pop,finished" smart callbacks are added to notice
when push and pop operation is finished.
New smart callback signals are added as follows.
"push,finished,item,activated" : Called when item push is finished and
void *event_info in smart callback is activated item (new item).
"push,finished,item,deactivated" : Called when item push is finished and
void *event_info in smart callback is deactivated item (current item).
"pop,finished,item,activated" : Called when item pop is finished and
void *event_info in smart callback is activated item (previous item).
"pop,finished,item,deactivated" : Called when item pop is finished and
void *event_info in smart callback is deactivated item (current item).
Naviframe item view did not become visible if top item view is deleted
by elm_object_item_del().
To resolve this problem, program for "elm,state,visible" is fixed and
"elm,state,invisible" is added.
so ecore_x_vsync as a tool uses glx for nvidia drivers plut "wait for
vblank" extensions to try vsync "sync". the problem is this is flakey
because the drivers may or may not continue vsyncing after screen off
or syspend/resume or vt changes and all the workarounds dont seem to
be reliable, so since this causes this to be disabled, no point
keeping all the code and build stuff around, so remove this "unused
junk" we have in the tree.
macOS Sierra provides clock_gettime().
Instead of testing for the Mach kernel to re-implement clock_gettime(),
let first check that clock_gettime() is not already declared. Older OSX
versions will have the Mach-only fallback.
@fix
i see a speedup of about 8% over a series of list walking and freeing
functions given this change. it's a small speedup but still not too
shabby just for some prefetches thrown in. ymmv depending on memory
subsystem, memory speed itself, cpu and architecture.
@optimize
this allows you to portably use prefetch compiler builtins. this adds
EINA_PREFETCH(), EINA_PREFETCH_WRITE(), EINA_PREFETCH_NOCACHE() and
EINA_PREFETCH_NOCACHE_WRITE() macros to do this that are "nothing" if
your compiler doesnt support it. of course it also requires your
compielr compile instructions for your architecture and it can only do
so if the architecture it compiles for has these instructions, so be
aware.
@feat
Summary:
It should be evas_device_add_full() in order to follow the EFL
name pattern.
Reviewers: DaveMDS, bdilly
Reviewed By: DaveMDS, bdilly
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4325
this moves a lot of error case handling into goto's so the code gets
out of the hot path and this should help expecially since variou
smacros do things like:
do { char buf[256]; sprintf(buf, fmt, ptr); _eo_pointer_error(buf); } while (0)
_Efl_Class *klass; \
do { \
klass = _eo_class_pointer_get(klass_id); \
if (!klass) { \
_EO_POINTER_ERR("Class (%p) is an invalid ref.", klass_id); \
return ret; \
} \
} while (0)
so putting quite a chunk of code inside a rare "if this errors"
handler that will cause l1 cache misses and this we don't want, thus
moving stuff in eo core out of hot paths to cut down on overhead. yes
it might not be pretty but it's kind of the right thing at such a core
level of efl. this also does the same to the eo base class as this is
also going to be relatively hot given it's the core of every other
object.