Commit Graph

553 Commits

Author SHA1 Message Date
Carsten Haitzler c1ad0879a1 meson - add checks/options for mmx, sse3, neon, altivec
so we can build our assembly fast-paths again.... - also clean up the
code a bit to match...
2018-11-09 11:43:59 +00:00
Shinwoo Kim f802c8f482 evas_image_main: make the cache->usage count eina_file size
Summary:
The image.data is set to null by evas_common_rgba_image_unload_real.
After this point the cache->usage does not count cache_entry.w and h value when
evas_gl_common_image_free calls evas_cache_image_flush.
So the cache->usage increases just around 300. If the cache->limit is 4194304,
then the cache could have around 1398 items. This would be fine.

But each items hold eina_file, and the cache does not count eina_file size.
If the file size is 326352, then a process could use 456527385 bytes.

So this patch set make the cache->usage count eina_file size.
This would be better option than https://phab.enlightenment.org/D7029

Reviewers: Hermet, jypark, cedric

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7030
2018-10-26 19:16:33 +09: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
Hermet Park 945eeeab33 evas neon: fix build break.
there is a grammatic error, just fix it.
2018-09-12 13:36:35 +09:00
Wonki Kim 4fb9effee9 evas: replace a current copy color function for neon
Summary:
current copy color function has problem sometime on a arm neon environment.
inline asm code makes crashing problem.

so that this patch replace the asm code with a function which is a part of pixman project.

Reviewers: cedric, Hermet

Subscribers: kimcinoo, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6922
2018-09-10 13:36:10 +09:00
Chris Michael 3862b304b0 evas-common: Remove cserve2 support
ref T7226

Depends on D6934
2018-08-30 13:47:27 +09:00
Mike Blumenkrantz 69fae8c7bf evas: remove render2
Summary:
this is more or less a dead project, having not been actively developed
in over 2 years and instead forcing people to expend more time and energy
to keep it compiling across refactors

fix T7227

Reviewers: stefan_schmidt, Hermet, ManMower, devilhorns

Reviewed By: Hermet, devilhorns

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7227

Differential Revision: https://phab.enlightenment.org/D6878
2018-08-21 10:36:55 -04:00
Hermet Park febeaab9ce evas map: +comment for maintanance. 2018-08-20 14:39:37 +09:00
Mike Blumenkrantz aa9cc3a068 evas: remove ecore init/shutdown calls from everywhere besides evas_main
Summary:
these separate inits and shutdowns make it impossible to effectively control
ecore's lifetime which makes evas_shutdown unreliable as objects may be
destroyed at any point

ref T7052
Depends on D6475

Reviewers: ManMower, devilhorns

Reviewed By: ManMower, devilhorns

Subscribers: cedric, #committers

Tags: #efl

Maniphest Tasks: T7052

Differential Revision: https://phab.enlightenment.org/D6476
2018-06-28 15:03:15 -05:00
Mike Blumenkrantz bea602f258 evas/thread_render: improve thread safety
this resolves some invalid read/write operations between threads without locking
and also attempts to improve thread-related behavior after fork() calls

ref T7027

Differential Revision: https://phab.enlightenment.org/D6370
2018-06-25 15:17:14 -04:00
Mike Blumenkrantz b60a9999ca evas/cpu: rework SIGILL code for non-x86 (and fix windows build)
Summary:
the previous patch which improved this code for x86 archs broke compiling
for non-x86 and, coincidentally, for windows builds on x86 due to some
unusual #ifdef blocks

this attempts to restore handling on non-x86 and adds additional #ifdefs for
functions which did not build on windows due to removed code

ref 6b1ab3cd9c

Reviewers: ManMower, devilhorns

Reviewed By: ManMower

Subscribers: cedric, #committers

Tags: #efl

Maniphest Tasks: T7062

Differential Revision: https://phab.enlightenment.org/D6368
2018-06-22 14:18:43 -04:00
Hermet Park 013dfe7013 evas map: fix a typo. 2018-06-19 10:50:50 +09:00
Derek Foreman 6b1ab3cd9c evas_cpu: Avoid SIGILL in evas startup on x86
Summary:
To determine if a system supports SIMD instructions, the cpuid facility
should be used.  However, for 15+ years EFL has been trapping SIGILL,
then attempting to execute these intstructions.

