Summary:
If evas engine init failed, it can make crash.
For example
If opengl init failed, then ee->prop.window is 0
ecore_evas_gl_x11_options_new_internal
{
if (!ee->prop.window)
{
ERR("evas_engine_info_set() init engine '%s' failed.", ee->driver);
ecore_evas_free(ee);
return NULL;
}
}
ecore_evas_free calls evas_fonts_zero_pressure
and this time evas->engine.func is NULL so it makes crash.
Reviewers: cedric
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3542
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: We need this to have an access to scene while running programs in edje-3d.
Reviewers: cedric, raster, Hermet, jpeg
Reviewed By: jpeg
Subscribers: jpeg, artem.popov
Differential Revision: https://phab.enlightenment.org/D3529
This implements a generic way of scaling buffers, using fake
RGBA_Image wrapping ector buffer maps. The underlying algo is
still the good old linear sw scaler.
Now the filters *should* be back to their previous level of
usability. Performance will probably be even worse than it was
before, for GL, as more glReadPixels may be involved. Optimization
now consists in actually implementing the filters with GL shaders.
Evas filters is now more and more unaware of evas images (RGBA_Image)
and the engine + ector take care of everything.
Still left to do:
- map / unmap an FBO buffer into RO or RW memory
This fixes crashes, adds safety, and notes a couple of things that
are not yet implemented:
- Make an Evas_GL_Image from an RGBA_Image so we can draw it on the
canvas. This means Evas.Ector.GL.RGBA_Image.Buffer
- Readable Evas_GL_Image objects with gl_read_pixels
--> Implement proper map() & unmap() for GL buffers
Since Ector Buffer implicitly converts colorspaces, we
can allow more commands to work even if they are suboptimal.
Now all filters should support any combinaison of input, map/mask
and output colorspaces.
This is a major refactoring of the evas filters submodule.
Use Ector.Buffer and the map/unmap methods instead of directly
accessing image buffers with RGBA_Image. RGBA_Image is still
used under the hood, for two reasons:
- Required for the final output (blend onto Evas itself)
- Required for the scaling routines
FIXME:
- Breaks proxy support (ie. all kind of texturing).
- This breaks filters support for the GL engine.
Since Evas still relies entirely on Image_Entry and Evas_GL_Image,
we will need an engine-specific wrapper object creating a Buffer
around an existing cached image.
Currently only SW support is implemented. GL will be more fun to
do (with glReadPixels and whatnot).
Summary:
There were some problems with second and third vertices in the first triangle of convex hull. It is very hard to see this errors because it could cause
an excess of triangles inside of convex hull, I have used blender to find them.
Reviewers: raster, Hermet, cedric
Reviewed By: cedric
Subscribers: jpeg, artem.popov
Differential Revision: https://phab.enlightenment.org/D3491
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
it->h is sum of max ascent and max descent. It shouldn't be used
when handle ellipsis. Because, Evas Textblock uses these values for
each lines differently according to its location.
(start, end, else, single)
So, for handling ellipsis exactly, it has to be fixed.
Test Plan: A test case is included in Evas Test suite.
Reviewers: woohyun, tasn, herdsman
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3475
Summary:
Move common part to a separated document.
Make code more readable using smaller functions. (from Task T2713)
Everything is OK with make check.
Reviewers: cedric, raster, Hermet, stefan_schmidt
Reviewed By: stefan_schmidt
Subscribers: jpeg, artem.popov
Differential Revision: https://phab.enlightenment.org/D3430
in the case that pointer mode is changed on an object at any time after
a grab has been acquired by the object, grabs/flags must be adjusted for
this and other "pointer-in" objects in order to avoid permanently
breaking canvas events
@fix
I have no idea what this mode was intended to do since there are no docs
and the related code in evas events is undocumented, so I can only speculate.
what I can say for certain is that this mode does grab, in opposition to its name,
and that until this commit any object which sets this pointer mode will
permanently break mouse eventing on the canvas
ref evas SVN 67264
@fix
Summary:
'cached' flag is not enough to check whethere data is loaded and texture is uploaded.
so check more options for prevent re-preload image data on gl-backend.
Test Plan: Local Test (elementary_test : elm images)
Reviewers: jpeg, eunue
Reviewed By: jpeg
Subscribers: cedric, jiin.moon, wonsik, spacegrapher
Differential Revision: https://phab.enlightenment.org/D3446
This patch was *REJECTED*. I don't understand why it was snuck in among
a batch of 24 other unrelated patches. That made me miss it originally,
but found it now. This is wrong and shouldn't be in.
This reverts commit 3f0d0daf0d.
Summary:
Use width of item format to position cursor.
Sometimes it becomes very difficult to
position cursor over item and selection
becomes very difficult as we position the
cursor once the input X coord reached end of the item,
like one attached in the test plan. So this patch
decides over 50% of item width for X coord reaches
to position it at start or end.
@ix
Test Plan:
Attached setup shows how difficult to position cursor at the end when clicked
over item and selection is also very difficult. Consider such case in mobile
device, its becomes impossible to position cursor at the end and selection is
too much difficult.
{F27036}
Also added test cases in evas test suite
Reviewers: herdsman, tasn
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3390
Summary:
- This function is deprecated, because del_full should be used instead.
- Still, the documentation specifies in which order the callbacks should
- be deleted.
Reviewers: Hermet, jpeg, jaehwan
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3459
this is not ideal since it triggers a client-side rerender of every object
which was clipped to the master clip (double render) and then this ends up
forcing the server to rerender the same area twice as well
not only that, it causes all surface damages to to be the size of the entire
window - framespace for every frame
@fix
while not occurring immediately before flush as in sync rendering, this
is functionally close enough that it will serve the purpose for which the
callback was intended, namely receiving a callback that occurs after render
update calculations have occurred but before flush happens
@fix
ref cbb447c878
Summary:
Even if the given two cursor is NULL, it shouldn't be crashed.
@fix
Test Plan:
Test case included in Evas test suite.
Run "make check".
Reviewers: herdsman, tasn
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3422
we initted when we load and unload. this led to races with
locking/unlocking elsewhere as these expected us to be initted and we
were not yet. this fixes that!
@fix
This reverts commit cbb447c878.
1. this is wrong because evas_render_pipe_wakeup() is being called IN
THE RENDER THREAD. it... SENDS a wakeup back to the mainloop with
evas_async_events_put(data, 0, NULL, evas_render_async_wakeup);
and you can see that evas_render_async_wakeup() calls
evas_render_wakeup() and in evas_render_wakeup() flush pre/post are
called, but since the trhead does the flush we cant realyl call
before/after, but it retains order... IF there are updates (haveup).
so calling these callbacks FROM a thread is now leading to apps
mysteriously exiting. this is mucho bad. just at random i now have my
terminals exiting.
Summary: Summary : If data is cached, need not to reload data.
Test Plan: Local tests
Reviewers: jpeg
Reviewed By: jpeg
Subscribers: eunue, spacegrapher, cedric, wonsik, jiin.moon
Differential Revision: https://phab.enlightenment.org/D3418
This reverts commit 01a32f64c0.
This broke make check with the following error:
evas_test_mesh.c:123:F:Meshes:evas_object_mesh_loader_saver:0: Failure 'res == 1' occurred
Reopen https://phab.enlightenment.org/D3420
Summary:
Move common part to a separated document.
Make code more readable using smaller functions. (from Task T2713)
I did it again because somehow test is passing now. It seems like this test suite is unstable.
Please, let me know if there are any errors after running distcheck.
Reviewers: cedric, raster, Hermet, stefan_schmidt
Subscribers: jpeg, artem.popov
Differential Revision: https://phab.enlightenment.org/D3420
Summary:
The Function _evas_canvas3d_eet_file_free(void) is referenced in evas_model_load_file_eet()(file:evas_model_load_eet.c at line 122).
This call is under condition
if ((eet_file->mesh == NULL) || (eet_file->header == NULL)).
when either eet_file->mesh or eet_file->header are NULL, dereference of the corresponding pointer in function "_evas_canvas3d_eet_file_free()"
will generate Segmentation Fault.
@fix
Reviewers: raster, Hermet, tasn, wonsik, spacegrapher, cedric, jpeg
Subscribers: singh.amitesh, sachin.dev, alok25, yashu21985, mvsovani, cedric
Differential Revision: https://phab.enlightenment.org/D3369
Summary:
Evas Text only concerns about a advance of each text item.
When a width of last character is bigger than its advance, the last character can be truncated.
And the different line size calculation caused different aligning between Evas Text and Evas Textblock.
So, the width of last character will be considered in Evas Text just like Evas Textblock.
@fix
Test Plan:
The following text shows how the size calculation is different between Evas Textblock and Text.
Get native size from Evas Textblock and get width(geometry) of Evas Text.
You can see the width of Evas Text is bigger than native size of Evas Textblock.
(adv > width)
こんにちは。
The following text will be truncated without this patch.
(adv < width)
ନୂଁ
Reviewers: woohyun, tasn, herdsman
Subscribers: jpeg, cedric
Differential Revision: https://phab.enlightenment.org/D3004
This reverts commit 32c33ed64d.
This refactor broke the evas test cases for the model loaders and savers. I gave
it a week to get fixed but a first try did not succeed and its blocks a lot of
other automated testing. To be honest, it should have never gone it when it
breaks existing test cases. Once fixed this refactor can happily go in.
Fixes T2905
The line range rectangles geometries needed a bit of adjusting. I
started out with fixing T2648. In order to fill the gap between the end
of the line and the margins, the geometry of the last line's character
was used. I am not really sure why. Anyway, we have the line geometry,
so I replaced it with that.
Then, it led me to do some alignment checks, and indeed alignment cases
were not treated. For instance, an LTR paragraph could have a line
aligned with a value greater than 0.0. That means that we should fill
the gap from the left of the line, if it was the last line in a
multi-line selection. The inverse case is for RTL.
I think it now works as it should. Will see if the selection logic is
missing some more stuff once I come up with more example cases.
Fixes T2648.
@fix
This looks like a classic copy and paste error. It didn't make any sense
before, and it seems like no one was going to take a look at it.
This looks correct. If this breaks something (is render2 even used),
someone should remove those lines. I wasn't entirely sure if I should
just remove them, or correct them, as some of the code looked redundant
anyway.
The definition of 'framespace' in the canvas eo file is incorrect.
Framespace is the space occupied by the window frame within the canvas viewport
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
The line_set function should set the cursor to the first logical
position in the line. We can't use the first text position of the
first item in the line, due to BiDi considerations (the line may be
reordered). I've split evas_textblock_cursor_line_char_first to avoid
code duplication, as it already handles these cases.
@fix
Summary:
Evas textblock could cause infinite loop if there is no fonts to use.
If there is no fonts, text_props.text_len is never set.
When text_props.text_len is 0, the for loop in _layout_par runs forever.
It is ridiculous to use Textblock without fonts. But, it shouldn't runs
infinite loop in any situation.
@fix
Test Plan:
1. Remove all of fonts in your EFL or Tizen device.
(Or you can test it modifying some codes in Textblock by skipping load fonts.)
2. Run elementary_test -to entry3 or see any multiline textblocks.
Reviewers: tasn, herdsman, woohyun
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3402
This operation was faked by running a mul and a blend ops. Now
they are combined into one. A GL shader should also be able
to do this in a single pass.
Rename a few things:
- draw helper -> efl_draw
- Ector_Rop -> Efl.Gfx.Render_Op
- ECTOR_ bla bla -> DRAW_ bla bla (base pixel ops)
- ector_memfill -> draw_memset32 (and invert arg order to match memset)
The main rasterizer file is now draw.h in static_libs/draw
This is a non functional change, simple code refactor.
Line advance should finalize the line with its last item, and not the
item we're currently wrapping. This fixes T1583, where some line
wrapping cases would look different than their equivalent <ps>
versions.
@fix
Summary:
Text is disappearing when we resize a singleline Evas Textblock with ellipsis.
It is happened by putting a Text item at logical_items list without considering about logical position.
It is only happended the text is made up with multiple items.
@fix
Test Plan:
1. Run elementary_test
2. Click Label Ellipsis
3. Resize the window dynamically and see the result.
Reviewers: woohyun, tasn, herdsman
Subscribers: jpeg, subodh6129, shilpasingh, cedric
Maniphest Tasks: T2709
Differential Revision: https://phab.enlightenment.org/D3022
Summary:
Move common part to a separated document.
Make code more readable using smaller functions. (from Task T2713)
Reviewers: cedric, raster, Hermet
Subscribers: artem.popov
Differential Revision: https://phab.enlightenment.org/D3373
Summary:
eina_list_remove returns Eina_List pointer.
It could be NULL if the last list item is removed.
And the returned Eina_List pointer could be different from the given list.
So, calling free for fdir->data after fdir's address is changed is dangerous.
@fix
Test Plan: Run expedite or test app with evas_font_path_append() API.
Reviewers: stefan_schmidt, jpeg
Reviewed By: jpeg
Subscribers: stefan, jiin.moon, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3392
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
We need to check against the state here and if the compilers assignes 0 to the
first item in an enum we are screwed here as the bitwise AND will always
evaluate to false.
This is a re-incarnation from a486671bce
Clang spits warnings here about missing field initializers for
Evas_Vec3 (missing y and z fields), so we will explicitly initialize
them to 0 (matching the x field).
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
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.
We had it correct for most declarations and this series fixes it for
the rest.
Summary:
Evas supports UltraLight, UltraBold as font weight.
These terms have same weight value as ExtraLight, ExtraBold.
Some applications, for example, fontforge, use ExtraLight, ExtraBold terms for these weight values.
So, it would be better to support these terms, too.
@feature
Test Plan: None
Reviewers: tasn, woohyun, herdsman
Reviewed By: herdsman
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3126
See T2865.
Since Harfbuzz 1.1.0, terminology displays fonts funnily aligned to
the top. This is apparently because until 1.0.6 the y_offset was
always 0 for all glyphs, but since 1.1.1 the offset is actually
set.
This is a TEMPORARY fix. There might be an underlying issue left
here.
Harfbuzz changed behaviour in this commit:
commit 44f82750807475aa5b16099ccccd917d488df703
Author: Behdad Esfahbod <behdad@behdad.org>
Date: Wed Nov 4 20:40:05 2015 -0800
[ft] Remove font funcs that do nothing
We now support hyphenation in style. Use "wrap=hyphenation" to use this
wrap option. It will hyphenate based on explicit SOFT HYPHEN (­)
placement in the text, and with the (optional) assistance of dictionaries
compatible with Hunspell's "hyphen" library.
This wrap mode favors breaking at hyphen positions in a word, over moving
the whole word to the next line. It will put an additional "-" at the
break position if it was hyphened.
Enabling the hyphen dictionaries is done by adding these configure
options:
--enable-hyphen (requires Hunspell's "hyphen" library installed)
--with-dictionaries-hyphen-dir=DIR (specifies the install location of
the actual .dic dictionary files e.g. /usr/share/hyphen)
Note that dictionary files are expected to be in the form of "en_US.dic"
or anything that ends with it e.g. "hyph_en_US.dic" (this how they are
named in Arch Linux).
@feature
Summary:
If text object has outline and shadow effect (OUTLINE_SHADOW or OUTLINE_SOFT_SHADOW), and has shadow direction except BOTTOM_RIGHT then outline is not displayed.
So fix logic of style checking.
OUTLINE_SOFT_SHADOW effect of text object is different with text block, so fix it.
Test Plan: Make text obect with OUTLINE_SHADOW or OUTLINE_SOFT_SHADOW effect with any direction except BOTTOM_RIGHT
Reviewers: cedric, woohyun, herdsman, tasn
Subscribers: id213sin
Differential Revision: https://phab.enlightenment.org/D3047
Summary:
A bit of useless claim, becouse parameter coord always have value 0 or 1 or 2.
May be for escape problem in future.
@fix
CID: 1339781
Reviewers: raster, cedric
Reviewed By: cedric
Differential Revision: https://phab.enlightenment.org/D3349
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Have a sence. It is hard to assume that more that 16 million color will be used.
@fix
CID: 1339790
Reviewers: raster, cedric
Reviewed By: cedric
Differential Revision: https://phab.enlightenment.org/D3347
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This time it's only about performance. We seem to be setting the
changed flag too often, which might trigger unnecessary redraws.
- map flag is set if there is currently a map AND it's not an image
object (because images can map themselves)
- hmap flag is set if there was a map before
So, map != hmap does not imply a transition between a mapped and
non-mapped state. Add an extra check before marking the clip
as dirty and changed.
This rely on a faster code path to upload dynamic texture. Once we get support
for gbm, we should see significant performance improvement in speed, but this
first step is already a 5 times improvement (Ok, we get from really bad, to not
really useful...).
Summary:
It adds evas_object_paragraph_direction_set, get APIs.
The APIs set or get paragraph direction to/from the given object.
It changes BiDi calculations and affect the direction and aligning of text.
It doesn't have any effect to text without Fribidi library.
The default paragraph direction is EVAS_BIDI_DIRECTION_INHERIT.
If dir is EVAS_BIDI_DIRECTION_INHERIT, paragraph direction is changed
according to smart parent object. If there is no smart parent object,
paragraph direction works as EVAS_BIDI_DIRECTION_NEUTRAL.
@feature
Test Plan:
Test cases included to the following files.
- evas_test_textblock.c
- evas_test_text.c
- evas_test_object_smart.c
Run "make check".
Reviewers: woohyun, raster, herdsman, tasn
Subscribers: c, raster, cedric
Differential Revision: https://phab.enlightenment.org/D1690
Summary:
Fix memory leak
Position is getting returned without
freeing the temporary logical item list.
@fix
Test Plan: NA
Reviewers: tasn, raster
Reviewed By: raster
Subscribers: raster, cedric
Differential Revision: https://phab.enlightenment.org/D3345
This function was trying to infer from the LANG env var, though it should
have just queried the locale all along, as the language we want is the
system's text language, and not necessarily the LANG variable's value.
@fix.
Summary:
Remove fixme marker
Algorithm used is good enough to sort
very few number of items, usually 2 to 6
items.
Test Plan: NA
Reviewers: herdsman, cedric, tasn
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3312
Summary:
If textblock has linegap and multi language, ascent/descent calculation is
incorrect.
In _layout_format_ascent_descent_adjust(), descent is accumulated.
(for example, for a line gap of 50, the first line gap is more than 100)
Test Plan:
Textblock has "linegap=50" and multi language (ex.
"This is a test suite for line gap -
ഈ ലൈൻ വിടവ് ടെസ്റ്റ് ടെസ്റ്റ് ടെസ്റ്റ് ടെസ്റ്റ് ഒരു പരീക്ഷണ വെയര് ")
Added test suite in evas_test_textblock.c file.
Reviewers: tasn
Subscribers: subodh6129, cedric
Differential Revision: https://phab.enlightenment.org/D3311
This is really just a safety measure, as we always just check if the value
is true. However, with char the potential values are -1 and 0, and with
Eina_Bool they are 1 and 0, so fixing that.
Thanks to the "sparse semantic parser" for detecting that, and to Stefan
for reporting.
Summary:
Refactoring code of functions e3d_drawable_scene_render,
e3d_drawable_scene_render_to_texture,_shadowmap_render to have possibility
render in scene to additional texture
See T2761
Reviewers: Hermet, cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3142
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
- image_file_colorspace_get
This will be used to determine the best loading format, especially
targeted at edje_cc / edje_decc so we can avoid ETC re-encoding.
- image_data_has
Checks whether the image is currently loaded in (CPU) memory,
and also returns the current colorspace.
Summary:
Use same way using color pick under GLES and not:
Use GL_RGBA texture insted of GL_RED
Generate and pass to engine 3 components color of mesh
See T2761
Reviewers: cedric, Hermet
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3135
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Common part will make savers and loaders shorter and easier for understanding and refactoring.
https://phab.enlightenment.org/T2713 - due to this task.
Should be merged after https://phab.enlightenment.org/D3030
Should be merged to start adding refactored savers and loaders.
Reviewers: Hermet, raster, Oleksander, cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3038
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Move model save/load to common3d.
Here also will be common algorithms and structures which will be used in all loaders and savers.
See task https://phab.enlightenment.org/T2713.
Reviewers: cedric, Hermet, raster, Oleksander
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3030
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: This API builds vertex and index data of convex hull around the given mesh.
Reviewers: raster, perepelits.m, Hermet, cedric
Reviewed By: cedric
Subscribers: cedric, artem.popov
Differential Revision: https://phab.enlightenment.org/D2799
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Fix Segmentation Fault when TEXT part getting resized and when it has
some params (for example ellipsis).
Fix T2640
@fix
Test Plan: Refer to T2640
Reviewers: raster, Hermet, seoz, herdsman, cedric, reutskiy.v.v, NikaWhite
Subscribers: stefan_schmidt, tasn, cedric
Maniphest Tasks: T2640
Differential Revision: https://phab.enlightenment.org/D2944
While cached surfaces is a topic we're discussing recently,
this code is dead right now, and we will have to redesign the
buffer caching better to handle proxies, maps, smart objects, etc...
When the no_render flag was set on a proxy source, the object would
not be visible, but it would also not render inside the proxy surface,
which completely beats the purpose of this flag. This patch makes
the objects render inside a proxy surface.
Typos, lack of NULL check, excessive sizeof(type) not matching
the object type, no border set, etc... This all lead to a crash
and then no render (with an error message and then without...).
This also simplifies the implicit loading of ETC1 as ETC2 when
supported by the driver.
@fix
Summary:
Fix memory leak
Delimiter string is being saved using
eina_stringshare_replace without any del or free
when object is deleted.
@fix
Test Plan: NA
Reviewers: cedric, tasn, herdsman
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3201
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Fix memory leak
Delimiter string is being saved using
eina_stringshare_replace without any del or free
when object is deleted.
@fix
Test Plan: N/A
Reviewers: tasn, herdsman
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3175
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
In evas table that homogeneous mode is turned off,
the size of items in cells, whose rowspan or colspan is larger than 1
and horizontal or vertical padding exists, are miscalculatd.
T2655
@fix
Test Plan: elementary_test "Table Padding"
Reviewers: Hermet, cedric
Subscribers: cedric, DaveMDS, Hermet
Differential Revision: https://phab.enlightenment.org/D3192
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
evas_object_clipees_has is far cheaper than evas_object_clipees_get in case of checking if
clipees exist or not. This should improve the performance in case of large set of clipees.
@fix
Evas_Object_Filter_Data has a bool for 'async' at the end of the
struct. This field was missing from the initialization of
'default_state'
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
As spotted by @FurryMyad I inverted the logic for source_clip.
This should restore the proper behaviour while keeping my previous
fixes working. See D2940.
Actually copying max is pretty useless and super slow. We usually have something
like 1024 slot in a context, but a very small amount of them are acutally active.
It would be better to actually do some kind of copy on write technique here, but
as Eina_Cow doesn't handle array and we are close to a release, let's be
conservative.
In a rare situation the filter would access an invalid buffer.
Solution: Stop messing with buffer references by properly
referencing and releasing them when not needed, rather
than stealing references and hoping for the best. (There were
flags tracking stolen references, but that was still madness)
This was broken because the wrong image size was used
in the proxy's fast path (proxy of another image).
Why did snapshot use a specific surface_w,h instead of
reusing the usual cur->image.w,h? (@cedric)
Simplify code.
If the filtered object (text or image object) was deleted, its
output image (cached inside the filter data) would be freed
immediately. This could cause crashes in case of async rendering.
@fix
If the textblock object was not visible in the main canvas, but
still needs to be rendered in a proxy surface, then _relayout may
not have been called. This forces generation of paragraphs based on
the current geometry.
This patch is ugly. I know. This is evas render :)
This is an ugly hack to fix an issue reported in D3114. I don't
understand how the proposed patch could even fix anything given
the current situation.
Test case:
- Create edje object with textblock inside
- Clip out edje object (--> all children become not visible)
- Take textblock from edje and set it as source of a proxy
- Mark proxy as source_clip
Result: Nothing visible.
Expected: Proxy should contain the textblock object, since
source_clip means we ignore the edje object's clipper, and
only care about the textblock's clipper (entire canvas).
Here's what was happening:
- During a first pass, textblock is not visible, cur->cache.clip
is calculated, marked as clip_use=1 with geom 0,0 0x0
- In a second pass, the proxy is rendered, which needs to draw
the textblock in a surface. But cache.clip was used and it was
wrong.
Solution:
- Ignore cache.clip when rendering inside a proxy. I'm pretty
sure there are other instances where cache.clip will still
be a problem.
Problem: textblock never called relayout since it was not
visible.
Conclusion: cache.clip needs to die. It's a legacy optimization
that now causes more issues than it fixes.
the overhead didnt show up in y tests. do show up with certain
expedite tests. hmmm. last time i messed with region code it was
actually same speed as tiler. bonus was it was fully accurate.
calculating updates has been re-rendering centers fo solid rects if
the solid rects moves/resizes with a lot of overlap and objects
underneath changes - their changes show through. this fixes that
@fix
Summary:
There were warnings after adding primitive in the same frame more then once, the check was added to avoid it
@fix
Reviewers: cedric, raster, Hermet
Subscribers: cedric, artem.popov
Differential Revision: https://phab.enlightenment.org/D3090
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Fix children size and position calculation when padding is used
For each child size calculation padding is adjusted
but box height should include padding.
Secondly, x and y position of children should not include
the vertical and horizonatal padding as child size has already
included the given paddings.
@fix
Test Plan:
Please modify test_box.c file in
function test_box_vert2 as follows:
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
elm_box_padding_set(bx, 50, 50);
elm_box_layout_set(bx, evas_object_box_layout_flow_horizontal, NULL, NULL);
evas_object_show(bx);
Now,
1. open elementary_test
2. box
3. Box vert 2 (observe box is broken)
4. Try resizing the window (observe)
Reviewers: raster, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3049
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
valgrind pointed this one out. we access freed memory when we dup a
context because the context CONTAINS ptrs to things like rects for
cutouts. we didnt dup these. use the proper context dup call (and
properly ref pixman color image too). this was a random bug/crash
waiting to happen and valgrind caught it. suprising it hasnt turned up
before :/
@fix
All examples and docs point to using only the dirty flag in
order to trigger a redraw of an Evas GL surface. The commit
21c4352823 broke this behaviour (for a good reason, but not
related to Evas GL).
This is a compatibility fix.
While this seems to go against the rest of the API (because we
always pass in the Evas GL object), there is no way right now
fully restore a context if there are multiple Evas GL objects.
For instance, an app can use Evas GL from an Elm GLView, and also
use Cairo with another Evas GL at the same time. In that case Cairo
needs to restore the previous Evas GL but the library had no way
of getting the current Evas GL. This is the equivalent of
eglGetCurrentDisplay().
@feature
The old naming is inconsistent with the rest of the EFL. This fixes that.
Since we are already breaking ABI (and possibly API), we should fix this too.
This hasn't been used for a while. Since we are going to break Eo a bit anyway
it's a good opportunity to drop this.
This may cause a slight performance issues with legacy events, such as
smart callbacks. This shouldn't really be a problem as we've migrated away from
them. If it does, we need to migrate the remaining parts. Only relevant
for callbacks that are added before the classes are created, which
shouldn't be possible except for smart, only for old evas callbacks.
marking images as dirty is only meant to have the pixle get callback
called IF rendered. you ADD update regions to get it to be called.
this is how it has always meant to work, but evas image objects where
adding updates just if dirty. this ends up with e as a compositor
redrawing ENTIRE eindows if even a single blinking cursor is blinking.
oh so bad.
@fix
Summary:
Evas_Smart_Data retrieved from eo_data_scope_get might be NULL
in case the input Evas_Object is not valid Evas_Object.
The smart data gets dereferenced and can cause a crash if its NULL
Hence return in case smart data is NULL.
@fix
Signed-off-by: Mrunal Sovani <mrunal.s@samsung.com>
Reviewers: raster, Hermet, tasn
Reviewed By: tasn
Subscribers: singh.amitesh, cedric, sachin.dev
Differential Revision: https://phab.enlightenment.org/D3106
this optimizes draw ctxt cutouts by skipping small ones and
remembering the last cutout added so it isn't double-added as well as
extending the minimum cutout array to 512 and going up in blocks of
512 instead of 128. also optimize the clipping code a bit more.
this move evas tiler that does update handling to use fully correct
regions using region.[xh]. this also removed old unused regionbuf code
and a bunch of commented out code no longer needed. much simpler now
and easier to maintain.
Summary:
Firstly it was the main point of in CID1323089 from Coverity, but this variable is unused. So I've deleted it.
CID1323089
Reviewers: raster, Hermet, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D3067
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Test case: elementary_test -to "Evas Map 3D"
The cube was clipped to its top-left corner.
What's really weird is that this code patch is for non-mapped
objects.
@feature
this should unload mainloop some more and have pixel upload now in a
thread - same as rendering. this eeems to work where i see it so let's
put this in and see with further testing.
Summary:
Eina_Rectangles are removed from pixel_updates list without eina_rectangle_free during render pre stage.
@fix
Test Plan: check memory leak.
Reviewers: cedric, jypark
Subscribers: jypark, cedric
Differential Revision: https://phab.enlightenment.org/D3006
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Inside a proxy, clipping information might be wrong since the
source object may be at a different position than within
the proxy. If source_clip is not set, then we need to discard
all clips that are outside the proxy context.
So we just propagate the clip information inside the current
draw context, and even recurse from clipper to clipper to
find the final state of clipping.
Map and proxies and others (who said masks?) should definitely
rely more on the same model.
This code is not a mess. At all. You gotta love evas_render.
Use context_dup to inherit from previous contexts in a clean
manner. This removes the need for restoring the previous
clip information.
Plus, this commit removes lines of code so it must be good, right?
After clip_image_get, the old mask may be replaced by a new one,
and unref'ed, but it is later on set back as the context mask image.
Maybe it's possible that there was 0 reference and the image
got freed in between.
No idea how to test this.
@fix
Summary: It is counting here, so we can avoid using glsl functions dFdx, dFdy.
Reviewers: cedric, raster, Hermet
Subscribers: Oleksander, cedric, artem.popov
Differential Revision: https://phab.enlightenment.org/D2923
Summary:
Change recalculation coordinate for pick to depend on size of viewport, not from
scene data.
Due to not correct working pick in case resize view window.
@fix
Reviewers: cedric, Hermet
Reviewed By: Hermet
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2950
Looks like it was assumed that an fnode->orig_format always ends with a
'/' character if the fnode is an own_closer.
The problem is that a paragraph separator ("ps" and "br" - the latter in
legacy newline mode) is also an own_closer, but might not have '/' at the
end, so decrementing the length is wrong.
This fixes T2654. The example markup had "br" read as "b", which led to
a mismatch with the "font_weight=Bold" tag. Coincidentally, "ps" was not
affected as there was no matching "p" in the style.
@fix
Summary:
evas_3d: removed unnessecary defines
Evas_Real was allready defined.
The typedefs of the Eo types can be avoided by fixing the include order
Reviewers: cedric, stefan_schmidt, tasn
Reviewed By: stefan_schmidt, tasn
Subscribers: stefan_schmidt, cedric
Projects: #efl
Maniphest Tasks: T2658
Differential Revision: https://phab.enlightenment.org/D2974
Async rendering doesn't have a main loop cleanup function. The only one
being called is in the rendering thread. I wrongly assumed in my previous
patch that render_post on an object was called after the async render was
done which is obviously not the case as pointed by Subhransu. This patch
now wait for the async rendering to be done.
For script runs that start with an UNKNOWN character, the whole
run was mistakenly identified as script type UNKNOWN.
Also, refactored code a bit for readability.
Fixes T2670.
@fix
In order to do that, avoid creating multiple Buffer instances
when pointing to the same proxy source. This fixes buffer.width
and buffer.height in Lua.
NOTE: it would be nicer to setup a specific context for each snapshot
and walk all the child below. If any of them did change, only trigger the
full redraw in that case (and of course only if a filter with blurr does
use it somewhere).
This should theorically work, need some test. Design is easy to understand. Render
every part of a snapshot object by rendering the content below it, before rendering
the stack above it using that object content.
Summary: This is a logic of tangent data calculation, we need it in order to avoid bugs with normal mapping after building with opengl=yes.
Reviewers: Hermet, raster, cedric
Reviewed By: cedric
Subscribers: Oleksander, cedric, artem.popov
Differential Revision: https://phab.enlightenment.org/D2802
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This fixes filters on Ubuntu 32 bits.
This was one hell of a weird bug to track down. Everything worked
like a charm on my 64 bit machines, but filters would simply fail
for no good reason: a safety check sees a NULL pointer when clearly
it was properly allocated.
Just after entering a function, the content of an RGBA_Image would
change, even though there was no memory write there. This made the
image data pointer NULL, and filters would fail miserably.
So I printed out the contents of the RGBA_Image, they changed. But
the memory itself had not changed. The size of the struct itself
had changed when jumping from one file to another! But its definition
had not! Non-sense!
Unless of course a system header file was included before config.h
and ino_t or off_t would switch between 32 and 64 bits...
@fix