Commit Graph

232 Commits

Author SHA1 Message Date
Carsten Haitzler 39240fa3e7 Revert "evas_textblock: content fit feature"
This reverts commit 2f676a6591.

This causes segv's in edje_cc - i suspect the eet changes (or in combo
to how they are used in edje):

AddressSanitizer:DEADLYSIGNAL
=================================================================
==8991==ERROR: AddressSanitizer: SEGV on unknown address 0x000001010000 (pc 0xffff9f002604 bp 0xfffffa747700 sp 0xfffffa747700 T0)
==8991==The signal is caused by a READ memory access.
    #0 0xffff9f002600 in _eet_hash_gen ../src/lib/eet/eet_utils.c:25
    #1 0xffff9efdd024 in eet_dictionary_string_add ../src/lib/eet/eet_dictionary.c:103
    #2 0xffff9efbe324 in eet_data_put_string ../src/lib/eet/eet_data.c:849
    #3 0xffff9efc1c4c in eet_data_put_type ../src/lib/eet/eet_data.c:1427
    #4 0xffff9efd9128 in eet_data_put_unknown ../src/lib/eet/eet_data.c:4730
    #5 0xffff9efdb320 in _eet_data_descriptor_encode ../src/lib/eet/eet_data.c:5108
    #6 0xffff9efd5958 in eet_data_put_variant ../src/lib/eet/eet_data.c:4309
    #7 0xffff9efdb320 in _eet_data_descriptor_encode ../src/lib/eet/eet_data.c:5108
    #8 0xffff9efd9270 in eet_data_put_unknown ../src/lib/eet/eet_data.c:4739
    #9 0xffff9efdb320 in _eet_data_descriptor_encode ../src/lib/eet/eet_data.c:5108
    #10 0xffff9efd8ca0 in eet_data_put_array ../src/lib/eet/eet_data.c:4692
    #11 0xffff9efdb320 in _eet_data_descriptor_encode ../src/lib/eet/eet_data.c:5108
    #12 0xffff9efc7768 in eet_data_write_cipher ../src/lib/eet/eet_data.c:2403
    #13 0xffff9efc78a4 in eet_data_write ../src/lib/eet/eet_data.c:2420
    #14 0xaaaabb151dcc in data_thread_group ../src/bin/edje/edje_cc_out.c:2045
    #15 0xaaaabb152130 in data_write_groups ../src/bin/edje/edje_cc_out.c:2086
    #16 0xaaaabb157734 in data_write ../src/bin/edje/edje_cc_out.c:2866
    #17 0xaaaabb14122c in main ../src/bin/edje/edje_cc.c:456
    #18 0xffff9dbd92a0 in __libc_start_main (/usr/lib/aarch64-linux-gnu/libc.so.6+0x242a0)
    #19 0xaaaabb13ea00  (/home/raster/C/git/efl/build/src/bin/edje/edje_cc+0x38a00)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV ../src/lib/eet/eet_utils.c:25 in _eet_hash_gen
==8991==ABORTING
Aborted (core dumped)

When compiling breaks... it's certainly time to revert ASAP :(
2019-11-07 10:23:58 +00:00
Ali Alzyod 2f676a6591 evas_textblock: content fit feature
Summary:
**Content Fit Feature for Evas_Object_Textblock**

This Feature is available at **Evas **object level.  And **Edje **level (where it is internally use evas functionality)
This feature will allow text block to fit its content font size to proper size to fit its area.

**Main Properties:**
Fit Modes        :   None=Default, Width, Height, All [Width+Height]
Fit Size Range :   Contains maximum and minimum font size to be used (and in between).
Fit Step Size    :   Step(Jump) value when trying fonts sizes between Size_Range max and min.
Fit Size Array   :   Other way to resize font, where you explicitly select font sizes to be uses    (for example [20, 50, 100] it will try 3 sizes only)

Text Fit feature was available in Edje but:
1- It doesn't effected by ellipsis or warping in font style (or do not handle the in right way)
2- Accuracy is not good (specially if you have fix pixel size elements (spaces,tabs,items))
3- No (Step size, Size Array) available.

Test Plan:
To check the Feature
> elementary_test
> fit
> textbock fit
You can modify all the modes and properties

These are two examples, One using Evas other uses Edje

**Evas**