Continuing after SIGILL is explicitly undefined behaviour and can never
safely be relied upon - it is possible the CPU will respond to the
unknown instruction in an upredictable way and the program will not
continue correctly.  Even if it hasn't caused problems before, there's
no reason to believe a processor released in the future won't behave
differently.

Lately we've had a couple of bug tickets where SIGILL appears to cause
problems at a system level as well, but there seems little point in
chasing those problems down as we shouldn't even be doing this in the
first place.

ref T6711
ref T6989

We still rely on SIGILL in a few configurations where eina_cpu doesn't
know how to query features properly (powerpc, sparc, and non linux
ARM configurations).  Hopefully someone with expertise on those
platforms can follow up and we can remove this entirely.

Note: MMX2 appears to not really be a thing, and is instead provided by
both 3DNow! and SSE.  We already conflate it with SSE in other parts of
evas, so I've just used SSE here to test for its presence.
Depends on D6313

Reviewers: devilhorns, zmike

Reviewed By: zmike

Subscribers: cedric, #committers, zmike

Tags: #efl

Maniphest Tasks: T6989, T6711

Differential Revision: https://phab.enlightenment.org/D6314
2018-06-18 15:12:54 -05:00
Derek Foreman 1d8a93aa78 evas_cpu: Refactor checks that use eina_cpu_features_get
Summary: Minor code simplification.

Reviewers: devilhorns, zmike

Reviewed By: zmike

Subscribers: cedric, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6313
2018-06-18 15:12:36 -05:00
Carsten Haitzler 3d6fa02540 evas - loading extension query - fix to not skip small extensions
since this can take an extension as well as a file path (extension
being .gif or .jpeg etc.) it would skip if passed a small extension
only (5 chars or less). fix and this fixes e's thumbnailing too for
some files.

