Summary:
Patch from a series of patches to rename EAPI symbols to specific
library DSOs.
= The Rationale =
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>
Reviewers: vtorri, jptiz, woohyun, lucas, SPAM-smith78899
Reviewed By: vtorri, SPAM-smith78899
Subscribers: SPAM-smith78899, raster, SPAM-cabanacatalogs, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12228
this can happen if dmabuf is invalid (already destroyed) so handle
this so evas knows and falls back to rendering a rect and complains to
stderr so we know
@fix
Summary: and minor fix of some values in avif loader
Test Plan: entice still can read heif
Reviewers: raster
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12257
a 2x2 matrix visually here is about as good as 4x4. at least in what i
see, but on low end gpu's it can halve the cost. in fact i was watching the
gpu on my old i5-4200u drop down to 340-410mhz (no dithering is 320-360mhz).
i got to 630-660mhz with the original 4x4 code.
the 4x4 is still there ifdefed out. perhaps i can bring it back with a
high-quality dither option, but 2x3 i think is good enough.
this adds a
EVAS_GL_RENDER_DISABLE_DITHER=1
env var (set it to anything) to disable dithered rendering.p this is
an added cost, but normally not much at all, but it seems some gl
implementations are broken, and they can't generate correct code for
the dither shader, so this disables this if this env var above is set
Summary: libavif can be built without a AV1 decoder. Check this in the image loader
Test Plan: entice
Reviewers: raster
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12252
it's broken. it doesnt render anything. input is broken. it isn't in
use so it doesnt justify fixing. no one has complained it's brokne
thus proof of it not in use, so proof that it's not needed, so do the
right thing and nuke it to save work
@feat
we need this to do formats and modifiers properly... and this is what
broke on the rpi4 - it started using interesting formats etc. ... new
feature to support a bug fix in e
@feat
Summary:
The tex->pt->references is descreased by
evas_gl_common_texture_free -> pt_unref
if tex->references is 0
And tex->pt->texture is removed by
evas_gl_common_texture_free -> pt_unref -> glDeleteTextures
if tex->pt->references is 0
The evas_gl_common_texture_free decreases tex->references only
if tex->references is bigger than 0. There is no chance to decrease
tex->pt->references at this point.
So if orient_set increases both references of tex and tex->pt, then
the tex->pt->reference is not decreased till tex->references is 0.
So do not increase tex->pt->references in eng_orient_set.
Reviewers: raster, cedric, Hermet
Subscribers: #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12243
Summary: that supports images : *.heif, *hiec and *.avif I have disabled *.avif images, there is already a loader.
Reviewers: stefan_schmidt, raster
Subscribers: raster, vtorri, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12135
Summary:
There could be 2 evas_gl_image referencing 1 evas_gl_texture.
evas_object_image_orient_set could make this case.
In this case, when one evas_gl_image is removed(free), the evas_gl_texture
is not removed because its reference count.
After this point, if the other evas_gl_image is removed without drawing
(see function evas_gl_common_image_draw, line "im->tex->im = im")
then evas_gl_texture is reading invalid adress when it is removed.
Reviewers: Hermet, jsuya, herb, devilhorns
Reviewed By: devilhorns
Subscribers: devilhorns, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12229
when a file has no extension to guess by.. evas goes back to trying
every loader until one works. this leads to noise. loaders should not
printf/stder or eina log err anything if the file seems to not be valid.
@fix
Summary:
The strech region has paired information; total and strechable.
Refer to function _strech_region_load retrieving strech region info.
But if 9-patch information line ends with strechable,
png did not push the strechable information.
And it leads to devide by zero.
This patch is adding strechable info to the strech region,
if 9-patch information ends with strechable.
Test Plan:
[Code]
{F4219278}
{F4219280}
[Test]
ECORE_EVAS_ENGINE=opengl_x11 ./evas-image-9patch ./end_with_strech.9.png
Reviewers: Hermet, jsuya, herb, cedric
Reviewed By: Hermet
Subscribers: #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12204
this adds a dither func (4x4 dither matrix) to experiment with higher
quality rendering in gl - this assumes you have a normal 8bit per
channel buffer for now (99% of people) and will approximate values in
between the 256 steps 8 bits provides by using the dither matrix based
on gl_FragCoord position. it's just a flag in the shader flags for now
so can be turned on/off in code. this definitely makes blurs look much
better... everything else seems basicall the same. let's see how this
goes.
@feat
Summary:
evas image might have a better quaility if scaling/transform is not necessary,
so we have a condition to check if image is axis-aligned transformed or not.
On the other hand sub-pixel(floating point coordinates unit) rendering necessary
if image has an effect such a zooming. This would result in a smoother effect
than integer coodinate system.
We need a more precise condition to confirm this,
so we intrduce "anti-alias" option to decide the condition.
now, anti-aliased objects will have a sub-pixel rendering always.
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12194
Summary:
The 9 patch is using image_stretch_region_get, but GL did not override it.
So the 9 patch did not work for GL engine at all.
Test Plan:
Evas_Object*img = evas_object_image_filled_add(evas);
evas_object_image_file_set(img, "test.9.png", 0);
evas_object_show(img);
Reviewers: Hermet, jsuya, herb, cedric
Reviewed By: Hermet
Subscribers: #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12192
max width < 0 is wrong.. dont set it. min width < 1 for efl is
stupid/invalid and dont set it either, so clamp these and now things
work right in corner cases.
@fix
Summary:
When copying tag_name, if length of referenced string is longer
than general case, it is not used as tag_name.
Test Plan: N/A
Reviewers: Hermet, smohanty
Reviewed By: Hermet
Subscribers: kimcinoo, herb, cedric, #committers, #reviewers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12185
Summary:
Supports case of using style attribute for defined <clipPath> and node.
In SVG, <clipPath> can be used as a "clipPath" attribute or a style "clip-path".
If there is a clip-path node, save it as a composition node and
use composition method(matte_alpha) to compose it.
Below node types support clip-path.
<circle>
<ellipse>
<g>
<path>
<polygon>
<polyline>
<rect>
Test Plan:
Please see attached svg files
{F4026162}
Reviewers: Hermet, smohanty
Reviewed By: Hermet
Subscribers: #reviewers, #committers, cedric, herb, kimcinoo
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12179
Summary:
ecore_evas win32 engine is updated to support it. This fixes the
"maximized/unmaximized" elm "windows states" test.
Test Plan: elm_test
Reviewers: raster, jptiz, felipealmeida
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12177
Summary: activating the function needs un-iconified first
Test Plan: elm windows status tests
Reviewers: raster, jptiz, felipealmeida
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12176
Summary: When a window is iconified, its size is 0x0 and is passed to evas viewport. Set the size to 1x1 in that case
Test Plan: Elementary "windows states" test
Reviewers: raster, jpcordovae, felipealmeida, jptiz
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12171
Summary:
Also replace all mkstemp(s) and mkdtemp with the eina_file functions in
the source
Test Plan: run eina_file test
Reviewers: raster
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12170
before the efl-one refactoring ecore_x_deps contained all the
dependencies for x11. After that not anymore, however, we should link
software_x11 to x11 libs directly, which is again happening after this
here.
Summary: In certain use cases, when image data is created twice, the existing memory pointer is isolated and a memory leak occurs.
Reviewers: raster, Hermet
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T8813
Differential Revision: https://phab.enlightenment.org/D12148
Summary:
It supports stroke-dasharray, one of the stroke properties of svg.
https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray
Test Plan:
[Test SVG]
<svg viewBox="0 0 30 10" xmlns="http://www.w3.org/2000/svg">
<!-- No dashes nor gaps -->
<line x1="0" y1="1" x2="30" y2="1" stroke="black" />
<!-- Dashes and gaps of the same size -->
<line x1="0" y1="3" x2="30" y2="3" stroke="black"
stroke-dasharray="4" />
<!-- Dashes and gaps of different sizes -->
<line x1="0" y1="5" x2="30" y2="5" stroke="black"
stroke-dasharray="4 1" />
<!-- Dashes and gaps of various sizes with an odd number of values -->
<line x1="0" y1="7" x2="30" y2="7" stroke="black"
stroke-dasharray="4 1 2" />
<!-- Dashes and gaps of various sizes with an even number of values -->
<line x1="0" y1="9" x2="30" y2="9" stroke="black"
stroke-dasharray="4 1 2 3" />
</svg>
Reviewers: Hermet, smohanty
Reviewed By: Hermet
Subscribers: kimcinoo, herb, cedric, #committers, #reviewers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12146
Summary:
Mask and clippath TAG are not supported yet.
If this TAG is used, the Child TAG declared with this TAG may cause problems.
To prevent that, declare them as Unknown types until they are supported. (display=none)
Test Plan: N/A
Reviewers: Hermet, smohanty
Reviewed By: Hermet
Subscribers: cedric, herb, #reviewers, kimcinoo, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12139
Summary:
When both <defs> and <svg> gradients are declared,
the update of gradient declared in is omitted.
Therefore, this patch fixes any missing gradient updates.
Test Plan: N/A
Reviewers: Hermet, smohanty
Reviewed By: Hermet
Subscribers: #reviewers, #committers, cedric, herb, kimcinoo
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12138
Summary:
In relation to the declaration of rx and ry attribute of rect, the following three cases occur.
rx="10" (or ry="10"
rx="10" ry = "0" (or rx="0" ry = "10")
rx="10" ry = "10"
To cover these case, we check the rx and ry declarations.
Test Plan: N/A
Reviewers: Hermet, smohanty
Subscribers: kimcinoo, herb, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12137