Commit Graph

984 Commits

Author SHA1 Message Date
Vincent Torri 10ba064b65 Windows: remove XP support and forbid compilation and run on this platform
Test Plan: run on XP

Reviewers: jpeg, cedric, ajwillia.ms

Reviewed By: ajwillia.ms

Subscribers: ajwillia.ms

Differential Revision: https://phab.enlightenment.org/D5245
2017-10-01 18:09:46 +01:00
Carsten Haitzler a37e1e479d eina debug - add missing unlock in erite err case
fix CID 1381503
2017-10-01 16:04:35 +09:00
Carsten Haitzler 05b26102cf eina debug - check write return values and complain on failure
coverity - fix CID 1377521
2017-09-29 12:26:57 +09:00
Carsten Haitzler b7d4372221 eina debug - check write return value and complain
makes coverity happy - CID 1377524
2017-09-29 12:26:57 +09:00
Cedric BAIL 3a3ae49afd eina: add an helper to setup Eina_Value structure description.
This is particularly useful on system like Windows who doesn't allow
setting pointer at compile time in static const structure.
2017-09-27 16:30:31 -07:00
Vincent Torri 9b416d2360 eina: remove EFL_HAVE_WIN32_THREADS define as it is unused since winpthread is used
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-09-26 10:17:04 -07:00
Jeeyong Um c3709d2a5a docs: eina_value: fix a typo 2017-09-25 09:24:16 +09:00
Vincent Torri 0cdd501246 EFL For WIN32: Replace HAVE_EVIL define with _WIN32 2017-09-22 05:06:10 -05:00
Bryce Harrington 224b75b46d eina: document matrix3 multiplication routines
Reviewers: cedric

Reviewed By: cedric

Subscribers: cedric, jpeg

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-09-18 11:18:43 -07:00
Jean-Philippe Andre 8fb194d969 efl: Use Eina.Position2D for Efl.Gfx.position
Note: This is a little bit more cumbersome in some places but in most
it's more convenient than (x,y).
2017-09-18 13:22:54 +09:00
Jean-Philippe Andre f3eff6eb3e efl: Introduce Eina.Rect and switch EO APIs to it
It's a complex struct but defined in EO as a simple struct. ABI-wise
it's equivalent to Eina_Rectangle. Some macros that use Eina_Rectangle
also work on Eina_Rect out of the box, most of the code dealing with
x,y,w,h will require no modifications either.

But Eina_Rect provides direct access to a size or position 2d component,
as well as the usual x,y,w,h. The field "rect" is provided as a
convenience for code dealing with both Eina_Rectangle and Eina_Rect. We
may or may not require it.

Note: Size2D could use unsigned values but I have spotted a few places
in the code that actually use -1 to indicate invalid size (as opposed to
0x0).

@feature
2017-09-18 13:22:52 +09:00
Jean-Philippe Andre 05c051405e eina file: Ensure populate is safe to call
This makes sure that the call to madvise is safe. On Linux it's not too
much of an issue as checks are made inside madvise, and the worst that
can happen is an error is returned (EINVAL). Not great.

But if MAP_POPULATE is not present, as is the case on *BSD, then the
internal function _eina_file_map_populate() is used for the populate
rule. In that case actual data is read and we should make sure not to
trigger a segfault or bus error.

Also, this makes sure that in case of HugeTLB we actually populate all
pages, rather than one page out of 8 (we were jumping by 16Mb instead of
2Mb).

Note: Can we get the size of a HugeTLB at runtime? We're assuming 2Mb
which might very well not be the case!
See: https://wiki.debian.org/Hugepages

Tested by disabling MAP_POPULATE and observing crashes :)

@fix
2017-09-18 11:58:53 +09:00
Jean-Philippe Andre b2ea60691e eina file: Fix map_populate on the global map
If eina_file_map_all() is called, the map isn't added to the internal
hash "rmap" and so _eina_file_map_rule_apply() would never be called.

@fix