@fix
2018-04-12 20:56:48 +09:00
Youngbok Shin 4c36461233 evas: apply fribidi bracket types to show paired bracket properly
Summary:
The fribidi couldn't reorganize paired brackets (Ex. '(', ')')
when there is RTL + LTR text. According to TR9(http://www.unicode.org/reports/tr9/),
it has to be shown properly without LRM or RLM.

Also, from the fribidi 1.0.0, fribidi_get_par_embedding_levels() was deprecated.
It is replaced with fribidi_get_par_embedding_levels_ex() which is including
paired brankets rules from TR9.

@feature

Test Plan:
1. Create a elm_entry.
2. Set a text by calling text_set.
   elm_entry_entry_set(entry, "مرحبا Hello (40)");
3. Run and see the results.
   - Without this patch or fribidi 1.X.X, it will show text like this...
     "(Hello (40 مرحبا"

   - With this patch and fribidi >= 1.0.0
     "Hello (40) مرحبا"

Reviewers: raster, cedric, herdsman, woohyun

Reviewed By: herdsman

Differential Revision: https://phab.enlightenment.org/D5921
2018-04-12 12:55:26 +03:00
Hermet Park d62ee3bea1 evas: improve evas map anti-alising rendering quality.
Old version algorithm was imperfection a bit, quality was poor at some specific
degrees, specifically, when pixel increment pattern on the diagonal lines is
unstable.

This revised version was better than old one even source code is much cleaner
and simpler.

See belows.

*NonAA vs AA:
https://ibb.co/bCNfMc

*Compare the worst case aa in the old version:
https://ibb.co/bEJsZx

*Test video:
https://youtu.be/Wn20Tym5lfg
2018-04-10 11:19:19 +09:00
Hermet Park 63b6d9c17f evas: fix Evas Map AA changes the alpha flag of an image issue.
Evas map supports anti-alias(aa) rendering on sw backened.
When aa is toggled on, map forcely turns alpha channel on while it draws on the surface.
Actually, it was intended to blend polygon edges with destination,
but it breaks one case if the original source image alpha channel were turned off.

Simply, it fixed the issue, new implmentation removes the alpha channel switching,
instead fill the alpha values with 255 when map + aa + alpha_off is drawing on it.

@fix T1975
2018-04-03 19:23:52 +09:00
Hermet Park cbd9ab686d evas - remove wrong flag.
obviously, this parameter is being used.
2018-04-02 20:25:22 +09:00
Hermet Park f21aedce22 evas - correct evas map anti-alias rendering to perform properly.
Evas map anti-aliasing haven't worked at all if the smooth scaling were disabled.

evas map rendering has a lot of corner-cases, previous call-position was wrong,
(by mistake maybe) shouldn't be in a certian case.

Let aa post-processing function be performed in universally.
2018-04-02 20:23:25 +09:00
Derek Foreman 9111811b83 evas: Check for NEON via eina_cpu_features if possible
On linux we can do this test without firing a SIGILL and trapping it,
if getauxval() is present.

ref T6711
2018-02-28 18:07:53 -06: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
Carsten Haitzler f32f0d89f4 mmap memory allocation - do not used when under valgrind
we can't sensibly use things like massif to track memory if we bypass
itr with mmaping -1 fd anonymous memory... so if built with valgrind
support and running under valgrind, use malloc/calloc and free so
these tools actually do something useful for these bits of memory.
2018-01-12 03:02:43 +09:00
Jean Guyomarc'h a1e05aa089 evas/elm: fix visibility of some symbols
Public symbols were defined internal to Evas/Elementary on macOS, making
the link of external modules unfeasible.

- EAPI was messed up by an invalid inclusion of evas_text_utils.h, making
  some symbols private instead of public.
- A similar issue was present in evas_font_draw.c, where the symbols
  were directly imported without the proper definition of EAPI.
- Elementary.h did include some eo-generated headers, but for windows
  only. It should not been restricted to windows, as it allows to export
  symbols to external modules.

Fixes T6448.
2017-12-19 15:08:46 +01:00
Jean Guyomarc'h f71444baa8 evas: include missing header
This fixes a compilation warning telling a function was used without
prior declaration.
2017-12-19 14:30:23 +01:00
Jean-Philippe Andre fc82281603 evas: Fix potential crash with draw context
Using filters I end up in situations where this function returns NULL
and all hell breaks loose. I guess the spinlock is what makes this
possible (race condition).

@fix
2017-12-14 18:03:48 +09:00
Pawel Aksiutowicz a9a31715d9 evas: clean code of evas_common_cpu_can_do() in common/evas_cpu
Reviewers: stanluk, lukasz.stanislawski, jpeg

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D5602
2017-12-11 17:18:55 +09:00
Ross Vandegrift 31ce5250cb evas: Fix sign mismatch in evas between.c and .h definitions
Summary:
Parameters w and h are declared as int for evas_common_rgba_image_from_data
and evas_common_rgba_image_from_copied_data in evas_image_data.c.  This
does not match the prototypes in evas_image_private.h which declares them
unsigned.

Original report: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=748026

Reviewers: jpeg

Reviewed By: jpeg

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5540
2017-11-27 17:36:58 +09:00
subhransu mohanty befb7701a7 evas/engine: added new engine api for ector 2017-11-10 11:20:38 +09:00
subhransu mohanty d4a2b2025b evas/common: added a generic cache in evas common. 2017-11-10 11:20:38 +09:00
Cedric BAIL fa3e1dc784 evas: rely on ecore to reset evas rendering thread on fork. 2017-11-07 16:08:39 -08:00
Cedric BAIL d125892601 evas: rely on ecore to reset upscaler thread on fork. 2017-11-07 16:08:39 -08:00
Jean-Philippe Andre 0076f54112 evas: Yet another OSX build fix...
Please tell me this is the last one
2017-11-07 21:53:45 +09:00
Jean-Philippe Andre 12fa8caec5 evas: Another attempt at fixing OSX build
Build failed with LKI not found, as a symbol, but it's a macro.
Copy & pasted from evas_common_private.h
How can this work on one platform and not another? I don't get it...
2017-11-07 20:18:52 +09:00
Jean-Philippe Andre a438e9382c evas: Fix make check
Because of this I couldn't test my previous patches properly and now
realized that I also broke make check... >_<

See D5419
2017-11-07 14:57:14 +09:00
Jean-Philippe Andre d4a3d2f5de evas: Fix invalid header protector
clang is smart enough to warn about this.
I've mentioned it multiple times...
2017-11-07 11:54:08 +09:00
subhransu mohanty b038d7df25 Remove evas internal dependency from the evas_font module
Summary:
dev branch : devs/subhransu/font

The Final goal is to move the evas_font module to ector so that both ector and evas can reuse the code.
make the api simple so that sam eapi can be used by evas_textblock and ector text.

This is the 1st stage to achive that gola, first remove the evas internal dependancy as much as possible before moving to ector library.

Reviewers: jpeg, raster, herdsman, cedric, id213sin

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5419
2017-11-07 11:34:53 +09:00
Youngbok Shin a191a052b8 evas: add a missing description for a newly added parameter
Summary:
A new parameter "width_offset" was added to
evas_common_font_query_last_up_to_pos() internal function.
But, internal documentation was not updated.
So, it adds a simple description for the new parameter.

Test Plan: N/A

Reviewers: jpeg, cedric, herdsman, shilpasingh

Differential Revision: https://phab.enlightenment.org/D5035
2017-10-27 12:12:25 -07:00
Godly T.Alias 3ad9ac8926 evas: buffer is not used in the case where destination and source dimension is different
Summary: Signed-off-by: Godly T.Alias <godlytalias@yahoo.co.in>

Reviewers: cedric, raster, rajeshps, prince.dubey

Subscribers: jpeg

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

Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
2017-10-13 11:58:59 -07:00
Jean-Philippe Andre ca581e00ba evas: Implement support for different H/V font DPI
This is modifying how a rarely used environment variable that sets the
DPI used for font sizing is parsed. The previous form remains valid, of
course. Note that EFL tends to use "scaling" instead of this DPI. The
font DPI is useful for me to open up a terminology window with almost
the same size as my IDE's code viewer.

Use case:

  export EVAS_FONT_DPI=95x94 terminology

Note:
I still don't get a 1:1 match with Qt's rendering, and in fact
94x95 works better than what 95x94 (which is reported by xdpyinfo).
Interesting though :)

