Commit Graph

10422 Commits

Author SHA1 Message Date
Derek Foreman de5305e224 ecore-drm2: Merge initial modesetting with atomic flip code 2016-09-22 14:24:56 -04:00
Chris Michael 84cb88fe8c ecore-drm2: Use just DRM_MODE_ATOMIC_ALLOW_MODESET for initial setting
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>
2016-09-22 14:20:24 -04:00
Chris Michael 3c243c3ebb ecore-drm2: Add support for Atomic Pageflips
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>
2016-09-22 14:20:24 -04:00
Chris Michael bfff91bac5 ecore-drm2: Add code to support setting DPMS levels via Atomic
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-09-22 14:20:24 -04:00
Chris Michael a262629282 ecore-drm2: Add code to use Atomic for Edid if available
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-09-22 14:20:24 -04:00
Chris Michael 2bda227304 ecore-drm2: Add code to setup Plane Atomic state for Outputs
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-09-22 14:20:24 -04:00
Chris Michael a76eae227a ecore-drm2: Add code to setup Connector Atomic state for Outputs
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-09-22 14:20:24 -04:00
Chris Michael 3ca7e72bce ecore-drm2: Add code to setup Crtc Atomic state for Outputs
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-09-22 14:20:24 -04:00
Chris Michael ecc000d84c ecore-drm2: Add code to free Atomic state on shutdown
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-09-22 14:20:24 -04:00
Chris Michael f8e28f37dc ecore-drm2: Add code to fill Plane Atomic state
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-09-22 14:20:24 -04:00
Chris Michael 91739d10b0 ecore-drm2: Add code to fill Connector Atomic state
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-09-22 14:20:24 -04:00
Chris Michael 7041202a0a ecore-drm2: Add code to fill Atomic Crtc State
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>
2016-09-22 14:20:24 -04:00
Chris Michael 541be05bf2 ecore-drm2: Add code to check if Atomic Modesettting is usable
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>
2016-09-22 14:20:24 -04:00
Chris Michael 7770bc17bb ecore-drm2: Add private structures to support Atomic Modesetting
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-09-22 14:20:24 -04:00
Shuhrat Dehkanov 4768b1d04e elm: remove dulicate ELM_POPUP_ACTION_BUTTON_MAX definition
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
2016-09-22 22:57:28 +09:00
Jean-Philippe Andre 97a2d7ff33 elm_image: Move back download events to legacy only
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.
2016-09-22 15:02:45 +09:00
Amitesh Singh 834222d3a0 photocam: add missing EOLIAN prefix 2016-09-22 10:36:19 +05:30
Hosang Kim f148296ed1 scrollable_interface: fixed gravity_set() API.
Summary: elm_scroller_gravity_set()  API is not working.

Test Plan: elementary_test -> scroller3

Reviewers: jaehwan, SanghyeonLee, Hermet, jypark, raster, cedric

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4252
2016-09-22 11:06:29 +09:00
Carsten Haitzler 8c28a70b43 Revert "edje edje_embryo: use strncpy()."
This reverts commit 06bd8dcf33.

just dismiss in coverity if the code is not actually wrong
2016-09-22 08:31:00 +09:00
Cedric BAIL 72f0bfa224 ecore,ecore_con: simplify destructor by linking future life cycle with object. 2016-09-21 16:19:53 -07:00
Yeshwanth Reddivari 7b90e11474 emotion: convert Emotion_Object into Efl.Canvas.Video
Reviewers: singh.amitesh, raster, jpeg, cedric

Differential Revision: https://phab.enlightenment.org/D3994

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2016-09-21 11:04:34 -07:00
Cedric BAIL cbfcfdf3e9 emile: fix typos. 2016-09-21 10:34:05 -07:00
Cedric BAIL 6f42992b4f eet: fix gnutls support with newer version. 2016-09-21 10:33:44 -07:00
Stefan Schmidt 1f00c9a26e elm: progressbar: hide unit if unit_format_func is invalid
In commit 03882d5588 this was introduced but in
the end the visible signal was send in all cases. This looks like an oversight
to me. Fixed.
2016-09-21 10:45:12 +02:00
Sungtaek Hong 57c4d83b2e evas: remove unnecessary check for clip coords.
Summary: (dst_clip_w <= 0 || dst_clip_h <= 0) is already checked.

Reviewers: jpeg, cedric, Hermet

Reviewed By: Hermet

Subscribers: conr2d

Differential Revision: https://phab.enlightenment.org/D4303
2016-09-21 17:41:47 +09:00
Thiep Ha 3689a803db elm_config: add null check before usage 2016-09-21 17:03:14 +09:00
Thiep Ha 401706351d elm_atspi: remove redundant null checking
The type is always _ADDED or _REMOVED, therefore atspi_desc
is always "add" or "remove"; no need to have null checking for it.
2016-09-21 17:03:14 +09:00
Hermet Park 06bd8dcf33 edje edje_embryo: use strncpy().
This change is not meaningful but avoids an annoying coverity detection.
2016-09-21 15:03:11 +09:00
junsu choi bed6c84afb edje_edit : add null check and close eet
Signed-off-by: Jaehyun Cho <jae_hyun.cho@samsung.com>
2016-09-21 09:42:46 +09:00
Bruno Dilly a3fba57b26 ecore_con,elput: fix warnings
Summary:
elput: fix warning for unused write result
         ecore_con: fix warning for unused asprintf result

Reviewers: iscaro, devilhorns, cedric

Reviewed By: cedric

Subscribers: cedric, seoz, jpeg

Differential Revision: https://phab.enlightenment.org/D4308

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2016-09-20 16:13:28 -07:00
Sungtaek Hong 03882d5588 elm_progressbar: show status when unit_format_func is set
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>
2016-09-20 16:07:21 -07:00
Piotr Ganicz 2cc7be3743 atspi: fix parent-child relationship for elm_list and elm_toolbar
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>
2016-09-20 15:01:48 -07:00
Piotr Ganicz 445b3587e3 atspi: fix state macros
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>
2016-09-20 15:01:48 -07:00
Sungtaek Hong b437bfb3fe eet: set alpha_texture for ETC1+Alpha
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>
2016-09-20 15:01:48 -07:00
Stephen Houston 61b66338a9 Evas: Don't access members of a null struct. Fixes T4616 2016-09-20 16:05:09 -05:00
Gustavo Sverzut Barbieri f0f9c5d24a libproxy: dlopen() and make it runtime optional. 2016-09-20 15:00:48 -03:00
Artem Popov 132ae9683c ecore_file: Fix improper way of comparing in ecore_file_path_dir_exists @fix
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
2016-09-20 19:52:23 +03:00
Derek Foreman e2875cefc4 eina_cpu, evas: Remove _eina_cpu_fast_core_get, don't set render thread affinity
We've decided it would be best to just let the scheduler do its job.
2016-09-20 11:38:57 -05:00
Carsten Haitzler 58d3328d80 eina - eina file map populate fallback to use log int not int... for size
this makes the size match other sizes in eina_file. doesn't affect
linux but i think bsd's get hit.
2016-09-20 21:57:47 +09:00
Ji-Youn Park 13bd4242ec eldbus: fix null value usage 2016-09-20 18:10:32 +08:30
Daniel Hirt f68a925d81 Evas font: force freetype v35 ttf interpreter
Ref T4623

v40 bytecode interpreter is official as of freetype 2.7.
The results don't look so good at the moment. The text looks and glyph
positioning seem worse than they were with the previous v35 interpreter.

So, in the meantime we'll keep using v35, just so everything looks
normal again.

Although the v40 is relevant since around 2.6.3, I rather not do any
FREETYPE_MINOR checks in this patch, because distributions might ship
previous versions with the other (v38) interpreter enabled.
2016-09-20 11:29:38 +03:00
Ji-Youn Park 0a39fae0a2 ecore_con_local: fix memory leak.
after socket function call, close file descriptor.
2016-09-20 16:14:04 +08:30
Carsten Haitzler 07ffb2e5c5 efreet xml parse - handle 0 sized xml specially to avoid crash
fixes T4493
2016-09-20 14:55:35 +09:00
Carsten Haitzler 41c332b726 eina - redo a lot of the static inlines to have better instr cache usage
this moves a lot of logic that is rare away from the linear/flat asm
path of code so we et fewer l1 cache misses when executing chuncks of
our code. this also reduces the code size and takes some funcs like in
eina_inline_lock_posix.x and makes them real functions to reduce code
size thus better l1 cache usage - only for new/free of locks.
spinlocks, semaphores etc. as these will have no advantage being
inlined but simply bloat out code size instead.

overall this actually reduces efl lib binary sizes 0.4%, so that's a
good sign.