asa
2017-09-18 11:58:53 +09:00
Jean Guyomarc'h ca731fbfb6 eina: handle errors when creating a mempool
If the backend initialization failed, the mempool would still be
successfully created. The mempool is now destroyed on failure.
2017-09-16 14:28:39 +02:00
Cedric BAIL 112777fc7a eina: add iterator macro for Eina_Value that contain an array. 2017-09-14 11:00:34 -07:00
Cedric BAIL 024c6a9fc3 efl: silent warnings shown on solaris due to missing header files. 2017-09-14 09:59:02 -07:00
Cedric Bail 8fbfab83e9 eina: add an ability to quickly convert from an Eina_Value to an Eina_Binbuf. 2017-09-13 17:26:04 -07:00
Cedric Bail f5487c5d3e eina: fix Eina_Rectangle support in Eina_Value.
Thanks for the review Gustavo.
2017-09-13 10:39:31 -07:00
Cedric Bail 430095d4f1 eina: allow convertion to BLOB from Eina_File Eina_Value by mmap the file. 2017-09-13 10:38:36 -07:00
Cedric Bail af452c439d eina: improve Eina_File support in Eina_Value.
Thanks Gustavo.
2017-09-13 10:36:05 -07:00
Vincent Torri 966577ffed eina: add an Eina_Value helper for Eina_Rectangle. 2017-09-12 17:03:49 -07:00
Cedric BAIL 95dd799715 eina: add an Eina_Value helper for Eina_File. 2017-09-12 17:03:17 -07:00
Cedric BAIL 19e0f35d1c eina: cleanup documentation for promise. 2017-09-12 10:16:44 -07:00
Cedric BAIL fa9acf8b35 eina: add eina_promise_data_set symetric to eina_promise_data_get. 2017-09-11 16:09:43 -07:00
Cedric BAIL 54083a7835 eina: fix typos in eina_promise_all_array documentation. 2017-09-11 16:08:23 -07:00
Stefan Schmidt 79956eee63 eina: fix build for big endian platforms
Summary:
The code in eina_debug.c requires the eina_swapX() functions on big endian platforms, so include the required header.

Test Plan: Do build on big endian platform like ppc64 or s390x.

Subscribers: kubu, cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5158
2017-09-11 14:08:41 +02:00
Thiep Ha aced128e85 eina_promise: remove shadowed declaration warning 2017-09-05 15:56:00 +09:00
Jean Guyomarc'h b5e7a00681 eina: fix destruction of the osx semaphores
Well... that's just embarassing... semaphore_destroy() actually takes
the mach task as its first parameter, not the second. This core
amazingly worked very fine on macOS earlier than Sierra.

Fixes T5245
2017-09-05 00:45:04 +02:00
Gustavo Sverzut Barbieri d258774c2a Eina_Future: add eina_future_resolved()
This is a helper that creates a promise, then a future and immediately
resolves the promise, this will let the future be dispatched as usual,
from a clean main loop context.
2017-09-04 10:24:00 -03:00
Guilherme Iscaro 5bd8c9a78d Eina: Add Eina_Promise/Eina_Future.
This commit adds a new promise/future API which aims to replace
efl_future.
2017-09-04 10:24:00 -03:00
Jean-Philippe Andre f4ed430ddc eina_array: Fix magic checks to return
The EINA_MAGIC check inside eina_array were just printing the error
message, without failing. This could lead to more crashes than
necessary.

@fix
2017-09-01 10:09:37 +09:00
Jean-Philippe Andre 4a6b52465d eina: Add convenience eina_rectangle_equal
@feature
2017-08-30 17:29:52 +09:00
Carsten Haitzler a5c8e883d8 eina mmap safety - only map zeropages if it's an eina file that sigbuses
restrict mapping /dev/zero to only eina files having a sigbus
reported. the mmap was before all our file access used eina_file i
think thus the raw mmap of it. now walk all eina files and find the
candidate and only then if it exists flag is as having a faulty i/o
backing and map the zerto pages then return, otherwise call abort.
more restricted mapping and perhaps a fix for not trapping non-efl
issues.