@feature
2017-10-12 15:25:05 +09:00
Subodh Kumar a8e7cf74b1 evas: there is no effect of variable assignment while clean up.
Summary:
There is no effect of assingning a variable while clean up.
@fix

Reviewers: raster, cedric

Subscribers: cedric, jpeg

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

Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
2017-10-09 16:41:23 -07:00
Subodh Kumar 8d880d7f41 evas: there is no effect of variable assignment outside the function.
Summary:
Variable assigned is not used anywhere else, making it unused.
@fix

Test Plan: Na

Reviewers: raster, cedric

Reviewed By: cedric

Subscribers: cedric, jpeg

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-10-06 09:52:45 -07:00
Cedric BAIL 08deba98f8 evas: make sure we always open the file and look at its header before trying to load data. 2017-10-05 16:02:47 -07:00
Cedric BAIL 7672d1050e evas: remove unused function evas_common_load_image_from_file. 2017-10-05 09:37:07 -07:00
Carsten Haitzler e095562ea1 evas font loading - fix possible divide by 0 when font size is 0
fix coverity CID 1381446
2017-09-28 15:28:00 +09:00
Jean-Philippe Andre 3d2551175d evas: Fix shutdown of async cmd cache
The incomplete reset (array to NULL but max not reset) triggers errors
in evas_thread_queue_append() where eina_inarray_grow() returns NULL.

This shows up in:
   CK_FORK=no elm_suite

@fix
2017-09-26 17:58:07 +09:00
Youngbok Shin 1750410650 evas: Add scale feature for embedded bitmap fonts.
Summary:
When evas selects a strike of embedded bitmap font,
calculate ratio and use it for scaling embedded bitmap.
@feature

Reviewers: jpeg, tasn, woohyun, raster, herdsman

Reviewed By: raster

Subscribers: charlesmilette, Francesco149, cedric

Differential Revision: https://phab.enlightenment.org/D2713
2017-09-26 11:31:31 +09:00
Vincent Torri 0cdd501246 EFL For WIN32: Replace HAVE_EVIL define with _WIN32 2017-09-22 05:06:10 -05:00
Youngbok Shin 7a1075500a evas: don't search other fonts only for INHERITED script unicodes
Summary:
INHERITED script unicodes are only meaningful when it comes
after the previous unicode from same font.
Even if there is no glyph for the INHERTED script unicode from current font,
don't search other font for loading the unicdoe as first unicode
of next item. It will be meaningless.
@fix

Test Plan:
Check the following Emoji sequence with an emoji font
which does not have variation selector glyphs.
{ 0x1F3F3, 0xFE0F, 0x200D, 0x1F308 }