```
#include <Elementary.h>

enum BUTTON{
   BUTTON_MODE             = 0,
   BUTTON_MAX              = 1,
   BUTTON_MIN              = 2,
   BUTTON_STEP             = 3,
   BUTTON_ARRAY            = 4,
   BUTTON_CONTENT          = 5,
   BUTTON_STYLE            = 6,
   BUTTON_ALL              = BUTTON_STYLE+1,
};

char* BUTTON_STR[BUTTON_ALL] ={
   "MODE",
   "MAX",
   "MIN",
   "STEP",
   "ARRAY",
   "CONTENT",
   "STYLE",
};

char *contents[] = {
   "Hello World",
   "This is Line<br>THis is other Line",
   "This text contains <font_size=20 color=#F00>SPECIFIC SIZE</font_size> that does not effected by fit mode"
   };

char *styles[] = {
   "DEFAULT='font=sans font_size=30 color=#000 wrap=mixed ellipsis=1.0'",
   "DEFAULT='font=sans font_size=30 color=#000 wrap=mixed'",
   "DEFAULT='font=sans font_size=30 color=#000 ellipsis=1.0'",
   "DEFAULT='font=sans font_size=30 color=#000'",
   };

char *styles_names[] = {
   "wrap=<color=#F00>mixed</color> ellipsis=<color=#F00>1.0</color>",
   "wrap=<color=#F00>mixed</color> ellipsis=<color=#F00>NONE</color>",
   "wrap=<color=#F00>NONE</color> ellipsis=<color=#F00>1.0</color>",
   "wrap=<color=#F00>NONE</color> ellipsis=<color=#F00>NONE</color>",
   };

typedef struct _APP
{
   Evas_Object *win, *box, *txtblock,*bg, *boxHor, *boxHor2;
   Eo *btn[BUTTON_ALL];
   Eo *lbl_status;
   char * str;
   unsigned int i_contnet, i_style;
} APP;
APP *app;

char * get_fit_status(Eo * textblock);

static void _btn_clicked(void *data EINA_UNUSED, Eo *obj, void *eventInfo EINA_UNUSED){
   if (obj == app->btn[BUTTON_MODE])
     {
        unsigned int options;
        evas_textblock_fit_options_get(app->txtblock, &options);
        if (options == TEXTBLOCK_FIT_MODE_NONE)
           evas_textblock_fit_options_set(app->txtblock, TEXTBLOCK_FIT_MODE_HEIGHT);
        else if (options == TEXTBLOCK_FIT_MODE_HEIGHT)
           evas_textblock_fit_options_set(app->txtblock, TEXTBLOCK_FIT_MODE_WIDTH);
        else if (options == TEXTBLOCK_FIT_MODE_WIDTH)
           evas_textblock_fit_options_set(app->txtblock, TEXTBLOCK_FIT_MODE_ALL);
        else if (options == TEXTBLOCK_FIT_MODE_ALL)
           evas_textblock_fit_options_set(app->txtblock, TEXTBLOCK_FIT_MODE_NONE);
     }
   else if (obj == app->btn[BUTTON_MAX])
     {
        unsigned int min, max;
        evas_textblock_fit_size_range_get(app->txtblock, &min, &max);
        max -= 5;
        evas_textblock_fit_size_range_set(app->txtblock, min, max);
     }
   else if (obj == app->btn[BUTTON_MIN])
     {
        unsigned int min, max;
        evas_textblock_fit_size_range_get(app->txtblock, &min, &max);
        min += 5;
        evas_textblock_fit_size_range_set(app->txtblock, min, max);
     }
   else if (obj == app->btn[BUTTON_STEP])
     {
        unsigned int step;
        evas_textblock_fit_step_size_get(app->txtblock, &step);
        step++;
        evas_textblock_fit_step_size_set(app->txtblock, step);
     }
   else if (obj == app->btn[BUTTON_ARRAY])
     {
        unsigned int font_size[] = {10, 50, 100 ,150};
        evas_textblock_fit_size_array_set(app->txtblock,font_size,4);
     }
   else if (obj == app->btn[BUTTON_CONTENT])
     {
        app->i_contnet++;
        if(app->i_contnet>=sizeof(contents)/sizeof(char*))
           app->i_contnet=0;
        evas_object_textblock_text_markup_set(app->txtblock,contents[app->i_contnet]);
     }
   else if (obj == app->btn[BUTTON_STYLE])
     {
        app->i_style++;
        if(app->i_style>=sizeof(styles)/sizeof(char*))
           app->i_style=0;

        Evas_Textblock_Style *style = evas_object_textblock_style_get(app->txtblock);
        evas_textblock_style_set(style,styles[app->i_style]);
     }

   elm_object_text_set(app->lbl_status, get_fit_status(app->txtblock));
}

char * get_fit_status(Eo * textblock)
{
   static char status[0xFFF];
   unsigned int options,min,max,step,size_array[256];
   size_t size_array_len;
   evas_textblock_fit_options_get(textblock,&options);
   evas_textblock_fit_size_range_get(textblock,&min,&max);
   evas_textblock_fit_step_size_get(textblock,&step);
   evas_textblock_fit_size_array_get(textblock,NULL,&size_array_len,0);
   if (size_array_len>255)
      size_array_len = 255;
   evas_textblock_fit_size_array_get(textblock,size_array,NULL,size_array_len);

   strcpy(status,"Mode : ");
   if (options == TEXTBLOCK_FIT_MODE_NONE)
      strcat(status,"MODE_NONE");
   else if (options == TEXTBLOCK_FIT_MODE_HEIGHT)
      strcat(status,"MODE_HEIGHT");
   else if (options == TEXTBLOCK_FIT_MODE_WIDTH)
      strcat(status,"MODE_WIDTH");
   else if (options == TEXTBLOCK_FIT_MODE_ALL)
      strcat(status,"MODE_ALL");

   strcat(status,"<br>");
   sprintf(status + strlen(status),"Max   : %d<br>",max);
   sprintf(status + strlen(status),"Min   : %d<br>",min);
   sprintf(status + strlen(status),"Step  : %d<br>",step);
   sprintf(status + strlen(status),"Array  : [ ");
   for (size_t i = 0 ; i < 10 ; i++)
     {
        if(i<size_array_len)
           sprintf(status + strlen(status)," %d,",size_array[i]);
     }

   if(10<size_array_len)
      sprintf(status + strlen(status)," ... ");
   sprintf(status + strlen(status)," ]");

   sprintf(status + strlen(status),"<br>");
   sprintf(status + strlen(status),"%s",styles_names[app->i_style]);

   return status;
}

int elm_main(int argc, char **argv)
{
  app = calloc(sizeof(APP), 1);

   elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);

   app->win = elm_win_util_standard_add("Main", "App");
   elm_win_autodel_set(app->win, EINA_TRUE);

   app->box = elm_box_add(app->win);
   app->boxHor = elm_box_add(app->box);
   app->boxHor2 = elm_box_add(app->box);
   app->txtblock = evas_object_textblock_add(app->box);
   app->bg = elm_bg_add(app->box);
   elm_bg_color_set(app->bg,255,255,255);

   Evas_Textblock_Style *style = evas_textblock_style_new();
   evas_textblock_style_set(style,styles[0]);
   evas_object_textblock_style_set(app->txtblock,style);
   evas_object_textblock_text_markup_set(app->txtblock,contents[0]);

   elm_box_horizontal_set(app->boxHor, EINA_TRUE);
   elm_box_horizontal_set(app->boxHor2, EINA_TRUE);

   evas_object_size_hint_weight_set(app->box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
   evas_object_size_hint_align_set(app->box, EVAS_HINT_FILL, EVAS_HINT_FILL);

   evas_object_size_hint_weight_set(app->box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
   evas_object_size_hint_align_set(app->box, EVAS_HINT_FILL, EVAS_HINT_FILL);

   evas_object_show(app->txtblock);
   evas_object_show(app->bg);
   evas_object_show(app->box);
   evas_object_show(app->boxHor);
   evas_object_show(app->boxHor2);

   elm_box_pack_end(app->box, app->bg);
   elm_box_pack_end(app->box, app->boxHor);
   elm_box_pack_end(app->box, app->boxHor2);

   elm_object_content_set(app->bg,app->txtblock);

   elm_win_resize_object_add(app->win, app->box);
   evas_object_resize(app->win, 320, 480);

   for(int i = 0 ; i < BUTTON_ALL ; i++)
     {
        app->btn[i] = elm_button_add(app->boxHor);
        evas_object_smart_callback_add(app->btn[i], "clicked", _btn_clicked, NULL);
        elm_object_text_set(app->btn[i], BUTTON_STR[i]);
        elm_box_pack_end(app->boxHor, app->btn[i]);
        evas_object_show(app->btn[i]);
     }

   app->lbl_status = elm_label_add(app->boxHor2);
   elm_object_text_set(app->lbl_status, get_fit_status(app->txtblock));
   elm_box_pack_end(app->boxHor2, app->lbl_status);
   evas_object_show(app->lbl_status);

   evas_object_size_hint_weight_set(app->txtblock, EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);
   evas_object_size_hint_align_set(app->txtblock, EVAS_HINT_FILL, EVAS_HINT_FILL);

   evas_object_size_hint_weight_set(app->bg, EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);
   evas_object_size_hint_align_set(app->bg, EVAS_HINT_FILL, EVAS_HINT_FILL);

   evas_object_show(app->win);
   elm_run();
   return 0;
}

ELM_MAIN()
```