@fix
2017-08-30 12:03:41 +09:00
Carsten Haitzler 15cdd9b71b eina file - use recursive locks for cache and file to avoid deadlock
since we have a sigbusd handler that flags an eina file with io errors
it has to walk the file cache and every file... taking locks. if those
locks were taking already in the current thread the sighandler was
called in... we'd deadlock. since this basicallly never happens (when
do we see i/o errors really? not much)... we never saw this as it'd
also reauire this race condition to happen too. but it is a problem
waiting to happen. this fixes that by moving to recrusive locks.

@fix
2017-08-30 11:31:02 +09:00
Jean Guyomarc'h 232e193673 eina: fix typo in documentation 2017-08-29 20:56:31 +02:00
Gustavo Sverzut Barbieri 71a74aa718 eina_value: silent -Wextra for EINA_VALUE_EMPTY
-Wextra complains about missing initializers, so provide the full 8
 bytes of the first member of the union.
2017-08-28 18:26:29 -03:00
Gustavo Sverzut Barbieri 9ac1cb4fad eina_value: add helper: eina_value_struct_desc_get().
this helper will validate a struct and fetch its description, also
checking if the user version matches.
2017-08-24 11:13:56 -03:00
Gustavo Sverzut Barbieri 103b134916 eina_value_util: eina_value_X_get() helpers.
These helpers will validate the type prior to get its value, also
enforcing the correct pointer is passed.
2017-08-23 18:32:13 -03:00
Gustavo Sverzut Barbieri f4b02d87d6 eina_value_util: init helpers (stack/return).
These helpers are similar to eina_value_X_new(), however do not
allocate the Eina_Value, rather return it.

These are useful when the value struct storage was already there but
needs to be initialized in a single line, like as stack variables or
when returning a value.
2017-08-23 18:32:13 -03:00
Gustavo Sverzut Barbieri c158d5c17a eina_value_util: add missing eina_value_*_new() for basic types.
make all basic types available as _new() helpers.
2017-08-23 18:32:13 -03:00
Gustavo Sverzut Barbieri 39acaab5e9 eina_value_util: remove "_util" from names.
these utilities are very useful, but names became too long. Since they
do not conflict with anything else, shorten them.

Since they were available before as inline function, provide a macro
to rename them for old source that's compiled against newer library.
2017-08-23 18:32:13 -03:00
Guilherme Iscaro 6cbfe100d5 Eina_Value type EINA_value. 2017-08-23 18:32:13 -03:00
Guilherme Iscaro 3ed176370d Eina: Add EINA_VALUE_TYPE_ERROR
This new type will be used by the new promise/future implementation,
which will be used to flag errors.
2017-08-23 18:32:13 -03:00
Gustavo Sverzut Barbieri 4da53492ae add EINA_VALUE_EMPTY, allow flushing empty values.
EINA_VALUE_EMPTY is basically a zeroed Eina_Value, handy for declaring
and returning.

To cope with the rest of efl, free/del/flush on NULL shouldn't
complain, so flusing an empty value should be quiet.
2017-08-23 18:32:13 -03:00
Gustavo Sverzut Barbieri 4cd1257b1b value size is stored in type, no need to manually specify them. 2017-08-15 19:01:23 -03:00
Cedric BAIL b5cede94ea eina: add an API to check if a pointer is a valid element of a mempool. 2017-08-15 13:46:34 -07:00
Jean-Philippe Andre b290cb5de0 eina_slstr: Fix leak in an error case
This function takes ownership of the incoming strbuf
2017-08-04 10:24:03 +09:00
Carsten Haitzler 256450d294 eina debug - remove other swap and comment on the weirdness of this 2017-08-03 09:08:04 +09:00
Cedric BAIL eed23765f9 eina: failing to load a module is actually an ERR that user should see. 2017-08-02 16:16:33 -07:00
Guilherme Iscaro 48443fda8f Eina_File: Avoid using munmap() on file->global_map.
When a virtualized file is created the file->global_map will not
point to a mmapped region, thus it's not safe to use munmap() during
the file cleanup. Only use munmap() if the file is backed by a FD.

Fixes: T5234.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-08-02 16:03:20 -07:00