Reviewers: raster, cedric, herdsman, jpeg, woohyun

Reviewed By: herdsman

Differential Revision: https://phab.enlightenment.org/D5156
2017-09-11 08:52:03 +03:00
Jaehyun Cho 618c123341 evas_language_utils: Fix build error without NLS 2017-09-06 11:19:28 +09:00
Marcel Hollerbach e1738c4f1e Revert "evas_thread: only join the thread if the thread is still alive"
This reverts commit e41d46c635.

This seems to be wrong
2017-09-05 14:36:17 +02:00
Marcel Hollerbach e41d46c635 evas_thread: only join the thread if the thread is still alive
otherwise we might join a invalid thread id, that could lead to a
deadlock. Lets not do that.

ref T5245

@fix
2017-09-05 14:15:40 +02:00
Youngbok Shin bf1c0e2657 evas: proceed glyph iterator to handle next index properly
Summary:
When harfbuzz is enabled, _content_create_ot() function will be used
for shaping. If evas_common_font_int_cache_glyph_get() failed in some reason,
it never proceed gl_itr until the end.
It can cause weird rendering result. Because, all of gl_itr after the failure
can't have proper x_bear, y_bear and width.
@fix

Test Plan: N/A

Reviewers: raster, cedric, herdsman, jpeg

Differential Revision: https://phab.enlightenment.org/D5154
2017-09-04 10:18:05 +03:00
Youngbok Shin 2b9a2692e8 evas font: do floating point division for calculating more accurately
Summary:
Assigning a result of integral division to a double type variable is
not useful for next division calculation. For more accurate calculation,
it needs to be casted to double before doing division.
It does not fix some bugs. It was reported by a code quality advisor.

Test Plan: N/A

Reviewers: raster, cedric, jpeg, herdsman, eunue

Reviewed By: cedric

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

Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
2017-08-30 12:06:01 -07:00
Bryce Harrington c4a5b7b19c evas_rectangle_main: Whitespace cleanup
Summary: Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>

Reviewers: cedric

Subscribers: jpeg

Differential Revision: https://phab.enlightenment.org/D5100
2017-08-17 10:43:08 -04:00
Stefan Schmidt dbf7057bca Revert "efl: terrible kludge so avoid termination crash on osx"
This reverts commit 9368eedd35.

The release is out so we can revert this bandaid again. In the hope to
find the real culprit and solution before the next release.
2017-08-07 11:53:00 +02:00
Jean Guyomarc'h 9368eedd35 efl: terrible kludge so avoid termination crash on osx
Currently, elementary programs crash on termination on macOS (seems
Sierra-specific). This is very nasty, looks like deep memory corruption...
Without valgrind (or like) support on Sierra, it is difficult to
pinpoint the origin of the problem.

Due to the imminient release, and after discussion with @stefan, this
kludge will allow the release to happen.

This commit MUST be reverted just after the release, so we don't
blindfold ourselves!

Ref T5245
2017-08-03 10:31:26 +02:00
Youngbok Shin cbea6e4386 evas textblock: add align=locale option to respect locale's direction
Summary:
There are many requests to add a new feature for handling horizontal align
according to current locale. For example, in RTL locale setting,
users want to see right aligned text for every list's item.
Even if some of list's items only contain LTR characters!
It is useful for the needs.
@feature

Test Plan: N/A

Reviewers: herdsman, tasn, woohyun, raster, cedric

Reviewed By: herdsman, raster

Subscribers: z-wony, jpeg

Differential Revision: https://phab.enlightenment.org/D4664
2017-06-15 08:59:17 +03:00
Carsten Haitzler aa92cddb8b evas font code - build on older freetypes without new definitions
use the actual #35 as:

in freetype and it cant change without breaking abi...

@fix
2017-04-28 18:41:39 +09:00
Carsten Haitzler b2ca7a96dc thread fence code - move elsewhere in file to avoid conflicts 2017-04-28 18:41:39 +09:00
Derek Foreman 83adbadc89 evas: Add a function to block for render thread completion
This is needed by dmabuf engine fallback when it realizes it locally
allocated a buffer, has been rendering to it, but the compositor can't use
it.

So the engine copies its buffer contents into a new wl_shm buffer and
continues from there - however we need to make sure the async renderer
has finished first, so we don't copy a partial buffer.