**Edje**

```
// compile: edje_cc source.edc
// run: edje_player source.edje
collections {
   styles
   {
      style
      {
         name: "text_style";
         base: "font=sans font_size=30 color=#FFF wrap=mixed ellipsis=1.0";
         tag: "br" "\n";
         tag: "ps" "ps";
         tag: "tab" "\t";
         tag: "b" "+ font_weight=Bold";
      }
   }
   group {
      name: "my_group"; // must be the same as in source.c
      parts {

         part
         {
            name: "background";
            type: RECT;
            scale: 1;
            description
            {
               color: 0 0 0 0;
               rel1.relative: 0.0 0.0;
               rel2.relative: 1.0 1.0;
            }
         }

         part
         {
            name: "text";
            type: TEXTBLOCK;
            scale: 1;
            entry_mode: NONE;
            effect: OUTLINE_SHADOW;
            description
            {
               state: "default" 0.0;
               rel1.to : "background";
               rel1.relative: 0.0 0.0;
               rel2.to : "background";
               rel2.relative: 1.0 1.0;
               text
               {
                  style: "text_style";
                  align: 0.0 0.0;
                  text: "Hello World This is Me";
                  fit: 1 1;
                  fit_step: 1;
                  size_range: 30 200;
                  //fit_size_array: 20 40 60 80 100 200;
               }
            }
         }
      }
   }
}
```

