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).
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.
In order to avoid the following build warning:
lib/elementary/elm_atspi_bridge.c: In function
‘_children_changed_signal_send’:
lib/elementary/elm_atspi_bridge.c:3971:4: warning: ‘idx’ may
be used uninitialized in this function [-Wmaybe-uninitialized]
_bridge_signal_send(data, event->object, ATSPI_DBUS_INTERFACE_EVENT_OBJECT
A little refactoring was done to function _children_changed_signal_send.
Actually I wasn't able to see a codepath to use idx unintialized,
but this way is more clear and avoid compiler possible confusion.
Remove codegen_example_generated.h from codegen_example_SOURCES
and let it only on nodist_codegen_example_SOURCES and
on BUILT_SOURCES.
Also add dependency between codegen_example.c
and codegen_example_generated.h since it's required
to compile.
Avoid the following build error:
CODEGEN codegen_example_generated.c
codegen_example.c:26:39: fatal error: codegen_example_generated.h:
No such file or directory
compilation terminated.
Makefile:4960: recipe for target 'codegen_example.o' failed
Fix missing dependency.
Get rid of the following error:
/usr/bin/ld: ecore_evas_vnc.o: undefined reference
to symbol 'ECORE_EVENT_MOUSE_BUTTON_UP'
src/lib/ecore_input/.libs/libecore_input.so.1: error adding symbols:
DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:2306: recipe for target 'ecore_evas_vnc' failed
Summary:
The inherit_only groups could be used for template of other groups.
So, even if it has image part, it dose not need to have image attributes.
@fix
Test Plan: N/A
Reviewers: cedric, conr2d, jpeg, raster
Reviewed By: raster
Differential Revision: https://phab.enlightenment.org/D4322
As ector objects are acessed by draw thread we need to create it as
shared object in order to access it from other thread.
Note: there is some performance lag...
Summary: make ector object as shared eo object to acess from other thread.
Reviewers: cedric, jpeg, raster
Reviewed By: jpeg, raster
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4319
so there were a few issues. one we had a spinlokc on the eoid table
for shared objects AND then had a mutex for accessing those objects
(released on return from any eo function). BUT this missed some funcs
like eo_ref, eo_unref and so on in eo.c ... oops. so fixed. but then i
realized there was a race condition. we locked the eoid table then
unlocked with our pointer THEN locked the sharted object mutex ...
then unlocked it. that was a race condtion gap. so we should share the
same lock anyway - if it's a shared object, grab the shared object
mutex then do a lookup and if the lookup does not fail, KEEP the lock
until it is released by the return from eo function or by some special
macro/funcs that released a matching lock. since its a recursive lock
this is all fine. as its also a universal single lock for all objects
we just need the eoid to know if it's shared and needs locking based
on the domain bits. so now do this locking properly with just a single
mutex, not both a spinlock and mutex and keep the lock around until
totally done with the object. this plugs the race condition holes and
goes from 1 spinlock lock and unlock then a mutex lock and unlokc to
just a single mutex lock and unlock. this means shared objects are
actually truly safe across threads and only have the overhead of a
single recursive mutex to lock and unlock in every api call.
Summary: Need to NULL check before using surface like other cases.
Test Plan: N/A
Reviewers: jpeg, raster, ManMower, devilhorns
Reviewed By: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D4301
Summary:
1. Fix wrong logic of ELM_PANEL_ORIENT_RIGHT case in _state_sync.
2. Move pre calc function in anim_cb to sizing_eval function.
This code have caused problem that scrollable panel is not animated during drawer open and close.
3. Maintain content size ratio when orient is changed.
4. Freeze scroller when orient is changed.
This code will need to change orientation when drawer opened.
Reviewers: cedric, eunue
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4320
this is quick to get evas working again. this disables part of
7e2d700d06 that creates deadlocks. this
thread waits on mainloop. mainloop waits on this render thread. BOOM.
deadlock.
This patch adds the support for Ecore events from a remove
VNC client. Every time it happens a VNC mouse move/click/wheel or a
VNC keyboard event an Ecore event event will be created and dispatched.
The Efl_Input_Device will contain the device which originated the event,
this will be useful for dealing with multi-seat environment. When the device
is NULL it means that the event originated from the default seat.
Summary:
Active descendant changed signal send function checks for wrong object,
hence always returns with out actually sending signal.
The state is set to pd->object_broadcast_mask and not
pd->object_children_broadcast_mask in _set_broadcast_flag function.
Test Plan:
Send the active descandant changed signal from any widget, but signal
is not sent.
Reviewers: kimcinoo, lukasz.stanislawski, cedric
Reviewed By: cedric
Subscribers: jpeg, govi, rajeshps
Differential Revision: https://phab.enlightenment.org/D4318
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
If we fail to allocate memory for savedtypes.types here, then the
"known" array would end up leaking. Defer creation of 'known' array
until after savedtypes.types is allocated, this way we don't leak.
Fixes CID1363216
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
If entry edje should be changed according to scrollable mode,
the signal will be used. The following signals are added.
"elm,scroll,enable"
"elm,scroll,disable"
Test Plan: N/A
Reviewers: raster, tasn, herdsman, cedric
Subscribers: minkyu, jpeg, akanad, z-wony, Blackmole
Differential Revision: https://phab.enlightenment.org/D4254
if we dont get the userdata of a offer something in the protocol went
very very bad, we should not emit there a error, just return.
Also if we are getting a null offer we should dereference the nulled out
offer object.
This fixes CID 1363214
Since _config_load() is called and _elm_config is not initialized, NULL
check for _elm_config is not necessary.
The unnecessary NULL check causes false alarm because _elm_config is not
checked in other cases.
so by chance i discovered efreet is doing bad things(tm) when
expanding/appending to string buffers to generate commands based off
desktop files. the string append basically was buggy, so fixed it by
making it a lot simpler and more obvious and now reliable.
@fix
The callbacks are never invoked due to sd->play equal to 0. The
function _emotion_decode_stop is called before and resets this field.
Before the change to Efl.Canvas.Video, sd->play was not checked.
if a dnd operation enters a surface the window_id is clear, so a offer
is always specific to a window. If we have a source we try to fetch the
id from the focus/prevfocus or keyboardfocus.
This fixes dropping into a efl app which never got focus before.
the format can also be the result of mutliple or´ed values.
The new code now also uses the same mimetypes to format type relation
than the selection code.
This fixes dragging onto a container with multiple formats.
Spotted by ApBBB while dragging from ephoto to terminology.
This also fixes T3320
as per other recent benchmarking, moving rearely run code (in this
case code to init the op etc.) out of the l1 cacheline prefetch inot a
blob of code at the end of the function where we goto and goto back
again should provide decent-ish speedups for the resolv cache in
avoding this code. yes it makes the code less pretty to read but at
this really low level hot path ... evil things must happen to get the
speed we want/need.
As we always set this flag in the drm2_fb_flip function, having this
check here is now pointless.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
before the format was not passed correctly, now the format is passed
correctly to the callback.
Also if a dnd operation was started while a cnp receive call was
going on (this happend because weston-editor failed to close the fd, so
EOF was never sent), then elm_cnp would behave wrong, since the
requestwidget, action, format would be different.
This commits adds api to deal with wayland offers.
It also ports elm_cnp to use the new api.
The selection_get and dnd_drag_get calls are replaced by simply receive
data from the offer.
The Offer object is now also emitted in every Enter,Motion,Drop and
Leave event, so a potential user can prefetch data and display it.
To finish a dnd operation positiv, the user has to call the finish call
before the offer is destroyed
the drag.source is only available if the drag is happing inside the same
client.
So for the case there are two efl apps (A,B) , where A started the dnd and
the B is currently entered by the dnd, then A has the data source, and B
has the offer, if B sets a action on the offer A tried to set it on a
field which does not exist there, this fixes that. It saves the action
to a undepended field.
If buf->priv.fb.fb was NULL the function would have crashed. So
buf->priv.fb.fb can't be NULL. I'm keeping the if(buf->priv.fb.fb)
anyway, but not sure the else case is valid.
Thanks @jiin.moon for the report.
Summary:
Fix parsing error which occurs when lazEDC keyword is combined
with other keyword by period. (like parts.rect)
@fix
Test Plan: Download attached file and run "make"
Reviewers: Hermet, cedric, jpeg
Subscribers: taxi2se
Differential Revision: https://phab.enlightenment.org/D4309
SEGV would happen if the cache was NULL, as the error pointer
was also NULL in some cases (root cause for cache == NULL not
quite known, happens in elm_suite with CK_FORK=no).
Note: simply adding evas_common_init() to evas_init() leads to
a whole new set of issues with CK_FORK=no elm_suite - not good.
This adds a few callbacks to inform applications about
async open and preload:
- load,open
- load,ready
- load,error
- load,cancel
This patch adds a new EAPI as well: elm_image_async_open_set.
This is the only way to use async file open with the legacy APIs
and should be easily matched with whatever EO API we end up using
(be it based on promises or events).
Alter the test cases for make check as they were using the
unstable EO API which I just removed.
Thanks @arosis for the original patch. And sorry for the huge
delay in merging this.
See also: https://phab.enlightenment.org/D4215
@feature
In efl_ui_win, _evas_event_key_cb gives efl_event_callback_call,
though the focused object is not the window itself.
Becuase of this, _propagate_event was called twice for event single
key down.
So, now, _propagate_event returns itself whenever focused object is
not the win but it's called from efl_ui_win's event call.
The problem can be checked with following stpes.
1. elementary_test -> focus
2. Input any directions (ex: Down)
3. Focus movement happens twice for every single input.
of mode
This fixes an issue where gl_drm engine would end up flickering
everytime a frame was being set.
Thanks derek ;)
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This patch modifies our ecore_drm2_fb_flip code to use Atomic/Nuclear
pageflips.
NB: Works perfectly under software drm engine .. some flickering with the
gl_drm engine that needs investigating.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This patch adds code to enable Atomic Modesetting support (via ioctl)
and to fill in Atomic Crtc state during startup.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This code will detect the drm driver name and check that the kernel
itself is new enough to use Atomic Modesetting. This is needed as some
drivers (i915) do not handle Atomic Modesetting propertly without a
new enough kernel.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: ELM_POPUP_ACTION_BUTTON_MAX is already defined in the included header file, elm_widget_popup.h.
Reviewers: cedric, jpeg, minkyu, Hermet
Reviewed By: Hermet
Subscribers: seoz, jehun.lim
Differential Revision: https://phab.enlightenment.org/D4312
This has been in the making for a very long time. Thanks to Marcel for
reminding me to do it.
What is it?
This is a tool to help application developers debug their apps with
everything Eo. Eo is strict, but not as strict as it can be. Many strict
tests and debug are very expensive to implement, and we have so many
hot-paths that even basic "ifs" to check if debugging is enabled will
add significant overhead to normal running applications. This is why I
created this library. All the expensive tests and bookkeeping should be
wrapped around with "#ifdef EO_DEBUG". With this change, libeo.so is
compiled twice, once normally, and once with this define set (as
libeo_dbg.so). This means that normal eo code will not be affected, but
if you decide to debug your application, all you need to do is:
LD_PRELOAD=/path/to/libeo_dbg.so ./app
Or use the convenient wrapper:
eo_debug ./app
Which will load the debug heavy version.
What's currently there: at the moment, EO_DEBUG enables xref and
data_xref and stricter tests when fetching object data.
In the future, I also plan introducing "zombie objects", which
essentially mean that objects are never really deleted, so you can query
them long after they are gone to get more information on what they were.
So if for example you have an object id that you want to query after the
object has been deleted, you can.
I also plan on having a way to disable/enable certain debug mode
features via env vars, and maybe make the test suite link against this
one instead of the normal one, and possibly add more internal hooks for
the test suite to better inspect internal state?
P.S: The amount of errors spewed out when running it on elementary_test
makes me wish I wrote this earlier. :(
@feature
In commit 7b90e11474 the event name changed but
this module was not updated. Luckily we are building it on Jenkins or it would
have gone unnoticed for a long time.
The events for (async) image download will be redefined by
@cedric later. So, remove them from eo now and only keep their
legacy implementation.
Also, improve elm_test example and add docs.
Summary:
- elm,state,units,visible signal is emitted only when
unit is set, but not when unit_format_func is set.
- Since default unit has been set, this signal is emitted
but signal will not be emitted after unit is set to NULL.
Test Plan:
1. Create a progressbar.
2. elm_progressbar_unit_format_set(obj, NULL);
3. set unit_format_func by elm_progressbar_unit_format_function_set()
and observe elm.text.status part visible.
Reviewers: Hermet, jpeg, cedric
Reviewed By: cedric
Subscribers: D-TAU, eunue, conr2d, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4210
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
This patch provides proper parent-child relationship for elm_list and elm_toolbar
while atsapi_mode is set for icon and end element.
This patch is moved from:
bf188e59431ad9c4ca877b2632884d3d430de6b1
Change-Id: Iae855aacf29bef3808a0b5ec159f46cbf0f4539d
Reviewers: stanluk, cedric
Reviewed By: cedric
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4259
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
This patch changes the value of 1 to 1ULL in STATE_TYPE macros
to signal the compiler that the value must be considered
as a unsigned long long, it has to be done cause state_set variable
can be longer than 32 bits.
This patch is moved. Orginal commit hash:
a559e473c21c8da7c4e5a87b9c8583ce519cc35e
Change-Id: Ida89f3be185736f61543d37010d0f5cb8d80a751
Reviewers: cedric, stanluk
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4260
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
If ef is null, have to return before _set_material_to_eet_file_from_mesh api.
New momory will be allocated in the api.
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4305
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
alpha_texture need to be set EINA_TRUE to support ETC1+Alpha
@fix
Test Plan:
Create an EDC file with png image with Alpha.
compress image with ETC1 and ETC2.
Observe Alpha is properly applied in both case.
Reviewers: jpeg, Hermet, cedric
Reviewed By: cedric
Subscribers: conr2d
Differential Revision: https://phab.enlightenment.org/D4307
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: There is wrong comparing while using strcmp function. Should be inverted.
Reviewers: cedric, raster, NikaWhite
Reviewed By: NikaWhite
Subscribers: cedric, NikaWhite, jpeg
Differential Revision: https://phab.enlightenment.org/D4291