Commit Graph

662 Commits

Author SHA1 Message Date
Cedric BAIL 588b133c19 eina: make eina rectangle an allocated thread safe structure to use.
This is a better fix than D3913.
2016-04-25 12:48:08 -07:00
Cedric Bail b4456121be eina: implement a memory cache for Eina_Rbtree_Iterator.
So it seems we are using Eina_Hash_Iterator quite a lot more than before.
This lead to a huge amount of alloc/free of Eina_Rbtree_Iterator that
was noticable in Enlightenment callgrind trace. This patch make it vanish
from the trace :-)
2016-04-22 10:58:25 -07:00
Cedric BAIL 41f68ac0d3 eina: make it possible to build the library alone. 2016-04-14 15:52:50 -07:00
Felipe Magno de Almeida 35dd5b5cab eina: Fix promise error with eina_promise_all
Fix value_set and error_set signatures which were receiving a
owner. They actually receive the promise and not the owner, this
caused wrong access to memory and were not visible by warnings because
the functions are casted.

This problem caused errors in which it seemed that promise had
actually error'ed when questioned it.
2016-04-13 14:44:19 -03:00
Felipe Magno de Almeida 62841aee3c eolian: Make promise eolian generation use macros for hooks
Modify the way hooks are defined and used by promise generation in
Eolian in the Eo API.

Instead of passing macro names as parameters to EO_FUNC_BODY macros,
just re-define the actual hooks when it is needed.
2016-04-11 01:28:50 -03:00
Carsten Haitzler 0e5fee0041 eina tmp get - support other tmp dir env vars and dont use xdg runtime
xdg runtime dir is NOT a tmp dir in the normal sense. it's not world
writable nor world readable. only for the user.  using
eina_environment_tmp_get() would imply that it is a regular tmp dir,
not a per-user private only runtime dir. that is something else
entirely.

@fix
2016-04-08 11:03:44 +09:00
Felipe Magno de Almeida dc954d8dba eolian: add Eolian support for Eina Promises
Add a promise object to allows Eolian interface to include promises
as a way to have asynchronous value return and composibility.

The usage is like this in a .eo file:

class Foo {
   methods {
      bar {
         params {
            @inout promise: Promise<int>;
         }
      }
   }
}

Which will create the following API interface:

void foo_bar(Eo* obj, Eina_Promise** promise);

and a Eina_Promise_Owner for the implementation, like this:

void _foo_bar(Eo* obj, Private_Data* pdata, Eina_Promise_Owner* promise);

Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
2016-04-06 14:34:15 -07:00
Felipe Magno de Almeida 09eea7bc01 eina: add promise
Add a promise object that will allows Eolian interface to include promises
as a way to have asynchronous value return and composibility.

To understand better, let see the coming usage in a .eo file:

class Foo {
   methods {
      bar {
         params {
            @inout promise: Promise<int>;
         }
      }
   }
}

Which will create the following API interface:

void foo_bar(Eo* obj, Eina_Promise** promise);

and the equivalent declaration for implementation.

However, the API function will instantiate the Promise for the user
and the implementer of the class automatically. So the user of this
function will treat it as a @out parameter, while the developer of the
function will treat it like a @inout parameter.

So, the user will use this function like this:

Eina_Promise* promise; // No need to instantiate
foo_bar(obj, &promise);
eina_promise_then(promise, callback);

Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
2016-04-05 11:35:12 -07:00
Boris Faure 214883f099 eina_file: move doc block about eina_file_path_join from inline to file.h 2016-03-19 15:57:46 +01:00
Oleksandr Shcherbina 48f75713e5 eina: fix eina vector in case output vector the same as target vector
Summary:
Use aditional temporary vector for intermedia results in case output vector
the same as target vector in functions:
eina_vector2_transform,
eina_vector2_homogeneous_direction_transform,
eina_vector3_cross_product,
eina_vector3_transform,
eina_vector3_homogeneous_direction_transform
It was in original version (in evas_vecN, module evas_3d_utils.h)
Enrich test suit for this case.

