Commit Graph

14 Commits

Author SHA1 Message Date
Felipe Magno de Almeida aec4e4c2cd eet: Rename EAPI macro to EET_API in Eet library
Patch from a series of patches to rename EAPI symbols to specific
library DSOs.

EAPI was designed to be able to pass
```__attribute__ ((visibility ("default")))``` for symbols with
GCC, which would mean that even if -fvisibility=hidden was used
when compiling the library, the needed symbols would get exported.

MSVC __almost__ works like GCC (or mingw) in which you can
declare everything as export and it will just work (slower, but
it will work). But there's a caveat: global variables will not
work the same way for MSVC, but works for mingw and GCC.

For global variables (as opposed to functions), MSVC requires
correct DSO visibility for MSVC: instead of declaring a symbol as
export for everything, you need to declare it as import when
importing from another DSO and export when defining it locally.

With current EAPI definitions, we get the following example
working in mingw and MSVC (observe it doesn't define any global
variables as exported symbols).

Example 1:
dll1:
```
EAPI void foo(void);

EAPI void bar()
{
  foo();
}
```
dll2:
```
EAPI void foo()
{
  printf ("foo\n");
}
```

This works fine with API defined as __declspec(dllexport) in both
cases and for gcc defining as
```__atttribute__((visibility("default")))```.

However, the following:
Example 2:

dll1:

```
EAPI extern int foo;
EAPI void foobar(void);

EAPI void bar()
{
  foo = 5;
  foobar();
}
```

dll2:

```
EAPI int foo = 0;
EAPI void foobar()
{
  printf ("foo %d\n", foo);
}
```

This will work on mingw but will not work for MSVC. And that's why
EAPI is the only solution that worked for MSVC.

Co-authored-by: João Paulo Taylor Ienczak Zanette <jpaulotiz@gmail.com>
Co-authored-by: Ricardo Campos <ricardo.campos@expertise.dev>
Co-authored-by: Lucas Cavalcante de Sousa <lucks.sousa@gmail.com>
2020-12-14 13:22:33 -03:00
Carsten Haitzler 61be4f02bf eet dict+ data read - move rw lock to ourside decode for speed read
on read/decode we can avoid lots of little locks and unlocked by
having the rwlock go to the outside and a single lock+unlock (read) on
the dictionary. it blocks for longer by has less atomics/fence points
as a result and thus decodes faster where changes that we are writing
while decoding is insanely low so no point worrying here.
2019-08-11 12:47:31 +01:00
Jaehyun Cho 94be8a88d3 eet_dictionary: remove dead code
If index value is not -1, then eet_dictionary_string_add() returns.
Therefore, it does not need to check the index value after that.

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D7922
2019-02-13 16:37:10 -08:00
Carsten Haitzler e68a952b8c eet - dictorinary - tidy up code to be easier to read
more compact so less scrolling - easier to read.
2018-11-21 13:37:16 +00:00
Carsten Haitzler 61109729fa eet dict - remove redundant check of len, str and possibly strcmp
aim for small speedups.
2018-11-21 13:37:16 +00:00
Carsten Haitzler c0d6cbab97 eet - dictionary - use rwlocks instead of spinlocks - better contention
if the dict is contended on by lots of threads then a spinlock really
makes it slow. a rwlock gets about 1.5-2x speedup depending on
arch/thread count.

@optimize
2018-11-21 13:37:16 +00:00
Stefan Schmidt a65c531429 eet_dictionary: Remove now unused variable
Since 123bdc4342 found is now longer used here.
Remove it.
2014-08-27 16:40:16 +02:00
Carsten Haitzler 123bdc4342 eet dictionary - remove impossible code
CID 1039464 knows full well our comments there are right - so remove
pointless code
2014-08-27 12:12:40 +09:00
Vorobiov Vitalii c3bee34c3c eet: Stopped SPANKing the naughty programmer while deleting dictionary.
Function edje_edit_save_all cause lots of SPANK SPANK, because
eet_dictionary_free is trying to delete string that is actually not a stringshare.

Reviewers: cedric, seoz, raster

Reviewed By: cedric

CC: reutskiy.v.v, cedric

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

Signed-off-by: Cedric Bail <cedric.bail@samsung.com>
2013-11-07 17:58:47 +09:00
Cedric Bail b9d8a7af3a eet: use Eina_Spinlock instead of Eina_Lock for Eet_Dictionary. 2013-10-11 11:08:17 +09:00
Cedric BAIL 5465eb3acc eet: remove use of prev to reduce memory usage (30KB on 32bits system). 2013-04-05 12:14:50 +09:00
Cedric BAIL f001cfac38 eet: do the correct math for allocation. 2013-04-05 11:50:54 +09:00
Cedric BAIL fa20ab7269 eet: another big boolean removed.
By merging all boolean in their own array I avoid loosing 2.9 bytes on
32bits and 6.9 bytes on 64bits system.
2013-04-04 12:01:07 +09:00
Vincent Torri 8abaff3bdf merge: add eet
SVN revision: 76768
2012-09-17 16:35:38 +00:00