Found Task T5724 relative to this Feature

Reviewers: woohyun, bowonryu, cedric, raster

Subscribers: #committers, #reviewers, cedric

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9280
2019-11-05 20:40:59 +09:00
Carsten Haitzler 4192137ba9 eet - fix loading eet files that do not have dicts
my performance fix for locking around the eet dict breaks if there is
no dict in the eet file. this causes a segv.

fixes T8368

@fix
2019-10-14 12:16:03 +01:00
Vincent Torri 01b987df59 make mman.h private
Summary:
integrate mman.h to make Evil private to the EFL, as mman.h does not exist on Windows. After a discussion with raster, i include sys/mman.h only on non Windows platform.

One issue, though, is that src/modules/emotion/generic/Emotion_Generic_Plugin.h has inlined functions using mmap()

Test Plan: compilation on Windows

Reviewers: cedric, raster, zmike

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9542
2019-08-19 09:55:13 -04: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
Vincent Torri 40e2f9ba8e Eet: remove useless inclusion of Evil.h
Test Plan: compilation

Reviewers: raster, zmike, cedric

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8909
2019-05-17 11:53:35 +01:00
Xavi Artigas 68c530080b docs: Fix common misspellings in H files
Fixed all appearances of words from this list in H files:
https://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines
2019-04-02 13:28:48 +02: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
Vincent Torri f7c560c311 replace hton and ntoh family functions with ones defined in eina
Summary: This fixes especially the execution of edje_cc on Windows

Test Plan: execution of edje_cc