This allows us to block for all previously submit actions in the render
queue to complete.
2017-04-26 13:47:46 -05:00
Youngbok Shin caed13d3fc evas: round glyph's advance before adding it to pen_x
Summary:
Rounding the sum of glyph's advance could cause inconsistency of
each glyph's positions. When Evas enables Harfbuzz library,
Each glyph's position has to be handled by only nearby glyphs.
But, currently, totally unrelated glyph's advacne could change
other glyphs positions.

ex) 1. "connect."
    2. "Tap here to connect."

You can see different gap between "c" and "o" of word "connect".
It should be same even if there was a different text before the word "connect".
@fix

Test Plan: N/A

Reviewers: raster, herdsman, jpeg

Reviewed By: raster

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D4782
2017-04-24 13:32:36 +03:00
Jean-Philippe Andre b6df13b024 evas filters: Move curve to software generic (3/8)
This moves the RGBA premul/unpremul functions to static_libs/draw.
2017-04-14 11:26:42 +09:00
Jean-Philippe Andre 0740010a06 evas filters: Move blend to software_generic (1/8)
This is an attempt at refactoring the filters code so I can
later implement GL support. This patch adds a few extra changes
to remove avoid calling functions of libevas from the software
engine: use the draw functions from static_libs/draw rather
than evas_common APIs.
2017-04-14 11:26:42 +09:00
Stefan Schmidt 9a15eeaced Revert "efl: terrible kludge so avoid termination crash on osx"
The only purpose of this commit was to allow efl 1.19 to be
released on macOS wothout crashing on termination. Time to revert
it and see that we can find a real fix for the next release.

This reverts commit cd5e755951.

ref T5245
2017-04-13 16:11:39 +02:00
Jean-Philippe Andre f3c9500a6d evas filters: Fix a rare crash in text render (SW)
There are reports of crashes when y < 0. This case seems
abnormal in case of filters, as I don't know how to reproduce it,
but it's happened.

Thanks Youngbok Shin for the report.

@fix
2017-04-10 16:56:14 +09:00
Youngbok Shin 1ab87367d8 evas: give width offset when Evas tries to find ellipsis position
Summary:
If the last item before ellipsis item has bigger width than its advance,
evas_common_font_query_last_up_to_pos() function can find wrong ellipsis position.
When Evas finds a position for non last item, Evas must care about additionally
available space for glyph's width of the given x position.

ex) the last item's glyph before ellipsis item has a tail to draw above the ellipsis item.

@fix

Test Plan:
Test case will added as comment.
(Becasue of font license problem.)

Reviewers: herdsman, raster, jpeg, woohyun

Subscribers: cedric, Blackmole

Differential Revision: https://phab.enlightenment.org/D4727
2017-04-10 12:15:20 +09:00
Jean Guyomarc'h cd5e755951 efl: terrible kludge so avoid termination crash on osx
Currently, elementary programs crash on termination on macOS (seems
Sierra-specific). This is very nasty, looks like deep memory corruption...
Without valgrind (or like) support on Sierra, it is difficult to
pinpoint the origin of the problem.

Due to the imminient release, and after discussion with @stefan, this
kludge will allow the release to happen.

This commit MUST be reverted just after the release, so we don't
blindfold ourselves!

Ref T5245
2017-03-31 14:11:01 +02:00
Youngbok Shin f83ce20e1c evas: clean up GL images for emojis when GL context is free'd
If GL context is free'd before processing font shutdown,
textures for emoji glyph's GL images will be free'd without clean
up its GL images. It causes eina mempool infinite loop issue when
emoji's GL images are free'd in shutdown process.

So, the patch will make a list for emoji's GL images in context and
clean up them when the context is free'd. Just like font textures in
context.

@fix

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

Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
2017-03-08 19:35:03 +09:00
Bryce Harrington b0ecb1fc90 evas: Drop duplicate macro definitions SETUP_LINE_*
Summary:
SETUP_LINE_SHALLOW and SETUP_LINE_STEEP are each identically defined
(except whitespace) in evas_line_main.c

Reviewers: cedric, jpeg

Subscribers: jpeg, cedric