this passes make check and i think i got it right... let me know if i
didn't. i'm also not sure i should just keep the static inlines and
not make the formerly static inline funcs full EAPI ones now... good q.
2016-09-20 14:53:05 +09:00
Jaehwan Kim 3efdd5df54 edje_edit: add null checking 2016-09-20 13:46:29 +09:00
Jaehwan Kim 1bfb19b457 ecore: fix the parameter of strerror 2016-09-20 13:45:36 +09:00
WooHyun Jung 241196641f elm fileselector: add null checking before strlen 2016-09-20 13:40:37 +09:00
WooHyun Jung fa3af69e0c eldbus: null checking before using the pointer 2016-09-20 11:18:52 +09:00
Cedric BAIL b5f47fbcb9 elementary: patch got pushed before the complete fix. 2016-09-19 16:12:31 -07:00
Cedric BAIL 0d0ca579c6 elementary: be more conservative on the amount of data requested from disk. 2016-09-19 16:07:03 -07:00
Cedric BAIL 25aef34aa0 eina: populate memory in the right limit. 2016-09-19 14:02:43 -07:00
Cedric BAIL e4958e9faa ecore: remove useless ecore_parent.eo. 2016-09-19 13:05:32 -07:00
Derek Foreman 9799d45ee7 eina_cpu: Fix coverity defects in eina_cpu_map_init
Fixes a potential fd leak on failure and wrong core to
speed mapping on systems with > 31 cpu cores

CID: 1362860
CID: 1362859
CID: 1362857
2016-09-19 10:47:02 -05:00
Vitalii Vorobiov b324b754f3 edje_edit: make tweens able to work with image sets
it's important because some tweens of loaded edje group might use image sets
instead of images, so now making edje_edit API to work with them correctly

@fix
2016-09-19 18:15:18 +03:00
Derek Foreman 541b72dcb2 render_thread: Attempt to set affinity to a random fast core
We've been pinning the render thread for every EFL process to core 0.
This is a bit silly in the first place, but some big.LITTLE arm systems,
such as exynos 5422, have the LITTLE cores first.

On those systems we put all the render threads on a slow core.

This attempts to fix that by using a random core from the pool of fast
cores.