Reviewers: cedric, raster

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7834
2019-02-01 14:25:35 +00:00
Xavi Artigas c55299ca51 docs: Fix assorted typos in legacy documentation
Samsung reported a long list of typos in our legacy docs, this fixes them.
2019-01-28 13:14:20 +01:00
Carsten Haitzler 9a0552f86b eet - fix eet compression to differentiate lx4 and lz4hc
so edje uses -fastcomp and -fastdecomp for lz4 and lz4hc .. before.
but the emile conversion nuked this difference and uses lz4hc no
matter what (EET_COMPRESSION_SUPERFAST vs EET_COMPRESSION_VERYFAST).
lz4hc is actuallly massively slower than lz4. this fixes -fastcomp to
be fast again... i tested a theme compile and it went from down from
81sec to 10sec.
2019-01-24 14:04:07 +00:00
Marcel Hollerbach e43f090265 cmake: remove!
This build was never complete and also was not maintained probebly.

It is also dropped in favour of meson which is cool, merged, works & is fast.

Differential Revision: https://phab.enlightenment.org/D7010
2018-12-20 20:07:26 +01: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
Derek Foreman dd206b4897 eet: Remove unused code
This stuff has been unused for years, so instead of fixing it up, remove
it.

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

Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
2018-11-16 12:16:07 -06:00
Derek Foreman 2464cf6648 eet: Remove pointer deduplication
After my previous changes, the only thing left that's adding duplicate
pointers should be string allocations, either direct (which have no free)
or stringshare which need to be "freed" for each duplicate as it's a
refcounting mechanism.

This speeds up parsing the theme file modestly (10ms faster launching
elementary_test for me), and should also prevent leaking every
stringshare that's on the freelist if an eet load fails.

I would not be at all surprised if there are still bugs in the fail path,
but I hope this at least mitigates failure tracking's impact on successful
parse times.

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

Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
2018-11-16 12:16:07 -06:00
Derek Foreman a9f1b588b1 eet: Demystify some typecasts
Simplify some confusing typecasts.  There may be more around.

No functional change.

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

Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
2018-11-16 12:16:07 -06:00
Derek Foreman 1e498286d9 eet: Stop freeing allocated memory in descriptor_decode
There are other paths that free this memory, so it ends up freed by the
EET_G_UNKNOWN_NESTED path, yet remains on the list.

It makes more sense to have all the callers deal with this memory.

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

Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
2018-11-16 12:16:07 -06:00
Derek Foreman 5889307f4c eet: Don't add duplicate hashes to eet freelist
The eet freelist code de-duplicates pointers, so passing duplicates is
just fine, however it does waste time doing the de-dup.

We know when we have a duplicate anyway, so save the time.

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

Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
2018-11-16 12:16:07 -06:00
Derek Foreman cd44bdeac6 eet: Don't add duplicate lists to eet freelist
The eet freelist code de-duplicates pointers, so passing duplicates is
just fine, however it does waste time doing the de-dup.

We know when we have a duplicate anyway, so save the time.

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

Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
2018-11-16 12:16:07 -06:00
Carsten Haitzler 03a919d6e0 eet data - if xwarning about possibly uninit var 2018-11-09 11:43:59 +00:00
Marcel Hollerbach 46d464e5bf here comes meson
a new shiny buildtool that currently completes in the total of ~ 4 min..
1 min. conf time
2:30 min. build time
Where autotools takes:
1:50 min. conf time
3:40 min. build time.

meson was taken because it went quite good for enlightenment, and is a traction gaining system that is also used by other mayor projects. Additionally, the DSL that is defined my meson makes the configuration of the builds a lot easier to read.

Further informations can be gathered from the README.meson

Right now, bindings & windows support are missing.

It is highly recommented to use meson 0.48 due to optimizations in meson
that reduced the time the meson call would need.

Co-authored-by: Mike Blumenkrantz <zmike@samsung.com>

Differential Revision: https://phab.enlightenment.org/D7012
Depends on D7011
2018-10-02 17:22:50 +02:00
Myoungwoon Roy, Kim e06a9b6acf docs: Fix typos and some wrong expressions in API reference doc.
Summary: I had fixed some typos and some wrong expressions in API reference doc

Test Plan: N/A

Reviewers: raster, zmike, Hermet, segfaultxavi

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6943
2018-08-30 14:01:21 +09:00
Mike Blumenkrantz 8f7170bfad eet: set parent struct member when adding a child to a parent node
Summary:
this relation can be retrieved with eet_node_parent_get() but is never
set internally

fix T4600

@fix

Reviewers: artem.popov, devilhorns, Hermet, vtorri