Reviewers: jpeg, cedric

Reviewed By: cedric

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

Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
2016-03-15 11:20:55 -07:00
Jean Guyomarc'h 20df2a5d60 eina: mix possibly misleading indentation 2016-03-12 22:57:21 +01:00
Jean Guyomarc'h 8034a96108 eina: remove un-necessary tests before freeing memory
free() is specified to do nothing at all when taking NULL as input.
2016-03-12 22:57:21 +01:00
Stefan Schmidt 96bb964dd5 Revert "eina: split Makefile with files/headers in preparation for additional per sub directory compilation"
This reverts commit 7f4ea1a79c.

This reverts one of three parts of the try to get sub directory
compilation back into eina. It breaks our distcheck though and I
talked to Cedric about it and he prefers to revert these as we might
need to go another route to bring this functionality back. Details
will come to the mailing list.
2016-03-08 00:18:08 +01:00
Stefan Schmidt bb0d161d8f Revert "eina: reintroduce additional support for eina sub directory compilation."
This reverts commit 1affc60d00.

This reverts one of three parts of the try to get sub directory
compilation back into eina. It breaks our distcheck though and I
talked to Cedric about it and he prefers to revert these as we might
need to go another route to bring this functionality back. Details
will come to the mailing list.
2016-03-08 00:18:08 +01:00
Stefan Schmidt c55625aec4 Revert "eina: rely on GNU make to find file at their correct location."
This reverts commit e26fcbb1dc.

This reverts one of three parts of the try to get sub directory
compilation back into eina. It breaks our distcheck though and I
talked to Cedric about it and he prefers to revert these as we might
need to go another route to bring this functionality back. Details
will come to the mailing list.
2016-03-08 00:18:08 +01:00
Felipe Magno de Almeida d723990955 eina: Add Eina_Iterator implementation for C-array
This iterator is convenient when you already have a C-Array and you
need to pass this array to a function receiving an Eina_Iterator.

int array[] = {1, 2, 3, 4};
int* array2[] = {&array[0], &array[1], &array[2], &array[3], NULL};

Eina_Iterator* iterator = eina_carray_iterator_new((void**)array);
2016-03-06 17:24:34 -03:00
Jean Guyomarc'h 793e4e0b5a eina: fix typos in doxygen 2016-03-06 12:35:13 +01:00
Cedric Bail e26fcbb1dc eina: rely on GNU make to find file at their correct location. 2016-03-03 21:10:00 -08:00
Cedric Bail 1affc60d00 eina: reintroduce additional support for eina sub directory compilation.
This is still experimental and quite hacky. Let me know if you face issue.
It should just work with make -C src/lib/eina normally...
2016-03-03 15:10:59 -08:00
Cedric Bail 7f4ea1a79c eina: split Makefile with files/headers in preparation for additional per sub directory compilation 2016-03-03 15:10:59 -08:00
Carsten Haitzler 7920e66f29 efl - fix threadqueue spinlock destruction on openbsd - doesn't like it
so the spinlock on the threadqueue block pool it taken on shutdownn,
while the block pool is freed up then its is destroyed, but openbsd
very much doesnt like this and returns an error, so release the lock
before destroying it.

@fix
2016-03-02 10:33:40 +09:00
Jean-Philippe Andre a4270b25a3 eina log: print formatted string when log domain is invalid
Before this patch, eina_log would simply record a non-formatted
entry like:
  unknown domain -1, original message format 'proxy=%p, obj=%p'

This was not very useful as even if the log domain is invalid, the
message itself might be relevant (often those are ERR logs).