If we can't determine which cores are fast (ie: we're not on a
linux kernel with cpufreq enabled) then we'll continue doing what we've
always done - pin to core 0.
2016-09-19 09:40:43 -05:00
Derek Foreman bd1de560a1 eina_cpu: Fix error handling in eina_cpu_fast_core_get
I introduced a crash on linux systems where the cpufreq directory
doesn't exist.  This fixes it.
2016-09-19 09:23:59 -05:00
Gustavo Sverzut Barbieri 8550a33b27 efl_net_dialer_http: use libproxy.
query libproxy in a thread (since it's nasty and blocks), then apply
proxy to curl and execute the request.
2016-09-19 10:01:51 -03:00
Gustavo Sverzut Barbieri 0d478c301f efl_net_dialer_tcp: use libproxy settings.
libproxy allows various means to configure a proxy, will load from
gnome and kde configuration settings, envvars, macos and even windows
registry.

curl still doesn't use it, but we can make that later.
2016-09-19 10:01:51 -03:00
Gustavo Sverzut Barbieri 696692ab90 efl_net_dialer_websocket: remove unused variable.
efl-future will null the pointer, so pd is not needed anymore.
2016-09-19 10:01:51 -03:00
Marcel Hollerbach f63cd63e54 eo: fix headr to header
if you enable EO_DEBUG you cannot build eo, since the field is called
header not headr
2016-09-19 13:25:23 +02:00
Marcel Hollerbach 5a3cf323ef eo: fix reference to constants
they are renamed from the prefix EO_ to EFL_
2016-09-19 13:25:23 +02:00
Marcel Hollerbach 907bbbf965 eo: fix callback cmp
Summary:
as told in _eina_stringshared_key_cmp in eina_hash.c:

originally we want to do this:
   return key1 - key2;
but since they are ptrs and an int can't store the different of 2 ptrs in
either 32 or 64bit (signed hasn't got enough range for the diff of 2
32bit values regardless of their type... we'd need 33bits or 65bits)

So changing this to the same logic.

Reviewers: tasn, raster

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4298
2016-09-19 13:25:23 +02:00
Stefan Schmidt 6bf537d43d Revert "render_thread: Attempt to set affinity to a random fast core"
This reverts commit a17ac66f0a.

This change broke every efl build locally, as well as on Jenkins, for me.

CLD     lib/ethumb_client/libethumb_client.la
/bin/sh: line 2: 10047 Segmentation fault      (core dumped) EFL_RUN_IN_TREE=1
../src/bin/edje/edje_cc -id . -fd . -id ./tests/emotion/data tests/emotion/data/theme.edc
tests/emotion/data/theme.edj
Makefile:52584: recipe for target 'tests/emotion/data/theme.edj' failed
make[4]: *** [tests/emotion/data/theme.edj] Error 139
make[4]: *** Waiting for unfinished jobs....
/bin/sh: line 2: 10088 Segmentation fault      (core dumped) EFL_RUN_IN_TREE=1
../src/bin/edje/edje_cc -id . -fd . -id ./modules/ethumb/emotion modules/ethumb/emotion/template.edc
modules/ethumb/emotion/template.edj
Makefile:52590: recipe for target 'modules/ethumb/emotion/template.edj' failed
make[4]: *** [modules/ethumb/emotion/template.edj] Error 139
/bin/sh: line 2: 10119 Segmentation fault      (core dumped) EFL_RUN_IN_TREE=1
../src/bin/edje/edje_cc -id . -fd . -id ../src/modules/elementary/prefs/
modules/elementary/prefs/elm_prefs_swallow.edc modules/elementary/prefs/elm_prefs_swallow.edj
Makefile:52614: recipe for target 'modules/elementary/prefs/elm_prefs_swallow.edj' failed
make[4]: *** [modules/elementary/prefs/elm_prefs_swallow.edj] Error 139
2016-09-19 10:45:56 +02:00
Ji-Youn Park fc0c0a6e0b evas_object_image: fix alpha_set bug.
if image object's first alpha value is false, evas_object_image_alpha_set function did not work.
opaque_valid is always 1 even though has_alpha value changed.
2016-09-19 17:02:40 +08:30
Andrii Kroitor 1d08e8d30a elm_menu: fix callback deletion from NULL object
Reviewers: cedric, raster, Hermet

Reviewed By: Hermet

Subscribers: jpeg, reutskiy.v.v

Differential Revision: https://phab.enlightenment.org/D4294
2016-09-19 16:50:27 +09:00
Gustavo Sverzut Barbieri a975bfe1e6 efl_net_dialer_tcp: add SOCKS proxy support.
SOCKS is implemented in its own thread using synchronous/blocking
primitives, which simplifies the code a lot -- as well as simulate the
usage of Ecore_Thread as our users will likely do.

Since SOCKSv4a and SOCKSv5 allow name resolution, the whole
getaddrinfo() is done in the same thread, when needed, instead of a
separate thread to do that, which should also save some resources.

Instead of the legacy ECORE_CON_SOCKS_V4 and ECORE_CON_SOCKS_V5, now
we use socks_proxy, all_proxy and no_proxy. This matches our other
dialers http/websocket (which will use http_proxy, all_proxy and
no_proxy). If desired it's easy to add back support for those
variables, but I think we should just deprecate them. (The legacy code
will keep unchanged, thus direct users of ecore_con_server will still
use those -- just the previous users of ecore_con_server will be
converted to use the new API).
2016-09-19 01:18:14 -03:00
Gustavo Sverzut Barbieri eb9a1f13a3 efl_net_dialer_http: do eos on error. 2016-09-19 01:18:14 -03:00
Gustavo Sverzut Barbieri b2e562d4c6 efl_net_dialer: improve proxy docs.
Document some proxy behavior like done by CURL, so we'll follow that
standard, with $http_proxy, $socks_proxy, $all_proxy and $no_proxy.

also add some missing @since.
2016-09-19 01:18:14 -03:00
Gustavo Sverzut Barbieri f42e649476 efl_promise: check NULL before calling.
we do not check any of success, failure or progress, so we must check
if they are valid before calling.

This fixed a bug in efl_net_dialer_tcp where it uses a null failure
cb and was SEGV.
2016-09-19 01:18:14 -03:00
Gustavo Sverzut Barbieri 76c3726ef0 eina_thread: don't leak on pthread_cancel().
if we cancel a thread we should still free the context, so use the new
EINA_THREAD_CLEANUP_PUSH() and EINA_THREAD_CLEANUP_POP()
2016-09-19 01:01:35 -03:00
Andy Williams a050395770 elm: Fix edit popup menu order
Cut/Copy/Paste is the standard order most other places.
@fix
2016-09-17 23:58:55 +01:00
Cedric Bail 03797a33ab ecore,ecore_con: fix migration to efl_future.
Efl_Future actually work with weak reference. So you do not need to
set things to NULL, but you actually need to register the memory location
of the future with efl_future_use.
2016-09-16 19:13:59 -07:00
Derek Foreman c98bb97ff0 Revert "eina: Actually call eina_cpu_init() and eina_cpu_shutdown()"
This reverts commit 1881b0d343.

This is called from an array constructed with pre-processor macros and
I didn't notice.
2016-09-16 19:39:38 -05:00
Derek Foreman 60f3f5fbfd eina_cpu: Fix broken E_API macro
Oops, I cut and paste it from a wrong file.

Thanks to Vincent Torri for the quick catch.
2016-09-16 15:57:42 -05:00
Carsten Haitzler 50d508866e eo invalid err - make the thread self more useful like main. 2016-09-17 05:49:32 +09:00
Derek Foreman a453599d26 eina_cpu: Detect NEON if available
We may have a few conditionals around that think this has actually been
set at some point, let's surprise them by actually doing that.
2016-09-16 14:10:49 -05:00
Derek Foreman 0f98e1c6d3 eina_thread: Don't ensure affinity core is lower than number of cpus
CPUs can be turned off after boot leading to a sparse mapping of core ids.

For example, if I turn off the first four cores on an exynos 5422 (these
are the low speed cores) then the high speed cores are still numbered 4-7
but there are only 4 cores present.

In that situation using affinity_core % num_cpus will prevent ever being
able to set affinity at all.

Just remove the pointless check and let the user set whatever core id they
want.
2016-09-16 14:10:49 -05:00
Derek Foreman a17ac66f0a render_thread: Attempt to set affinity to a random fast core
We've been pinning the render thread for every EFL process to core 0.
This is a bit silly in the first place, but some big.LITTLE arm systems,
such as exynos 5422, have the LITTLE cores first.

On those systems we put all the render threads on a slow core.

This attempts to fix that by using a random core from the pool of fast
cores.

If we can't determine which cores are fast (ie: we're not on a
linux kernel with cpufreq enabled) then we'll continue doing what we've
always done.
2016-09-16 14:10:49 -05:00
Derek Foreman 13da63d260 eina_cpu: Add an internal api for getting a random fast core
In a big.LITTLE ARM system cores can have different capabilities.  This
gives an internal API that randomly returns the core id of any of the
system's fastest cores.

On systems where all cores are the same, it will return any available core.

If we don't have cpufreq support we just return 0
2016-09-16 14:10:49 -05:00
Derek Foreman 1881b0d343 eina: Actually call eina_cpu_init() and eina_cpu_shutdown()
Without calling eina_cpu_init() the eina_cpu_features bits aren't
properly set up.

Let's call it and see if anything exciting happens.
2016-09-16 14:10:49 -05:00
Vincent Torri 79fadd184f Eina: fix colors messages in MSYS2
With MSYS1 or cygwin 1.5, or DOS console, the display is done by redirecting
stdout and al. So to change the colors, the Win32 API of the console must be
used.
On the contrary, the terminals based on mintty (like cygwin 1.8 terminal or MSYS2)
the redirection is done with pipes, so the Win32 API of the console does not
work when changing the colors and we can use the POSIX colors of printf.

This patch is fixing the eina code which alwayss use the Win32 API of the console
on Windows, even if mintty-based terminals are used
2016-09-16 14:48:33 +01:00
Gustavo Sverzut Barbieri 6e12d4f86c efl_io_file: unbreak windows build (missing O_CLOEXEC).
To avoid many ifdef, define the flag to 0 so we "| 0" or "& ~0", that
have no effect.

Fixes T4612.
2016-09-16 07:26:54 -03:00
Carsten Haitzler 60f84b733a eo - id lookup failure expansive error print for ebbter debug
whenan eoid lookup fails, now print a lot of information on the issue
like the actual id, generation of the id, if its a class or object
(the class bit), if its ref or super bit is set, the actual id (which
includes the table heirachy), which thread id it is, what domain the
object id is and the current and local domains as well as what domains
are mapped in.
2016-09-16 18:51:22 +09:00
Cedric Bail 802b146038 ecore_con: forgotten update of Eina_Promise to Efl_Future convertion due to git rebase. 2016-09-15 21:51:15 -07:00
Cedric Bail 95093095f3 ecore_con: migrate use of Eina_Promise to Efl_Future. 2016-09-15 21:49:08 -07:00
Cedric Bail dfc65aef6e ecore: migrate job and timeout to use future. 2016-09-15 21:49:08 -07:00
Cedric Bail f8fd97cd02 ecore: shut up const warning. 2016-09-15 21:49:08 -07:00
Cedric Bail b421414e55 ecore: do not trigger future,none once value/cancel has been set.
This would have forced who ever used future,none signal to manually
filter out event triggered by all the future beeing fullfiled and
disconnecting once they receive a value or are marked failed.
2016-09-15 21:49:08 -07:00
Vitor Sousa 35ecfcd650 elm fileselector: fix legacy methods for Entry and Button
Some legacy functions that works with string paths were not redirecting for
the correct code when called with Elm.Fileselector.Button or
Elm.Fileselector.Entry.
This commit fixes this problem.

@fix
2016-09-14 21:04:00 -03:00
Cedric Bail 351af26271 elementary: properly handle refcounting of file in efl_ui_image asynchronous image openning. 2016-09-14 16:52:08 -07:00
Cedric Bail 4d69f472fe eina: allow graceful failure when calling eina_thread_cancel with NULL. 2016-09-14 16:50:05 -07:00
Gustavo Sverzut Barbieri 960e1a1d16 eina/ecore: allow threads to be canceled, use in ecore_con.
As discussed in the mailing list, many people will use worker threads
to execute blocking syscalls and mandating ecore_thread_check() for
voluntary preemption reduces the ecore_thread usefulness a lot.

A clear example is ecore_con usage of connect() and getaddrinfo() in
threads. If the connect timeout expires, the thread will be cancelled,
but it was blocked on syscalls and they will hang around for long
time. If the application exits, ecore will print an error saying it
can SEGV.

Then enable access to pthread_setcancelstate(PTHREAD_CANCEL_ENABLE)
via eina_thread_cancellable_set(EINA_TRUE), to pthread_cancel() via
eina_thread_cancel(), to pthread_cleanup_push()/pthread_cleanup_pop()
via EINA_THREAD_CLEANUP_PUSH()/EINA_THREAD_CLEANUP_POP() and so on.

Ecore threads will enforce non-cancellable threads on its own code,
but the user may decide to enable that and allow cancellation, that's
not an issue since ecore_thread now plays well and use cleanup
functions.

Ecore con connect/resolve make use of that and enable cancellable
state, efl_net_dialer_tcp benefits a lot from that.

A good comparison of the benefit is to run:

   ./src/examples/ecore/efl_io_copier_example tcp://google.com:1234 :stdout:

before and after. It will timeout after 30s and with this patch the
thread is gone, no ecore error is printed about possible SEGV.
2016-09-14 01:47:23 -03:00
Felipe Magno de Almeida dbed78ad3b eina-cxx: Moved variant to eina C++ 2016-09-14 00:33:22 -03:00
Cedric BAIL f9401c16f0 evas: link output with evas canvas at finalize time. 2016-09-13 16:12:41 -07:00
Cedric BAIL 23495add5b evas: remove useless symbol. 2016-09-13 16:12:41 -07:00
Cedric BAIL a9ff1bf986 evas: efl_canvas_output should be able to provide pixels if requested. 2016-09-13 16:12:41 -07:00
Gustavo Sverzut Barbieri f8feeb7d92 efl_net_dialer_* use timeout promise instead of timer object.
i wasn't aware of efl_loop_timeout for one-shot timeout promises, then
use it instead of a full object.
2016-09-13 16:09:29 -03:00
Chris Michael 3ab6629a06 evas: Add missing return values for _efl_canvas_output_lock/unlock
functions

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-09-13 09:36:15 -04:00
Chris Michael 4a6d5e2a05 evas: Mark unused parameters as being EINA_UNUSED
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-09-13 09:32:48 -04:00
Daniel Hirt 6766ae57a7 Remove leftover evas_out usage from legacy
Build failed after b5456893ee due to
a missing header.
2016-09-13 10:38:02 +03:00
Woochan Lee cb15722768 elm_calendar: Fix header text bug.
Summary:
There is a bug. when calendar showing very first time.
the some of the headers(weekday name) is blank.

Because of elm_layout_text_set() called with NULL value.

Need to insert all of the weekday names before set text.

@fix

Test Plan:
Execute elementary_test
Open calendar sample.
See the all of the header names there.

Reviewers: cedric, jpeg, Hermet

Reviewed By: Hermet

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4290
2016-09-13 15:17:27 +09:00
Cedric BAIL b5456893ee evas: start working on efl_canvas_output.
This should when done enable the possibility for multi screen in wayland
along with remote display, wireless display and screencasting.
2016-09-12 16:19:10 -07:00
Cedric BAIL 59a77b3315 eio: properly track destruction of all Eet eio request.
@fix T4550
2016-09-12 16:19:10 -07:00
Gustavo Sverzut Barbieri 122b6830b4 efl_net_dialer_tcp: add connect timeout. 2016-09-12 14:48:03 -03:00
Gustavo Sverzut Barbieri cf87389f1e efl_net_dialer_websocket: close and emit EOS on error.
On errors we should close the websocket and if it's in streaming mode
emit an EOS.
2016-09-12 13:44:35 -03:00
Gustavo Sverzut Barbieri bda935c304 efl_net_dialer_tcp: emit EOS on errors.
I/O copier and others may depend on end-of-stream to stop processing,
then emit the EOS on failures.
2016-09-12 13:21:20 -03:00
Gustavo Sverzut Barbieri 704d0818d7 efl_net_dialer_http: emit eos only at the end.
http copiers were never finishing since eos was being reset to FALSE
before the I/O copier job executed.
2016-09-12 13:18:28 -03:00
Gustavo Sverzut Barbieri f3d4b96cb7 efl_net_socket_fd: fail early on double close. 2016-09-12 13:18:28 -03:00
Gustavo Sverzut Barbieri ea7bc821d5 efl_io_closer: add close_on_exec and close_on_destructor properties.
the purpose of these properties are to make it more uniform the
handling of these auto-close behavior.
2016-09-12 13:18:28 -03:00
Jaehyun Cho 7c2671b1f7 config: Add Escape key binding to naviframe.
Naviframe item is popped when Escape key is pressed.
2016-09-12 20:51:04 +09:00
Mykyta Biliavskyi a098ea0f3d Edje_Edit: check returned value edje_edit_edje_file_save function.
In edje_edit_group_copy() for case when save routine is failed
still returned EINA_TRUE. Now will be returned result of save routine.

@fix
CID: 1362727
2016-09-12 14:31:08 +03:00
Hermet Park e8fcc41e40 evas map: fix the rendering problem.
I got an issue report about map rendering.
After investigated, I found that was introduced by data overflow.

For fast computation, evas map uses integer data type rather than float,
that gives up some range of data size.

So, if vertex range is a little large but still reasonable,
polygon won'be properly displayed due to the integer overflow.

We can fix this by changing FPc data type to 64 bits (ie, long long)
But I didn't do yet though I can simply fix this costlessly.

By the way, my test case map points are below.

0: -1715, -5499
1: -83, -1011
2: 1957, 5721
3: 325, 1233

and gl result is perfect but sw is totally broken.

@fix
2016-09-12 16:50:00 +09:00
Felipe Magno de Almeida a63cfcafc7 eolian-cxx: Implement future template class for C++ 2016-09-11 23:44:05 -03:00
Andy Williams 2598ea8da8 elm: don't show our elm_code popup if ctrl pressed 2016-09-11 19:14:20 +01:00
Andy Williams a4398fffef elm: Add popup edit menu in elm_code 2016-09-11 19:14:20 +01:00
Mykyta Biliavskyi 3ba73e58f5 Ecore_con_ssl: fix return value of ecore_con_ssl_client_upgrade.
In case when _ecore_con_ssl_client_init_(gnutls/openssl) finished
successful a enum ECORE_CON_SSL_ERROR_NONE value (0) returned. Function
ecore_con_ssl_client_upgrade return Eina_Bool and in case of success
EINA_FALSE was returned.

@fix
2016-09-11 20:22:05 +03:00
Cedric BAIL e8fb89c156 ecore: fix reference counting of promise value for efl_future_race and efl_future_all. 2016-09-09 16:22:55 -07:00
Gustavo Sverzut Barbieri cb8695e9d6 efl_net_dialer_tcp: make asynchronous resolve and connect.
both resolve (getaddrinfo()) and connect() are now done in
Ecore_Thread, avoid to block the main loop.

My plan is to always use the threaded connect() using a blocking
socket, only set it to non-blocking after the socket is returned to
the main thread and before it's accessible to the user. It will make
the connect behavior more uniform.

Some errors were moved from HTTP to Dialer as they are more generic.
2016-09-09 20:14:01 -03:00
Chris Michael 45ce4c8008 ecore-drm2: Rename output_fb_release to just fb_release
As this function releases FBOs on a given output, lets just shorten
the API function name so it can stay grouped into the ecore_drm2_fb.c
file ... leaving it as ecore_drm2_output_fb_release reads like it
should have gone into the ecore_drm2_output.c file...

NB: No real function changes here, just an API rename.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-09-09 15:10:47 -04:00
Chris Michael 50aa37790f ecore-drm2: Add missing EINA_SAFETY checks for public facing API
functions

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-09-09 15:05:00 -04:00
Derek Foreman 21ad56aa32 ecore_drm2: Add ecore_drm2_output_fb_release way to force buffer release
Adds an api to attempt to release an fb from an output.  This will try
to first free any queued but not display buffers, which may harmlessly
give us a render target.

However, if that fails it will try to get buffers that have been sent to
scanout, which can lead to tearing.
2016-09-09 13:39:05 -05:00
Derek Foreman 30d14779a6 ecore_drm2: Add release handlers for buffers
Allow the engine to register a callback for buffer release.  This lets us
do appropriate buffer bookkeeping (for example, gbm locking) in the
engine.
2016-09-09 13:39:05 -05:00
Derek Foreman 0722eae960 ecore_drm2: Store gbm_bo for Fbs and add a getter function for it
This will aid with proper locking in gl_drm later
2016-09-09 13:39:05 -05:00
Gustavo Sverzut Barbieri 6bed17ccdf remove TODO/hacks for eo, it's fixed now.
Tasn fixed https://phab.enlightenment.org/T4418 so these are not needed anymore.
2016-09-09 14:53:11 -03:00
Tom Hacohen cfcdacc5f7 Eo: Remove the EO_DEBUG env check. We have DBG for that. 2016-09-09 11:38:07 +01:00
Tom Hacohen 284b6a5a3e Update the EFL according to new Eo API changes.
I didn't expect it (my bad), but why the hell is this done manually
instead of using Eolian?! People, use Eolian.
2016-09-09 11:25:12 +01:00
Tom Hacohen 7ebf9d879d Eo: Change the way functions are registered to classes
This change lets us remove a field from the structure that leads to
around 20KiB more of saving in private dirty pages in elementary.

This also looks a bit better and feels a bit cleaner.

Breaks API and ABI.
2016-09-09 11:14:35 +01:00
Tom Hacohen 5ad71f1486 Eo: don't allow object override to introduce previously undefined functions. 2016-09-09 11:14:05 +01:00
Carsten Haitzler 8b159aab68 eo - move eoid lookup to ptr indir file and clean up some code
this improves the readability of some of the new domain related and
ptr indir code..
2016-09-09 18:53:20 +09:00
Carsten Haitzler ab0cb7a62d eo - we actually steal the 3rd highest bit for classes - fix
we now just lost another bit from generation count. down to 6 in 32bit
and 26 in 64 bit. this sucks but is necessary. now we are using the
bits just below ref and super bits the code was just maskign off the
next bit as a class marker. this was so so so so wrong. it was the ide
table space. we just never used numbers high enough to start using it.
since i added domain there now those bits can be used easily with
thread domain or other domain. argh! existing eo bug found and fixed.
annoying! :) i added another #define there just to be clear we use
that bit for classes.
2016-09-09 18:53:20 +09:00
Carsten Haitzler 54c39aa564 eo class add - dont always call getenv as this is epxensive. get once
so class creation is possibly a little slower thanks to always calling
getenv. get once then store rsult from there on out.
2016-09-09 18:53:20 +09:00
Jean Guyomarc'h a336e761d2 eo: avoid redefinition of type Efl_Promise
clang complained about type redefinition being a C11 feature, throwing a
warning for each compiling unit including Eo.h.
2016-09-09 08:44:46 +02:00
Cedric BAIL bd362b13d6 efl: add documentation and last cleanup of the API. 2016-09-08 15:16:43 -07:00
Cedric BAIL 0c067fb62f eio: implement efl_io_manager_xattr_ls 2016-09-08 15:16:43 -07:00
Cedric BAIL c6e145da2d eio: add an internal function for getting xattr in bulk. 2016-09-08 15:16:43 -07:00
Cedric BAIL 5579d2f5cd eio: make xattr list packed for better performance. 2016-09-08 15:16:43 -07:00
Cedric BAIL d7fbd6f13e eio: fix allocation in eio_dir to reuse common safer infra. 2016-09-08 15:16:43 -07:00
Cedric BAIL f1c8c82e5f ecore: fix parenting to be done right on promise and future. 2016-09-08 15:16:43 -07:00
Cedric BAIL cb17d46cf5 ecore: fix optional future promise to not complain of there destruction. 2016-09-08 15:16:42 -07:00
Cedric Bail 52c63190d5 eio: rework efl_io_manager to use efl_future. 2016-09-08 15:16:23 -07:00
Cedric Bail f17f389b66 eo: add Eina.Binbuf native type. 2016-09-08 14:58:06 -07:00
Cedric Bail 11fe9b8cd9 eio: add internal function able to build array instead of triggering a callback per files. 2016-09-08 14:58:06 -07:00
Cedric Bail d26a0a2f70 eio: track length of resulting operation to be reported by futures. 2016-09-08 14:58:06 -07:00
Cedric BAIL aaac15126b ecore: add efl_future_iterator_race. 2016-09-08 14:58:06 -07:00
Cedric Bail 0789156c86 ecore: add efl_future_race. 2016-09-08 14:58:06 -07:00
Cedric BAIL 56df83e2c0 ecore: add efl_future_iterator_all. 2016-09-08 14:58:06 -07:00
Cedric Bail 84958dc6ca ecore: add efl_future_all. 2016-09-08 14:58:05 -07:00
Cedric BAIL 6f2cad6439 efl: add a possibility to link death of Eo object with a future. 2016-09-08 14:58:05 -07:00
Cedric Bail cd6a8aa6b3 ecore: add support for optional futures. 2016-09-08 14:58:05 -07:00
Cedric BAIL b2fb5e375a ecore: add Efl.Promise. 2016-09-08 14:58:05 -07:00
Cedric BAIL 7ae43659f6 efl: remove unecessary legacy_prefix set to null. 2016-09-08 14:58:05 -07:00
Cedric BAIL 36bc9aa187 eolian: add a builtin to handle a free callback. 2016-09-08 14:58:05 -07:00
Cedric BAIL ed9dff8fbd eolian: add support for future.
Future is the read only side of a Promise. For now, I am not removing
Eina_Promise until everything is in place, but eventually the promise
type of eolian will be gone.
2016-09-08 14:58:05 -07:00
Cedric BAIL 9a2ada6d87 eo: add abstract efl.future. 2016-09-08 14:58:05 -07:00
Gustavo Sverzut Barbieri 4814f937e2 efl_net_socket_fd: make it more win32 friendly.
it seems that on windows read() and write() won't work with sockets,
so use recv() and send().