Differential Revision: https://phab.enlightenment.org/D4681
2017-02-28 13:07:13 +09:00
Carsten Haitzler c1c7ad8360 evas color copy neon asm - declare tmp as output not input for warning--
less warnings - use output not input for tmp var. much better.
2017-02-12 00:32:22 +09:00
Carsten Haitzler f4088a1f74 evas smooth scaler - fix warning where indenting is misleading
indeed the indenting is misleading. fix.
2017-02-12 00:29:49 +09:00
Carsten Haitzler 40af2935af evas blit main - put mmx funcs in ifdefs as they are not used on arm
fixes warning
2017-02-12 00:29:49 +09:00
Carsten Haitzler 5424345c46 evas draw func get - make pixels as unused as it is in neon asm cases
also a little shitespace cleanup and correct ()ing of ops to clean
this function up a bit.
2017-02-12 00:29:41 +09:00
Carsten Haitzler f00dbd2252 evas convert color - neon asm - fix warning by casting - no side effects
it's a warning one way or another so reduce noise with a harmless case
as passing in a pit ro a 32bit type is more restrictive than the ptr
it accepts (an 8bit type)
2017-02-11 23:13:00 +09:00
Cedric BAIL 5ac43bb26d evas: use the right structure to not over allocate memory.
Eina_Trash is designed for storing cached pointer without any memory
consumption. Please be careful with EFL memory consumption.
2017-02-10 14:27:29 -08:00
Carsten Haitzler a84370fcd8 evas yuv convert - fix unused increments
this removes useless yp1 += and yop2 += as they are SET int he loop.
this fixes 1367510 and 1367511
2017-02-08 21:19:39 +09:00
Carsten Haitzler b5348e47cc evas image load - remove unreachable code
it's just printing a warning anyway and coverity CID 1368210 is right
as it says it's unreachable. fix.
2017-02-08 21:19:39 +09:00
Carsten Haitzler c657d41fc3 evas image load - handle null module handle in case
this fixes CID 1368338
2017-02-08 21:19:39 +09:00
Carsten Haitzler a909ca1f68 evas draw context - reduce size and allocations and frees
so a little perf fun shows malloc/free/realloc/etc. are, combined a
reasonable overhead. this reduced malloc overhead for draw contexts so
whne we duplicate them or create new ones, we re-use a small cache of
8 of them to avoid re-allocation. just take the first one from the
list as it really is that simple. mempool would not have helped more
here and cost more overhead.

@optimize
2017-01-31 23:01:50 +09:00
Cedric BAIL 8f1c071d6a eina: rename EINA_{FLT,DBL}_CMP to EINA_{FLT,DBL}_EQ. 2017-01-06 15:58:46 -08:00
Jiyoun Park 8ee0c30eb0 evas_image_main: fix memory leak of camera app -PLM[P161206-03545]
In gl engine, image objects try to unload image's pixel data after creating or updating the texture.
but image entry's reference is still 1, it is added to the pending_unloads list,
and it is cleaned when evas render function.

If elm image use preload feature, preload_done flag is true, so this image data cannot be removed from
pending_unloads list, it cause memory leak.

I think it is better to free image's pixel data in evas_cache_image_unload_data,
(not add to the pending_unloads list)
but it it complicated to modify.

so I'll remove the code to check preload_done flag in  evas_common_rgba_pending_unloads_cleanup function.
this flag check was added because of gl preloading, but now gl preloading feature is disabled.
this flag is related with https://phab.enlightenment.org/D2823

I tested photocam, but crash doesn't occur anymore, even though removing flag check.
2017-01-06 15:40:09 +09:00
Carsten Haitzler 3842e87d3a evas image skip header - more fixes for when images fail to load
this fixes some more issues i have found in using skip header like if
the file doesn't exist etc. recent feature add so not a fix.
2017-01-06 09:38:44 +09:00
Carsten Haitzler 309e490bc0 efl header skip with preload - fix seg on invalid file
for invalid files we didn't handle this case, so fix it - recent
commit/feature add.
2017-01-04 20:18:42 +09:00
Haegeun Park 0ac95c40bc [Evas GL Thread 1] evas: Fixed indentation of evas_thread_render.c
Summary:
@fix

Change-Id: I411fe6d75dc7b15c0d7f19f165ea4b0cc3b28c12