Reviewed By: Hermet

Subscribers: Hermet, cedric, #committers

Tags: #efl

Maniphest Tasks: T4600

Differential Revision: https://phab.enlightenment.org/D6336
2018-06-29 11:36:13 -04:00
Mike Blumenkrantz 25e6b218db eet: handle decode failures as errors in variant decoding
Summary:
all other null returns of _eet_data_descriptor_decode() are treated as
fatal errors when decoding, and failure to do so in this case guarantees
errors later due to incomplete decoding

@fix

ref T5379
Depends on D6293

Reviewers: devilhorns, ManMower

Reviewed By: ManMower

Subscribers: cedric, #committers

Tags: #efl

Maniphest Tasks: T5379

Differential Revision: https://phab.enlightenment.org/D6294
2018-06-15 16:34:39 -04:00
Mike Blumenkrantz 4631d4ce7e eet: print errors any time an error occurs while decoding
Summary:
catching these errors was super annoying since the codebase is mostly
comprised of goto statements, so this should make future debugging easier
Depends on D6292

Reviewers: devilhorns, ManMower

Reviewed By: ManMower

Subscribers: cedric, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6293
2018-06-15 16:34:32 -04:00
Mike Blumenkrantz c74d964afa eet: add #if 0 around macro which will cause compile errors if used
Summary:
this macro wraps a function which is also inside an #if 0 block,
so it's best not to leave it where someone might try to use it

no functional changes

Reviewers: devilhorns, ManMower

Reviewed By: ManMower

Subscribers: cedric, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6292
2018-06-15 16:34:00 -04:00
Carsten Haitzler e46a2f95a8 eet - check for null edd's and don't decode junk data
in the process of fixing a bug in elm config i found the eet will
decode junk data with a null edd. check for these where it was missing
and return null so it's easier to see a problem. not really a fix as
it's invalid use of the api, but it's nicer to debug...
2018-05-27 17:10:19 +09:00
Mike Blumenkrantz a1f649fa9d eet: add counter for number of frees needed in each directory
Summary:
further optimize the eet_shutdown case of closing files and avoid
endlessly looping over empty nodes
Depends on D5950

Reviewers: cedric

Reviewed By: cedric

Differential Revision: https://phab.enlightenment.org/D5951
2018-04-25 12:00:11 -04:00
Mike Blumenkrantz e917be8831 eet: simplify shutdown file closing
no need to free mempool memory when the mempool is about to be freed,
and eet_clearcache duplicates existing shutdown functionality

Differential Revision: https://phab.enlightenment.org/D5950
2018-04-25 12:00:11 -04:00
Mike Blumenkrantz 977b2731ee eet: add doc note for EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY_STRING 2018-02-28 16:02:39 -05:00
Vincent Torri f5b01ac5ce all: Simplify definition of EAPI
This will help in the transition from Autotools to Meson. This has been
tested on Windows for which EFL_XXX_BUILD were first introduced.
2018-01-18 18:04:03 +09:00
Ross Vandegrift 71e5c74eb6 efl: drop deprecated Encoding key from desktop files
Summary:
The Encoding key is no longer required, all desktop files are assumed to
be UTF-8 encoded.  See details at:
https://standards.freedesktop.org/desktop-entry-spec/1.1/apc.html

Fix various typos and misspellings

lintian, Debian's package checker, uses strings to check for common typos
in compiled binaries.  This change fixes the ones it identified in 1.20.6.

Reviewers: cedric

Reviewed By: cedric

Subscribers: cedric, jpeg

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-12-13 10:27:48 -08:00
Pawel Aksiutowicz 599a36b8ee eet: removed warning from eet_image
Reviewers: stanluk, lukasz.stanislawski

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5505
2017-11-21 11:12:56 +09:00
JinYong Park a1935164fe Eet: fix wrong doxygen definition
Summary:
Eet_Image_Encoding and Eet_Colorclass is from enumeration in Emile,
but it's definition is typedef, not enum.

It makes broken link like below webpage.
https://docs.enlightenment.org/efl/current/group__Eet__File__Image__Group.html

In above page, Eet_Image_Encoding is not linked.

So doxygen documentation should be changed to typedef.

Reviewers: cedric, jpeg, myoungwoon, conr2d