Now the message format is roughly the same as the default format,
except that the line info comes from the original message (and
doesn't refer to eina_log.c).

Backtrace printing will happen at the same level as the original
log level, in order to avoid log pollution in case DBG logs are
printed with an invalid domain (and CRI would trigger bt).

I actually wonder if the logs shouldn't actually be forwarded
to the standard log callback instead of just stderr. This may
be useful for logging with dlog or journald (atm we will simply
lose all logs without a valid domain). This would mean eina_log
itself requires a log domain.
2016-02-17 16:12:35 +09:00
se.osadchy a1584c8a5d evas: Update eina_vector, add new function.
Summary: Add direction transform for eina_vector3.

Reviewers: cedric, Hermet, jpeg

Reviewed By: jpeg

Subscribers: jpeg

Differential Revision: https://phab.enlightenment.org/D3692
2016-02-17 16:12:35 +09:00
Jean-Philippe Andre 32fedb1e6d eina: eina_array_free() now silently ignores NULL
This is a follow-up patch after 56a4535ada.
Also, remove now invalid documentation.
2016-02-17 13:40:43 +09:00
Mike Blumenkrantz 56a4535ada eina: accept NULL in eina_array_free() without erroring
@fix
2016-02-13 11:26:03 -05:00
Mike Blumenkrantz 6a93062b25 eina: invalidate last add/del rects when the opposite operation occurs
applying this optimization to prevent the same rectangle from being added
or removed repeatedly in succession would result in the rejecting of successive
operations of the same type when the other operation occurred in between.

as an example:

add(0, 0, 100, 100)
del(0, 0, 100, 100)
add(0, 0, 100, 100)

should yield (0, 0, 100, 100), not zero rects and a failure to add the
second rect

this fixes a serious issue in enlightenment where stacking three windows
on top of each other with the first and third windows having the same geometry
would result in the top window receiving no input geometry (oops)

@fix
2016-02-05 14:35:28 -05:00
se.osadchy b216d15fe7 eina: add eina_vector3 as static inline.
Summary: Move evas_vec3 to eina_vector3 and add documentation.

Reviewers: stefan_schmidt, jpeg, cedric

Reviewed By: cedric

Subscribers: jpeg

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2016-02-05 08:07:45 +01:00
Vincent Torri cedeb0c455 Eina_Value: do not mix declarations and code
Reviewers: cedric, jpeg

Reviewed By: jpeg

Differential Revision: https://phab.enlightenment.org/D3624
2016-02-01 12:34:48 +01:00
Jean Guyomarc'h 40f162fbc5 eina: fix invalid prototype
The prototype means "unspecified arguments". However, the implementation
specifies no parameters (void).
GCC's warning -Wstrict-prototypes complains a lots about this old-style
prototype, spamming the console when compiling more than one compiling
units including Eina.

@fix
2016-01-29 10:16:31 +01:00
Jean-Philippe Andre e472f97d96 Eina: Fix eina_file_mk[ds]temp when a path is passed
If the template is a path, mkstemp and mkdtemp would fail
miserably as they would try to create a file inside
/run/user/1000//path/to/file.XXXXXX even if the path did not
exist.

This patch fixes that by creating temp files inside the sys temp
dir iif the templatename is just a basic name without path
separator.

@fix
2016-01-19 18:18:29 +09:00
Oleksandr Shcherbina 93df8720f9 eina: Fix possible wrong value due to null in determinant of matrix
Reviewers: cedric, Hermet

Subscribers: jpeg

Differential Revision: https://phab.enlightenment.org/D3563
2016-01-13 14:04:35 +01:00
Stefan Schmidt 117ccbd98c eina_inline_value: use void to force empty function parameters
We have to use void in a function declaration if we want no function
parameters. Using just empty parenthesis means the function takes an
unspecified number of parameters.
2016-01-11 22:55:34 +01:00
Cedric BAIL bb921aff04 emile: move all eina_str_base64 to emile_base64. 2016-01-07 16:27:57 -08:00
Jean-Philippe Andre d488926cb6 Eina: Move vector2 to eina_inline_vector.x
For consistency.

Also, include inside Eina.h
Thanks @vtorri for the remark.
2016-01-07 19:18:35 +09:00
Jean-Philippe Andre dd05e72ab0 Eina Vector2: Move EAPI to static inline
This removes lots of unnecessary symbols
2016-01-07 18:05:44 +09:00
Srivardhan Hebbar 9de3520c87 eina: Updated documentation of strbuf_substr_get.
Summary:
Fixes T2949.
In the bug, its been mentioned about updating the documentation, so added this.

Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>

Reviewers: cedric, jpeg

Reviewed By: jpeg

Maniphest Tasks: T2949

Differential Revision: https://phab.enlightenment.org/D3462
2016-01-07 15:37:30 +09:00
Stefan Schmidt 92bab5115a eina_value: correct the since tag for new symbols
Thiese symbols are only available since after 1.16, thus the since 1.17 tag.
2016-01-06 16:21:52 +01:00
Stefan Schmidt 30a98b7bcd eina_strbuf: add missing since tag to new symbols 2016-01-06 15:55:32 +01:00
Stefan Schmidt aba7512154 eina_bezier: correct since version for two new APIs.
These are only available from 1.17 and not already from 1.16.
2016-01-06 15:31:48 +01:00
Cedric BAIL 116fe3c65c ector: initial implementation of our own Ector GL backend. 2016-01-05 15:43:44 +09:00
Srivardhan Hebbar 7ded7cb707 eina: update .h file to make decodeurl api visible.
Summary: Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>

Reviewers: jpeg, cedric

Reviewed By: cedric

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2016-01-04 15:42:59 -08:00
Cedric BAIL 5aa6a73b34 eina: return NULL iterator in all case, not only when safety check is turned on. 2016-01-04 15:13:06 -08:00
se.osadchy 2127547cb9 evas: create Eina_Vector2 structure and add functions.
Summary: Only copy code from evas_3d_utils, rename evas to eina and add documentation.

Reviewers: Hermet, raster, jpeg, cedric

Reviewed By: jpeg, cedric

Subscribers: jpeg

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2016-01-04 15:06:00 -08:00
Vincent Torri 47ed848a87 Evil: integrate the dlfcn code into Evil
This will remove some incompatibilities with other packages,
especially for win-builds
2015-12-29 22:13:58 +09:00
Jean-Philippe Andre cda8ccf770 Eina: Fix potential crash in eina_convert_dtoa
Infinity and NaN should probably just not be converted.

An error would happen in make check while saving evas 3d models.
2015-12-29 16:18:53 +09:00
Srivardhan Hebbar 1243b24f9b eina: API for base64url decode.
Summary:
eina_base64url_decode API.

Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>

Reviewers: jpeg, cedric

Differential Revision: https://phab.enlightenment.org/D3434
2015-12-16 16:15:44 +09:00
Jean-Philippe Andre 7fd907a132 Eina safety: Set error flag in case of safety check error
Eina_Error is almost not used at all. Meh.
2015-12-15 17:43:39 +09:00
Jean-Philippe Andre 5ad9654fbc Eina safety: Add internal function to log errors
The main reason is convenience for debugging when using GDB,
this will give a simple breakpoint for all safety check failures.

Also, this creates a more visible log domain (red).
2015-12-15 17:32:50 +09:00
Jean-Philippe Andre 1f75cfc3cf Eina log: Disable backtrace by default for dev builds
The EINA_LOG_BACKTRACE thing is aimed at production environments,
so we can extract a backtrace from a log file post-mortem, but not
for continuous development of EFL itself.

I know this should make a few people happy.
2015-12-15 16:01:51 +09:00
Jean-Philippe Andre 6bc24b4794 Eina log: Fix meaning of EINA_LOG_BACKTRACE env
Most eina log env vars mean "if loglevel <= val then print log"
but eina_log_backtrace was "if loglevel < val" which I thought
was a bit confusing. The default behaviour is unchanged.
2015-12-15 15:25:55 +09:00