Note that this code is still untested on windows, at least the errors
must be fetched using WSAGetLastError() instead of errno directly, but
I don't have a Windows machine I can test.
2016-09-08 17:01:13 -03:00
Derek Foreman 255b990055 ecore_drm2: Remove get/set for next fb
We no longer needs these at all.
2016-09-08 13:55:25 -05:00
Derek Foreman cc29a25c47 ecore_drm2: simplify API to get latest FB
What we've always wanted when getting the "current" FB is to get
the most recently submit one - this may be current, next, or pending.

Replace ecore_drm2_output_current_fb_get() with a function that gets the
most recent one - ecore_drm2_output_latest_fb_get().  Now callers don't
have to check the next buffer themselves first, and we don't have to
add an API for pending.
2016-09-08 13:55:25 -05:00
Derek Foreman b4cbf860b9 ecore_drm2: Add a page flip completion call
Add a function for ecore_evas_drm to call after a page flip happens so
ecore_drm2 can track busy status for fbs itself (including for the fb
that's currently being flipped to scanout)

Also, call the completion function from ecore_evas_drm
2016-09-08 13:55:24 -05:00
Derek Foreman 33043ff1eb ecore_drm2: distinguish real flip failure from flip deferral
If we try to flip too soon we get EBUSY and should queue up the buffer
for later presentation.  Only the other errors need to be dealt with
elsewhere.
2016-09-08 13:55:24 -05:00
Derek Foreman 3be2630a30 ecore_drm2: make flip to NULL buffer mean something
When triple buffering we'll have a buffer in ecore_drm2's "next" position.
Until now we've had to query it from the engine then try to re post it.

Also, when generating ticks we need to flip to the current buffer when no
changes have been made to get another callback.

Now a NULL fb to fb_flip will either flip to next, if available, or current
if there's nothing new to flip to.
2016-09-08 13:55:24 -05:00
Derek Foreman ce7991b993 ecore_drm2: Implicitly set buffer busy status when flipping
This simplifies other code that shouldn't need to deal with this.
2016-09-08 13:55:23 -05:00
Derek Foreman 3d39c1e9b8 ecore_drm2: Add a function to set the pageflip callback data once
Instead of passing the user data for the page flip callback every time,
set it just once.

This will make it easier to push tick logic into ecore_evas_drm, as there
will be a transitional period where page flips are driven in two places
that don't have access to the same pointers.
2016-09-08 13:55:23 -05:00
Derek Foreman d8c9f8ef17 ecore_drm2: Add busy status to ecore_drm2_fb
We've been tracking this in the outbuf code, but that logic is going to
be moved into ecore_evas_drm to use the new ticking paradigm.
2016-09-08 13:55:23 -05:00
Derek Foreman 398771bf8a evas_engines: Add fn_evas_changed callback
To allow using the pageflip completion event to drive timing in the DRM
engine we need to know as soon as possible that a render has been after
a render has been considered if it will cause a page flip or not.

The fn_evas_changed callback sends this information.
2016-09-08 13:55:23 -05:00
Tom Hacohen bd3801247e Eo: Make function overrides implicit.
Before this commit, function overrides were explicit. That is, you'd
have to explicitly state you were overriding a function instead of
creating a new one. This made the code a tad more complex, and was also
a bit more annoying to use. This commit removes this extra piece of
information.

This means we now store much less information per function, that will
let us further optimise out structures in the future.
2016-09-08 13:59:04 +01:00
Chris Michael 0f8fb7ef88 evas: Fix jpeg snafu and properly send hold events to children
Commit 405680e836 changed how hold
events were being sent. Previous code was sending the hold events to
child objects, however after mentioned commit, they were being sent to
main objects. This patch fixes that.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-09-08 08:40:16 -04:00
Tom Hacohen 6b60560773 Eo class creation: Simplify code using recursive locks.
Now that we have recursive locks, the class creation code can be much simpler.
All the code there was essentially our own implementation of recursive locks,
or rather a special case of those.

This is no longer needed.
2016-09-08 11:14:32 +01:00
Carsten Haitzler be29f3f4ec efl ui image - fix janky blocking async image preload thread handling
fix the elm image threaded image preload to be far simpler and
actually threadsafe without blocking the mainloop at all even on
object deletion. this also ensures ar least the first 512M of any
async precached file are loaded in so the preload doesnt stall on
headers that are outside maybe the first 4k of the file. i saw this
happening all over the place in the test i created.

@optimize
2016-09-08 17:30:59 +09:00
Jean Guyomarc'h c8d82dfc61 ecore_cocoa: fix build warning 2016-09-08 07:51:30 +02:00
Ji-Youn Park 7ce79be1a1 evas_render: fix clipping the whole area in each rendering.
evas_render should not be going and doing evas_object_clip_set () at all.
The framespace clip should be enforced at RENDER time.
2016-09-08 09:56:30 +08:30
Al Poole a19f730137 eio: fix kevent monitor to not SIGBUS. 2016-09-07 16:41:59 -07:00
Cedric BAIL e6a810efa7 elementary: fix call to efl_data_scope_get from another thread.
This should fix the breakage on elm_suite.
2016-09-07 11:42:29 -07:00
Carsten Haitzler 3ce5d1ebc7 eo_compatible - improve usability of err/warnings by duplication impl 2016-09-08 00:09:32 +09:00
Carsten Haitzler fc6759ef4d eodomain related docs - update as per some of gustavo's comments 2016-09-08 00:09:32 +09:00
Carsten Haitzler 9d2786896b eo - fix indenting in a file that was nuts and non-standard 2016-09-08 00:09:31 +09:00
Carsten Haitzler f695762d06 eo - add single global mutex for all shared eo objects to they are th-safe
this adds a signle mutex (recursive) mutex for all eo objects that is
auto-called by _efl_object_call_resolve() and _efl_object_call_end()
that wrap all eo method calls and since its recursive it can be
blindly called for sub-calls. this will lock all shared objects during
any call to any shared object so only the thread calling now has
access until it releases. not fine-grained but good enough and the
best we can do "simplistically".
2016-09-08 00:09:31 +09:00
Carsten Haitzler 1d26e61478 eina - add recursive mutex lock - apparently these are portable
new feature - recursive lock. same as normal lock just with recursive
attr set

@feature
2016-09-08 00:09:31 +09:00
Chris Michael c3d5ccf0f9 Revert "evas: Remove set but not used variable"
This reverts commit 24c5df29b3.

This should not have been pushed. Removed the variable from the wrong
spot :(
2016-09-07 08:35:30 -04:00
Chris Michael 24c5df29b3 evas: Remove set but not used variable
Gcc warns eo_child is set but not used here, so remove it.

NB: This should have been removed in previous evas_events commit. Oopise

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-09-07 08:31:39 -04:00
Chris Michael 6b63d9d6ec evas: Remove set but unused variables
Gcc warns that these variables are 'set but not used'. After reading
the surrounding code, it turns out they are not actually used, so
remove them.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-09-07 08:22:11 -04:00
Carsten Haitzler 4478654be1 eo resolv call cache - make TLS with __thread, linker+compiler do it
this will now fix the call cache to be a tls data member and thus
threadsafe. this is the sanest way.
2016-09-07 20:58:39 +09:00
Carsten Haitzler 09f19c3c73 eo - make eo id table TLS private data for thread safety and speed
This moved all the eoid tables, eoid lookup caches, generation count
information ad eo_isa cache into a TLS segment of memory that is
thread private. There is also a shared domain for EO objects that all
threads can access, but it has an added cost of a lock. This means
objects accessed outside the thread they were created in cannot be
accessed by another thread unless they are adopted in temporarily, or
create4d with the shared domain active at the time of creation. child
objects will use their parent object domain if created with a parent
object passed in. If you were accessing EO (EFL) objects across threads
before then this will actually now cause your code to fail as it was
invalid before to do this as no actual objects were threadsafe in EFL,
so this will force things to "fail early".
ecore_thread_main_loop_begin() and end() still work as this uses the
eo domain adoption features to temporarily adopt a domain during this
section and then return it when done.

This returns speed back to eo brining the overhead in my tests of
lookup for the elm genlist autobounce test in elementary from about
5-7% down to 2.5-2.6%. A steep drop.

This does not mean everything is perfect. Still to do are:

1. Tests in the test suite
2. Some API's to help for sending objects from thread to thread
3. Make the eo call cache TLS data to make it also safe
4. Look at other locks in eo and probably move them to TLS data
5. Make eo resolve and call wrappers that call the real method func do
   recursive mutex wrapping of the given object IF it is a shared object
   to provide threadsafety transparently for shared objects (but adding
   some overhead as a result)
6. Test test est, and that is why this commit is going in now for wider
   testing
7. Decide how to make this work with sending IPC (between threads)
8. Deciding what makes an object sendable (a sendable property in base?)
9. Deciding what makes an object shareable (a sharable property in base?)
2016-09-07 18:17:10 +09:00
Amitesh Singh a17909b007 eeze: remove trailing whitespaces 2016-09-07 09:48:39 +05:30
Youngbok Shin f50674db58 elementary label: use text width when label calculates duration for slide
Summary:
When developers customize theme for making different type of sliding label,
it would be better to send a duration based on whole text.
[The whole text width - label object's w] is only useful for short, bounce
type sliding.

Test Plan: N/A

Reviewers: raster, tasn, herdsman, cedric

Reviewed By: cedric

Subscribers: minkyu, akanad, z-wony, Blackmole, jpeg

Differential Revision: https://phab.enlightenment.org/D4255

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2016-09-06 15:00:55 -07:00
Andrii Kroitor 605694ed2a eina: fix error reporting in cond_timedwait
Summary: EINA_FALSE was set into wrong variable.

Reviewers: jpeg, raster, Hermet, cedric

Reviewed By: cedric

Subscribers: NikaWhite

Differential Revision: https://phab.enlightenment.org/D4282

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2016-09-06 14:59:47 -07:00
Amitesh Singh a2e3b8ad13 eeze: add support of GPIO sysfs detection and watch.
This adds support for detection and watch of GPIO pins in /sys/class/gpio/*
This detects both gpiochip<N> & gpio<N>.

@feature
2016-09-06 20:42:26 +05:30
Carsten Haitzler e14a11d9fa eo base - fix free of all callbacks to set callbacks to NULL
we set count to 0 but not ptr to NULL. this we must do after free so
when other destructors run dont go relying on this ptr to be valid!
2016-09-06 22:12:23 +09:00
Stefan Schmidt 689ba2ff6d eo: update documentation after EFL_CLASS_DESCRIPTION_OPS removal
Remove the references to this removed macro.
2016-09-06 14:54:42 +02:00
Jean-Philippe Andre 183ba660d6 Efl.File: Remove method eject
Unused anywhere.
2016-09-06 17:48:13 +09:00
Jean-Philippe Andre b2d92f2626 evas: Implement support for external buffers
This brings support for the eo api for external buffers (like
the old data_set / data_get). The new API now works with slices
and planes.

The internal code still relies on the old cs.data array for
YUV color conversion. This makes the code a little bit too
complex to my taste.

Tested with expedite for RGBA and YUV 422 601 planar, both
SW and GL engines (x11).
2016-09-06 16:55:00 +09:00
Jean-Philippe Andre 2f737e8f3b evas: Change internal function image_data_direct 2016-09-06 16:54:54 +09:00
Jean-Philippe Andre 69132b5c1d evas: Implement plane support for managed buffers 2016-09-06 16:54:54 +09:00
Jean-Philippe Andre 8ee431572d evas: Switch EO APIs to Eina_Slice for gfx buffers (map)
This adds a plane and eina slice argument to the map/unmap
functions, instead of void_ptr + length.
2016-09-06 16:54:53 +09:00
Jean-Philippe Andre 1773ba5d82 evas: Internally switch to Eina_Slice for buffers
This will be used for the gfx buffer map/unmap eo apis.
2016-09-06 16:54:53 +09:00
Jean-Philippe Andre d7b8d97fd5 evas events: Add "raw" x,y values for future extensions
For pen tablets, this exposes the values as given by the driver
(quite useless without knowledge of the device itself).

For mice, this exposes x,y as set by the display manager, without
any extra processing in terms of smoothing or prediction. IOW
this returns the same as x,y until a smoothing algorithm is
implemented (todo).
2016-09-06 16:54:53 +09:00
Hermet Park 7f22addf1c evas canvas: add missing brackets. 2016-09-06 16:52:56 +09:00
Hermet Park 51acb259a2 evas canvas: fix a wrong condition check in smart changed.
There were 2 wrong conditions.

1. visible check.
Smart changed can be skipped only if previous/current visibility are false.

2. clipper.
Actually, it needed to check previous/current clippers but previously,
it checked only previous clippers.

@fix
2016-09-06 16:45:23 +09:00
Andrii Kroitor 9a1f3891d4 ecore_con_url_curl.h: add missing include on windows
Summary: windows has its own sockets implementation

Reviewers: raster, bowonryu, vtorri, Hermet

Reviewed By: Hermet

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4279
2016-09-06 16:36:59 +09:00
Woochan Lee 81db8e9f32 elm_calendar: Add enum to mark display every day before event day.
Summary:
There was no way to add marks on every day before event day.

The user may want to add mark something on every day before today.
(passed mark or disable etc...)

Test Plan:
Run elementary_test
Calling "elm_calendar_mark_add()" with ELM_CALENDAR_REVERSE_DAILY value.

Reviewers: cedric, Hermet

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4276
2016-09-06 16:20:15 +09:00
Tom Hacohen 829f298589 Eo array callback: Fix compilation on windows.
I knew Windows doesn't allow statically initialising pointers in the
global namespace, I had no idea it also applies to functions. That's
quite annoying.

Thanks to Cedric for reporting.
2016-09-05 17:51:09 +01:00
Tom Hacohen 9c779dca90 Rename efl_self to efl_added
It has been discussed on the ML (thread: "[RFC] rename efl_self") and
IRC, and has been decided we should rename it to this in order to avoid
confusion with the already established meaning of self which is very
similar to what we were using it for, but didn't have complete overlap.

Kudos to Marcel Hollerbach for initiating the discussion and
fighting for it until he convinced a significant mass. :)

This commit breaks API, and depending on compiler potentially ABI.

@feature
2016-09-05 16:59:56 +01:00
Tom Hacohen 5eedad98fe Efl object: Fix outdated docs. 2016-09-05 16:45:37 +01:00
Tom Hacohen b9c5ef4eea Eo array callback: simplify code and fix reliance on gcc extensions.
As far as I remember, declaring structures and arrays in a cast is a GCC
extension. I'm not 100% sure I'm right, but I remember it was the case.

Regardless of whether it's an extension or not, this commit removes that
pattern and makes everything cleaner (and faster?).
2016-09-05 16:25:36 +01:00
Tom Hacohen f13bb9d9f5 Efl object: rename shadowing variable. 2016-09-05 16:22:33 +01:00
Tom Hacohen a8ccb191c6 Adjust the EFL to the Eo class_initilizer changes. 2016-09-05 16:03:17 +01:00
Tom Hacohen 4aae224ef5 Efl object: change the way we set class's functions.
This is another follow up to the investigations of T4227. As stated
there, in any PIE (a shared library is one), structures, even const ones
end up being written to because of dynamic relocation. This means that
using static const structures has actually lead to no savings, only
waste. Since we never really needed them, using them made things even
worse than just having a different API that doesn't save them.

Thus, this commit changes the way we set the functions. Instead of
passing a pre-populated struct, we now just have an initialiser function
where you set the functions. This on its own doesn't significantly reduce
the amount of dirty memory pages for a reason I have yet to uncover,
though I believe it's done as a misguided compiler optimisation.
However, this design is flexible enough so we can change to another one
that is quite ugly, but I have already tested and proven that does that.
This patch series doesn't include the better improvement (passing
        everything on the stack as va_args) because the API was too ugly
for me to bear, and I would rather first make sure there is no way to
force the compiler to do the right thing here.

Unfortunately this commit gives up on useless stricter validation.
Before this commit we would make sure that we are only overriding
functions correctly defined in our hierarchy. With this one, we don't
anymore. This is not a big problem though because this is a check that
is also enforced by Eolian. So as long as you are using Eolian, you
should be fine.

Breaks API and ABI!

@feature
2016-09-05 16:03:17 +01:00
Tom Hacohen c8c0bbcfcf Efl object: rename EFL_OBJECT_OVERRIDE_OPS_DEFINE.
It is now called EFL_OPS_DEFINE as it's used for general purpose ops
definition.
2016-09-05 16:03:16 +01:00
Gustavo Sverzut Barbieri 72bfca0df5 efl_net_server_fd: fix coverity issue.
fixes CID 1361945, minor but let's do it :-)
2016-09-05 09:36:14 -03:00
Daniel Hirt 2e53068907 Edje entry: fix selection start with shift + mouse_down
Fixes T3043.

Starting a selection should be possible with shift + mouse_down. No need to
check the "have_selection" flag.

@fix
2016-09-05 14:32:34 +03:00
Marcel Hollerbach 58dedf4674 edje: protect against no file set yet.
Summary:
There can be the case that the file of a edje is NULL. Even if this case
is a bit strange, we should not crash on it.

Sample code which produces the crash:

   Edje_Object *edje;
   int r, g, b, a;

   edje = edje_object_add(evas);

   edje_obj_color_class_get(edje, "bla",
	EDJE_COLOR_CLASS_MODE_COLOR, &r, &g, &b, &a);

So better protect against this case.

Reviewers: raster, herdsman

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4277
2016-09-04 13:46:38 +02:00
Cedric Bail 05f05dde5c eo: protect efl_isa from thread race condition. 2016-09-02 10:19:45 -07:00
Cedric BAIL 3ab60a1564 eo: store registered callbacks in an array instead of a single chained list. 2016-09-02 10:19:45 -07:00
Cedric BAIL 605fec91ee eo: improve speed of walking callback array by sorting them during creation.
This improve speed of processing events in genlist scrolling benchmark by 30%
inside the efl_object_event_callback_call code. Not a really big deal as it
goes from 0.9% to 0.6% of the total time spend. Welcome to micro optimization.
2016-09-02 10:19:45 -07:00
Gustavo Sverzut Barbieri e12afd772c efl_net_dialer_websocket: EFL now does WebSocket!
The Efl.Net.Dialer.Websocket is just like other Efl.Net.Dialers: you
can dial, you can close, monitor connected/address resolved and so
on. And you can use WebSocket primitives and events such as
text_send(), binary_send(), ping() and close_request() (since
WebSockets use a close process where you should state a close
reason). See efl_net_dialer_websocket_example.c

Even if WebSocket is a message-based protocol (like "packets" from
UDP), you can use efl_net_dialer_websocket_streaming_mode_set() to
tell it to handle text or binary messages as a stream. Then all the
Efl.Io.Reader and Efl.Io.Writer APIs work as expected, see
efl_io_copier_example.c updates.
2016-09-02 00:08:50 -03:00
Gustavo Sverzut Barbieri 57e765a758 efl_net_dialer_http: use CURLOPT_NOSIGNAL.
EFL uses its own signal handlers, so we must disable CURL's usage of
those.
2016-09-02 00:08:50 -03:00
Gustavo Sverzut Barbieri 6ddd01bffb efl_net_dialer_http: fix interaction with CURL on receiving data.
When CURLOPT_WRITEFUNCTION returns less then the requested amount,
CURL will fail, not call us back with the remaining data.

Then in such cases we must pause CURL and read nothing.

When unpausing we need to kick curl with timeout action so FD handlers
will be re-arranged.

Last but not least, sync our buffer limit with CURL, otherwise it may
always fail if we're smaller than CURL.
2016-09-02 00:08:50 -03:00
Gustavo Sverzut Barbieri d12ff74f5f efl_net_dialer_http: allow delete/close from CURL callbacks.
CURL doesn't play nice if handles are deleted or modified while it's
dispatching the callbacks, then we must not touch the CURL* easy
handle in those cases, just dissociate the handle from object and
schedule a job to do the deletion later.

Also, since from CURL callbacks we do not have the reference to the
object, if they are deleted from inside the callback, users of 'pd'
will crash. Thus keep an extra reference while the object and its
private data are in use.

The curl_multi_info_read() is used to notify of errors and
end-of-stream, if we do callback directly from there, the user may
efl_del(dialer), which will result in the "pd->easy" being destroyed
with curl_easy_cleanup() then "cm" and "cm->multi" being destroyed.

Thus postpone that action and keep a list of finished objects, calling
their event handlers which can delete the object (or siblings), thus
ref before dispatching and unref afterwards, taking care to monitor
EFL_EVENT_DEL so we do not use stale objects.
2016-09-02 00:08:50 -03:00
Gustavo Sverzut Barbieri 4ee09c5bdb efl_io_copier: keep extra ref when calling back from job.
while in a job we do not have the safety of eo holding us alive and
when we call back the user, he may have deleted the object, releasing
both the object and its private data that we're using.

then keep an extra reference, call the methods and release it.
2016-09-02 00:08:49 -03:00
Michaël Bouchaud (yoz) 49ffa2c887 Elm: add missing @since into the doc about last added api to elm_progressbar. 2016-09-02 02:25:30 +02:00
Michaël Bouchaud (yoz) a9a9240421 elementary: Introduce a new edje_external param to the progressbar widget.
This widget was lacking an edje_external param to notify the widget to start or
stop pulsing from edje.

@fix Now the edje_external progressbar test works as expected.
2016-09-02 02:13:19 +02:00
Andy Williams 8f96646605 Elm: Dont insert errors by default in code
Instead insert the line if the gutter is clicked.
And provide a tooltip!
2016-09-01 23:15:34 +01:00
Andy Williams d7e261c3e6 elm: Use the background highlight colors from our website in Elm_Code 2016-09-01 23:14:11 +01:00
Andy Williams b52de36f03 Elm: Dont'd display a ghost 0 width line marker for elm_code.
Avoiding a ghost line when we have no width marker configured
2016-09-01 21:43:57 +01:00
Andy Williams f290f9ca4c Elm: Fix crashes with copy/paste of large code
Various fixes to the memory management of multiline strings
2016-09-01 21:41:57 +01:00
Jiwon Kim b52725cef5 efl_net: check definition 'SO_REUSEPORT' for port reuse flag
Summary:
The port reuse feature and 'SO_REUSEPORT' flag are not supported by a few linux
In case of linux kernel, it supported from v 3.9
  (https://kernelnewbies.org/Linux_3.9)
On the lower version of kernel, compile is failed

Reviewers: barbieri, jayji

Reviewed By: jayji

Subscribers: akanad, id213sin, cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4256
2016-09-01 19:08:25 +02:00
Minkyu Kang ec8487a8a4 elm_genlist: apply the item_select_on_focus_disable feature on key_action_move
Summary:
Previously, focused item was always selected on first and last key action.
If item_select_on_focus_disable is true, item should not be selected.

Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
Signed-off-by: jinwoo.shin <jw0227.shin@samsung.com>

Test Plan: elementary_test -to genlist

Reviewers: cedric, SanghyeonLee, Hermet

Reviewed By: Hermet

Subscribers: sju27, seoz, jpeg

Differential Revision: https://phab.enlightenment.org/D4272
2016-09-01 20:20:53 +09:00
Jee-Yong Um 1d281906f2 eina_matrix: add missing "*" for doxygen
Summary:
"/**" requires for doxygen, but one "*" is omitted for the reference
of eina_matrix3_multiply().

Reviewers: Hermet

Reviewed By: Hermet

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4266
2016-09-01 20:05:23 +09:00
Carsten Haitzler 90acc0216b eo - make eoid table access threadsafe - was missing a lock around it
this now makes at least eoid deref and ojbect access safe across
threads. the downside is that oeid lookup goes from 2% to ~5% of cpu.
ugh.
2016-09-01 18:59:56 +09:00
Jean-Philippe Andre b3993b684e win: Add EO API to query state of multi touch points
This combines evas canvas functions to list and query
touch points into a single iterator:
 - evas_touch_point_list_count
 - evas_touch_point_list_nth_xy_get
 - evas_touch_point_list_nth_id_get
 - evas_touch_point_list_nth_state_get

This also fixes a number of issues related to feeding fake
input events.

Note: I wanted to add delta x,y information as well but it's
in fact not really possible outside the event callback itself,
as the previous x,y position will not be updated unless there's
an event.

@feature
2016-09-01 14:57:11 +09:00
Jean-Philippe Andre e61b7139ff win: Move pointer "xy" and "inside" to input interface
Those two properties aren't related to a "drawing" canvas
but to the current state of input.

Note: both Efl.Input.Pointer (pointer input event data) and
Efl.Input.Interface (common interface for input handling objects)
expose a pointer position API. Not sure what to do about that.
2016-09-01 11:57:43 +09:00
Jean-Philippe Andre b675571bd8 evas events: Fix axis input values
This adds support for distance, pressure, tilt and twist.
Not entirely sure if normalized & raw (x,y) should be exposed
in the eo interface. Also not sure what to do with tilt_x/y
(as used by libinput) or touch/tool width "major/minor" vs.
radius x/y.

Add debug logs in the example, including the distance.
I can't test most of these values due to a lack of compatible
hardware, but the most basic features seem to work :)
2016-09-01 11:57:43 +09:00
Jean-Philippe Andre caf237abdf evas: Fix unlikely crash with image cache
This happened to me when running elm_suite manually, during
elm_shutdown. At this point, cache shouldn't be null, but better
be safe anyway.
2016-09-01 11:57:43 +09:00
Jean-Philippe Andre ed9413c1c1 ecore_poller: Fix unlikely crash if eo data is null
This happened to me when running elm_suite manually.
2016-09-01 11:57:43 +09:00
Jee-Yong Um 9f7ce792f0 elementary: remove unused SMART_NAME strings
Summary: Smart name strings are not used any more.

Reviewers: Hermet, cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4261
2016-09-01 11:33:04 +09:00
Jean Guyomarc'h 8118829225 ecore_cocoa: fix wrong key assignment 2016-08-31 21:24:49 +02:00
Daniel Hirt 2d44738fae Canvas text: fix ellipsis RTL handling
First, fixing ellipsis text positions: ellipsis items should be assigned the
text positions of the omitted text (while maintaining the formatting of the
last visual item). In the case where an entire item was rejected, it
will be assigned that item's text position. If an item was split, it will be
assigned the text position of the split portion.
The BiDi reorder code relies on properly-assigned text positions.

Second, fixing ellipsis handling: the width calc was only considering the
ellipsis item's width. However, if the ellipsis is placed as e.g. the first
visual item (such as in RTL cases), its advance value should've be considered,
instead.

Thanks Youngbok Shin for the test case and information.

@fix
2016-08-31 16:23:32 +03:00
Amitesh Singh d88f08f7e9 eina: module - Add macros for adding module informations
Summary:
These macros allow you to define module informations like
author/description/version/license

e.g.
// Use "Name <email id>" or just "Name"
EINA_MODULE_AUTHOR("Enlightenment Community");
// Mention license
EINA_MODULE_LICENSE("GPL v2");
// What your module does
EINA_MODULE_DESCRIPTION("This is what this module does");
// Module version
EINA_MODULE_VERSION("0.1");

Now eina_modinfo can show these informations to users

$ eina_modinfo module.so
 version: 0.1
 description:   Entry test
 license: GPLv2
 author:  Enlightenment Community

@feature

Reviewers: cedric, tasn, raster, jpeg

Subscribers: seoz

Differential Revision: https://phab.enlightenment.org/D4257
2016-08-31 16:17:53 +05:30
Jean-Philippe Andre f88a4b8308 evas events: Fix repeated calls to mouse callbacks
After my many input events changes, a same object callback
could be called multiple times in a row because both mouse
and multi events were sent. As such, the multi event had no
direct effect (no callback called) but it reset the object's
last event type. This allowed the mouse event callbacks to be
called again.

Note that I haven't tested multi touch yet :(

Very good catch by @bu5hm4n!

Fixes T4462
Fixes T4467
2016-08-31 11:41:58 +09:00
WooHyun Jung 9452acd126 elm widget: remove meaningless brackets 2016-08-31 09:36:52 +09:00
Andy Williams 9e54ae9373 elm: Try to use the code highlight color from out website in Elm_Code 2016-08-30 23:22:41 +01:00
Vitor Sousa f02ff462e7 efl callbacks: update some events calls to no longer trigger legacy callbacks 2016-08-30 13:59:59 -03:00
Mykyta Biliavskyi b6e2b8601d Edje edit: allocate memory for mempools.
Just added allocations that missed in "edje - reduce another 400k or so
of memory usage (esp hello world)" commit.
2016-08-30 16:57:53 +03:00
Tom Hacohen d5e321466e Efl object: Rename Eo_Event -> Efl_Event.
This is the last step of the Eo renaming efforts.
2016-08-30 13:34:10 +01:00
Jean-Philippe Andre ba80f7e5b0 ecore_con: Add missing socket.h
Reported and patched by @netstar

Fixes T4461
2016-08-30 20:52:02 +09:00
Jean-Philippe Andre 062145b605 win: Fix ERR message with object,focus,in
enventor exhibits this issue, where the focus target is
NULL in some cases. The ERR message was harmless, but it's
good to avoid it and be explicit that the object should be
non NULL when adding event callbacks.
2016-08-30 15:13:40 +09:00
Jean-Philippe Andre 2edf50cb10 evas events: Properly signal to clients which values are set
Since pointer events are all the same thing, users may not know
what values are valid for what kind of event. Eventually we
want to expose more information, but we also need a way to inform
the caller about the validity of the values we get.
2016-08-30 15:13:40 +09:00
Jean-Philippe Andre 68be4f49ed evas events: Fix mistake in multi_move
I guess (can't test) that multi touch was broken, as the
position of the event was set to the position of the pointer
on the canvas. Which means all fingers would be in the same
spot, no matter what the real input. Copy & paste error.
2016-08-30 15:13:40 +09:00
Gustavo Sverzut Barbieri b004b8a4f9 efl_net_dialer_http: keep fd directly.
provide curl with CURLOPT_OPENSOCKETFUNCTION and keep the fd in our
private data.

This is required because on _efl_net_dialer_http_efl_io_writer_write()
we may have no fdhandler.

It happened to me while implementing the WebSocket that uses a
bi-directional communication on top of HTTP and the server sent the
whole message, CURL reads:

   recvfrom(7, "...", 16384, 0, NULL, NULL) = 86
   recvfrom(7, "", 16384, 0, NULL, NULL) = 0

After the empty (second) recvfrom(), CURL will remove the fdhandler:

    DBG:ecore_con lib/ecore_con/efl_net_dialer_http.c:482 _efl_net_dialer_http_curlm_socket_manage() dialer=0x4000000040000005 fdhandler=(nil), fd=7, curl_easy=0x5561846ca8d0, flags=0x4

However I should be able to write to this socket, in my case I need to
reply to a PING request with a PONG.
2016-08-30 00:36:00 -03:00
Gustavo Sverzut Barbieri f1c691d0f5 efl_net_dialer_http: allow incompatible configurations such as GET + upload.
CURL is smart and when you ask for CURLOPT_HTTPGET, it will
automatically configure UPLOAD=false. Likewise, if you ask for
UPLOAD=1 it will configure CURLOPT_PUT...

However, to do things like WebSocket we need to do a GET request where
we need to send data, then UPLOAD=true must be used.

Then use both information in order to setup the request method and
upload, using CURLOPT_CUSTOMREQUEST to force a given HTTP method.
2016-08-30 00:35:45 -03:00
Gustavo Sverzut Barbieri fba2743361 efl_net_dialer_http: cancel curl multi timer when it's gone.
If we delete the curl multi handle, then we should stop any timer that
was scheduled, otherwise it will use a dead or null pointer.

also add some debug to help track down when the multi handle is
deleted.
2016-08-30 00:35:35 -03:00