Differential Revision: https://phab.enlightenment.org/D5411
2017-11-01 13:08:58 +09:00
Wonki Kim e784afbd88 eet: Add missing documentation information
Summary:
There is a missing comment for Eet_Colorclass.
This patch append a piece of information.

Reviewers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5377
2017-10-26 12:17:39 +09:00
Bowon Ryu 3489f5ec36 eet: add missing documentation.
Summary: This adds missing doxgen documentation for eet.

Test Plan: API Doxygen Revision

Reviewers: cedric, jpeg, myoungwoon

Differential Revision: https://phab.enlightenment.org/D5344
2017-10-23 13:40:27 +09:00
Subodh Kumar e5a588b0bf eet: wrong comparision to less than zero with unsigned integer.
Summary:
Unsigned interger should not be compared to less than zero.
@fix

Test Plan: Na

Reviewers: cedric

Subscribers: jpeg

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-10-06 09:51:19 -07:00
Vincent Torri 0cdd501246 EFL For WIN32: Replace HAVE_EVIL define with _WIN32 2017-09-22 05:06:10 -05:00
Cedric BAIL 13482ef965 eet: silence properly reused code through switch case statement fallthrough. 2017-06-05 12:07:57 -07:00
Cedric BAIL fed9ca47f2 eet: use new API eina_file_close_on_exec. 2017-04-18 16:54:44 -07:00
Ivan Furs f7c1ac94f7 eet_lib: changed unlink to eina_file_unlink
Summary: changed unlink to eina_file_unlink

Reviewers: cedric, raster, an.kroitor, rimmed, FurryMyad, NikaWhite, vtorri

Subscribers: artem.popov, cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4698
2017-03-06 18:02:11 +09:00
Myoungwoon Roy, Kim 7760613107 doxygen: fix typos and some wrong expressions in Edje and Eet API reference documentation.
Summary: I had fixed some typos and some wrong expressions, such as capital letters, singular, and orders of groups in Edje and Eet API reference doxygen.

Test Plan: Doxygen Revision

Reviewers: stefan, cedric, raster, Jaehyun_Cho, jpeg

Subscribers: conr2d

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-02-16 10:16:52 -08:00
Carsten Haitzler f6638432d3 eet data - fix checking return value of eina_value_pset like elsewhere
eina_value_pset() return is checked pretty much everywhere except
here. this addresses that inconsistency. this fixes CID 1367487
2017-02-08 21:19:39 +09:00
Jiwon Kim 9fa4a5fb6d eet: read sould be failed if cipher_key exist but file not ciphered
Summary:
Currentely, if eet_read_cipher()'s cipher_key param is exist but file
not ciphered, function always read and return successful result.
But, this behavior can not check data integrity.

e.g.
1. App create config file using eet with encryption key.
2. Attacker replace config to malicious config (not encryted).
3. App can not notice if eet_read_cipher() read that successfully.

@fix

Test Plan:
$eet -e test.cfg my_config test.src 1
$eet -d test.cfg my_config decode_res.txt my_encrytion_key

(Currentely decode success, but should be failed)

Reviewers: woohyun, raster

Subscribers: id213sin, akanad, cedric, jpeg

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-02-07 15:14:54 -08:00
Gustavo Sverzut Barbieri 364c5c4cd8 cmake: handle 'FindXXX.cmake' standard with 'find-XXX' libraries.
One can use virtual 'find-XXX' entries in LIBRARIES or
PUBLIC_LIBRARIES to use XXX_LIBRARIES and XXX_INCLUDE_DIR.
2017-02-01 12:25:43 -02:00
Stefan Schmidt 592f356fe5 cmake: remove dependency on libjpeg in eet as it is handled in common 2017-02-01 14:23:05 +01:00
Gustavo Sverzut Barbieri 525d1e0629 cmake: add EFL_SUPPORT_LIB() and simplify/speedup its usage.
generate a static library for src/static_libs and use that as
LIBRARIES for the actual library, for those such as rg_etc that are
used multiple times will even speed up the final build by compiling
only once.

Although not used, they can be made into shared libraries that would
go inside /usr/lib/efl/support/v-1.19/libname.so
2017-01-27 12:52:14 -02:00
Gustavo Sverzut Barbieri 180d8f7db6 cmake: add eet. 2017-01-26 14:23:24 -02:00