Reviewers: sung, jpeg, cedric, raster

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4525
2017-01-04 15:30:21 +09:00
Carsten Haitzler 2cb621fe4a evas loader - don't stat NULL file paths
something i found valgrinding my recent async improvments. statting
null path. fix it.
2017-01-02 22:58:24 +09:00
Carsten Haitzler 9e01cf2698 evas image async preload - add option to also make header load async
to date if you use async preload we still load the header
synchronously and this can be horrible especially with generic
loaders. there is no way to farm this off to the preload thread. now
there is. youhave to set it as a skip head load option before doing a
file_set AND you need to issue a preload ... but now it's possible.

@feature
2017-01-02 18:53:56 +09:00
Carsten Haitzler b0530aba4f evas cutouts - quickly avoid huge per issues with large nos of cutouts
i found evas_common_draw_context_apply_cutouts() was procsessing 300+
cutouts and as it's O(n^2)/2 to try and merge adjacent rects for
cutouts this really performs like complete junk. we apply cutout rects
a LOT. this is not the best solution, but it's quick and much faster
than doing the clipouts which drop framerate to like 1-2fps or so in the
nasty case i say (tyls -m of photos in a dir with a 2160 high
terminal).

this figures out the target area to limit the count of rects
significantly so O(n^2) is far far better when n is now < 10 most of
the time. and for the few operations where it's a high value this now
uses qsort to speed up merges etc. etc.

@optimize
2017-01-02 18:53:56 +09:00
Carsten Haitzler ef49935f72 evas - clean up whitespace and 80 column wrapping and commented out code
this doenst change functionality but just cleans up the file
whitespacing and formatting and removed commented out junk, 80 column
wrapping/overflow etc.
2016-12-28 13:31:48 +09:00
Carsten Haitzler 8424c2b4a3 evas - use freeq for common and cache images
this makes software rgba images and cache images use freeq to try and
minimize possible bugs and crashes if we hit use of freed data for
images.
2016-12-28 12:40:14 +09:00
Jean-Philippe Andre 2f1d666a06 evas: PNG save of ARGY88 needs unpremul
PNG saves unpremultiplied values, so we need to do that
for the newly supported ARGY88 colorspace as well. Fixes
the previous commit.
2016-12-22 19:23:01 +09:00
Chris Michael f427050b61 evas: remove float comparison warnings for evas_convert_color
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-12-20 10:25:51 -05:00
Cedric BAIL 224ba8586b evas: fix use of signed and unsigned type in conditional expression warning. 2016-12-15 11:28:17 -08:00
Cedric BAIL e1843b2ced evas: fix potential use of unitialized variable. 2016-12-15 11:27:54 -08:00
Hermet Park 7d7c17c22a evas common: disable thread_queue feature on win32.
We have an issue that eina_thread_queue msg isn't delivered properly on win32.
That occurs broken image drawing in case of non-smooth scaling.

I disabled this feature on win32 because scale_sample_draw is gonna be rarely used
since async rendering introduced.
2016-12-01 20:04:58 +09:00
Hermet Park c7620cf83c evas common: fix a typo. 2016-12-01 17:12:42 +09:00
Jean-Philippe Andre 69a684cf04 evas: Fix a few issues after init/shutdown/init
elm_suite would crash when CK_FORK=no is set, because evas was
badly initializing or shutting down. Note that elm_suite still
crashes with CK_FORK=no but valgrind doesn't complain.
2016-11-23 23:48:53 +09:00
Wonki Kim 88e1fc9613 evas: Add shutdown logic on thread creation failure
Summary:
In case of thread creation failure, shutdown logic will be stuck.
To prevent stuck, set exit variables to make thread_shutdown working
even if init fails.

Also modify init logics to return init result to a caller.

Reviewers: jypark, woohyun, cedric, jpeg

Subscribers: cedric

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

Note (@jpeg):
I have modified the patch just a little bit.

Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
2016-11-22 14:50:38 +09:00
Chris Michael 2da9ce5921 evas: Cleanup unused variables when compiling for Neon
Compiling on rpi3 indicated that there are some unused variables in
the neon codepaths for several evas op functions. This patch just adds
EINA_UNUSED to the function parameters where needed.

NB: No functional changes

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-11-18 11:30:29 -05:00
Chris Michael 31c7303425 evas: Remove unused variables
Compiling on rpi3 using neon indicates that 'alpha' and 'tmp'
variables are unused. Reading through the source confirms it, so
remove them.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-11-18 11:30:29 -05:00