Summary:
this occurs when orientation is set during image construction
@fix
Reviewers: segfaultxavi, cedric
Reviewed By: cedric
Subscribers: cedric, #reviewers, #committers
Tags: #efl_rendering
Differential Revision: https://phab.enlightenment.org/D8916
Summary: the macro GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS can be undefined (see gst core doc), hence the if statement may have no body
Test Plan: compilation
Reviewers: zmike, raster, cedric, Hermet
Reviewed By: Hermet
Subscribers: #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8939
Small patch to check if the video driver supports drmWaitVBlank. If
not, we can fall back to timer based animators and avoid freezing (due
to usage of vsync'd animators).
@fix
Summary:
This commits prepares the tree in order to mess with the events in the
Efl.Ui.Clickable event. Events which have been emitted in a none legacy
widget, are now emitted either with evas, when the widget is legacy due
to inheritance. Or via the normal event and normal event functions.
In case the widget is a legacy only widget (not used at all in the new
api), then the events are for now emitted with
evas_object_smart_callback_call.
Cases where event handlers have been added to legacy widgets, smart
events are now used, and not the eo one anymore.
ref T7844
Depends on D8813
Reviewers: cedric, zmike, segfaultxavi
Reviewed By: zmike
Subscribers: #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7844
Differential Revision: https://phab.enlightenment.org/D8816
Summary:
This patch improves png quality when image uses scale-down at image loading.
Since current scale-down logic just works like point sampling,
image result could be wholely different,
Simply, if source data is consist of continous white and black pixels,
and scale down factor is 2, the sampled data would be only white,
and lose all black pixels, or vice versa.
The result can be unexpected by users.
Even current jpeg scale-down works with interpolation.
Before:
{F3711651}
After:
{F3711652}
Original:
{F3711653}
Reviewers: cedric, raster, #committers, kimcinoo, jsuya
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8788
there are some specific defines and cflags needed for these builds
to succeed and provide the expected functionality
Depends on D8733
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Reviewed-by: Vincent Torri <vincent.torri@gmail.com>
Differential Revision: https://phab.enlightenment.org/D8734
these defines must be set in order to provide the expected engine functionality
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D8733
Summary:
evas_gl_common_image_content_hint_set makes RGBA_Image NULL if content hint
is EVAS_IMAGE_CONTENT_HINT_DYNAMIC with 'sec_tbm_surface' and 'egl_tbm_ext'.
efl_file_save(_efl_canvas_image_internal_efl_file_save_save) does not work
in this case because ENFN->image_data_direct_get returns FALSE.
This patch makes ENFN->image_data_direct_get work but you need to free its
returned data after using it.
Reviewers: Hermet, jsuya
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8516
Summary:
This patch improves png quality when image uses scale-down at image loading.
Since current scale-down logic just works like point sampling,
image result could be wholely different,
Simply, if source data is consist of continous white and black pixels,
and scale down factor is 2, the sampled data would be only white,
and lose all black pixels, or vice versa.
The result can be unexpected by users.
Even current jpeg scale-down works with interpolation.
Before:
{F3711651}
After:
{F3711652}
Original:
{F3711653}
Reviewers: cedric, raster, #committers, kimcinoo, jsuya
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8788
Previously, mannual scale down logic was too primitive,
it copied pixel data each channels. Obviously, it's ineffective.
We know the general case - 4 bytes channel which is the most usage,
If loader copies data per four bytes, instructions could be reduced.
When I load scale-downed image(original 8k), about 0.02 secs was reduced by this.
This is a prepartion patch to support msaa in wayland.
ui window needs to deliver engine options (stencil, depth, msaa bits)
to evas engine side, ecore_evas_wayland_egl should have the argument to pass.
Evas module loading code assumes engines are installed in
evas/modules/engines.
As part of the fixes building evas with meson, the engines are under a
subproject named evas/engines, causing the modules to be installed in
libdir/evas/engines/modules by default.
This commit adds a override of the directory the engine modules are
installed to use the correct location.
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D8693
Coverity reports, and reading the code confirms, that the variable
'out' has already been freed (or is NULL) when reaching this line of
execution.
Fixes CID1382851
@fix
the directory it was installed to was <prefix>/include/evas/engine-1/
instead of <prefix>/include/evas-1/ which is wrong. This fixes
enlightenment building.
Reviewed-by: Lauro Neto <lauromauro_>
Differential Revision: https://phab.enlightenment.org/D8692
Double check patch again, since my wrong logical thinking,
Every width must be considered to rounding up fiting 8 bits.
this new compuation must be correct.
Revert "evas wbmp: remove unnecessary size overflow."
This reverts commit 1061d0a751.
Revert "evas image: check format more strong way for wbmp."
This reverts commit 68fe9ec6bf.
this caused wbmp files to no longer be loadable
ref T7824
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D8689
Summary: with this commit you can compile efl with -Wl,-z,defs.
Reviewers: zmike
Reviewed By: zmike
Subscribers: simotek, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8677
wbmp format doesn't have any tags for verifying file header,
It's easy to pass other format headers if they have the first 1 byte 0x0,
This ocassionally brings wrong result (= succeeed loading image),
if unknown file format is tried.
So, to make it sure, here verify the size of image additionally.
if the image size is not expected, It returns fail as the result.
This problem is actually happened in this scenario.
open any mpeg file with elm_image.
elm_image_file_set() will return true though it fails to read data.
since wbmp make it pass to succeed.
@fix
Summary:
it FINALLY happend! With this python bindings should be able to work
again with a meson build, you can also enable b_lundef right now. And it
appears to work, with this we can also get another step closer to a
windows build.
Depends on D8669
Reviewers: zmike, stefan_schmidt, cedric, vtorri
Reviewed By: zmike
Subscribers: #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8670
Summary:
this is required later on, where we want to build the engines
undependend from image loaders etc.
Depends on D8668
Reviewers: zmike, stefan_schmidt, cedric, vtorri
Reviewed By: zmike
Subscribers: #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8669
Summary:
with this we don't have any static module anymore in the engine
directory. This means either *all* modules in the enignes directory are
static OR shared. There is no mixture anymore. This is a requirement for
the directory to be build whenever we want it to be build.
Depends on D8667
Reviewers: zmike, stefan_schmidt, cedric, vtorri
Reviewed By: zmike
Subscribers: #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8668
Summary:
sooo, gl_common stuff is only used by gl_generic, (and maybe others.
However, it is build static anyways and only linked into gl_generic).
This means, only software_generic is still in here and we can remove one
special case from the build instructions.
Reviewers: zmike, stefan_schmidt, cedric, vtorri
Reviewed By: zmike
Subscribers: #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8667
Summary:
Svg parser gets transformation matrix information from svg.
If there is a matrix, calculate matrix operations
on the start and end points of the gradient.
TODO: We should implement gradientTransform of radialGradient.
Test Plan: N/A
Reviewers: Hermet, smohanty
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8663
Summary:
x1, y1, x2 and y2 of Svg_Linear_Gradient structure must be a percentage value.(0 ~ 1)
but these variables are reused with efl_gfx_gradient_linear_start/end_set/get
and duplicate operations occur.
Test Plan: N/A
Reviewers: Hermet, smohanty
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8662
Summary:
GL engine has used integer coordinates system since it's born though
OpenGL basically uses floating point vertex coordinates system.
There were many dissatisfaction, complaints about this
since object's transition is jiggled, not perfectly smooth.
It's obvious because Positioning must be stepping with integer units
without any subpixel rendering.
Our gl engine currently supports msaa options and evas map allows to
have double precivion coordinates system, our engine must do handle this over as well,
to work together.
If you don't like change,
We could switch behaviors optionally (turn on, only when msaa is enabled)
But I think it's pointless using integer coordinates system in GL thesedays.
It just make code complex to maintain.
There will be an additional patch coming for SW backend map behavior soon.
Left: before patch
Right: after patch
{F3694624}
Reviewers: #committers, raster
Reviewed By: #committers, raster
Subscribers: raster, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8552
evas map has used integer coodinate system since it's born,
since object's transition is jiggled, not perfectly smooth.
It's obvious because Positioning must be stepping with integer units
without any subpixel rendering.
Currently, this patch is a sort of preparatory to improve this,
only valid for high-quality evas map (smooth + anti-aliasing)
since commit a1addad60e, To add myself as a sub object of parent object will be
done in Efl.Ui.Widget constructor.
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D8280
Summary:
meson and autotools were a bit out of sync with this, resulting in
unexpected behavior
Reviewers: billiob
Reviewed By: billiob
Subscribers: billiob, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8641
Summary:
Even if linear or radius gradient is declared,
it will not be output if there is no <defs/>
It can be supported because it stores the declared gradient in loader.gradient.
Test Plan: N/A
Reviewers: Hermet, smohanty
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8591
Summary:
The initial value of gradientUnits is objectBoundingBox.
If userSpaceOnUse is declared, change user_space to true.
We do not have to recalculate each value by this change.
The default unit for linear x1, y1, x2, y2 is percentages.
This can be a value from 0 to 1. If svg want to use a value between 0 and 100, it must have a '%' symbol
That is accroding to gradientUnits in here
https://www.w3.org/TR/2015/WD-SVG2-20150915/pservers.html#LinearGradientElementGradientUnitsAttribute
Test Plan:
cd ./src/examples/edje
edje_cc -beta svg.edc && gcc -o svg-test svg-test.c `pkg-config --libs --cflags evas ecore ecore-evas edje`
Reviewers: Hermet, smohanty
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8589
Summary:
The default unit of gradient value is percentage.
This can be a value from 0 to 1.
If svg use the '%' symbol, we must divide by 100.
And it must be calculated the same as any other case.
Test Plan: N/A
Reviewers: Hermet, smohanty
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8590
Summary:
edje_cc calls epp, so we should not only add edje_cc to the depends on
target, but rather also ensure that epp is availble. Additionally, this
removes unneccessary depends on declarations when we do cross compile.
Depends on D8561
Reviewers: zmike, segfaultxavi, cedric
Reviewed By: zmike
Subscribers: #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8562
Summary:
there have been wrong function calls, that did not work at all, since
the function pointer had the wrong type. This fixes the segfaulting
examples of evas3d. However, they still do not render, at least, they
don't crash anymore.
Depends on D8381
Reviewers: cedric, segfaultxavi, zmike, stefan_schmidt
Reviewed By: zmike
Subscribers: #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8382
Summary:
This patch implements engine support for outbuf_damage_region_set that
we can use to mark a framebuffer as being dirty, and to set the dirty
regions on that framebuffer.
ref T7690
Depends on D8403
Reviewers: raster, cedric, zmike
Subscribers: #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7690
Differential Revision: https://phab.enlightenment.org/D8404
Summary:
Don't use redraws_clear to handle buffer swapping. Buffer swapping
should be done on outbuf_flush. This patch fixes evas drm software
output rotation (along with other patches in the series).
ref T7690
@fix
Depends on D8402
Reviewers: raster, cedric, zmike
Subscribers: #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7690
Differential Revision: https://phab.enlightenment.org/D8403
Summary:
We don't need to use eng_output_resize in this engine as
eng_output_update will take care of that. Also, don't use
redraws_clear to handle buffer swapping. This is part one of software
rotation fixes.
ref T7690
@fix
Depends on D8116
Reviewers: raster, cedric, zmike
Subscribers: #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7690
Differential Revision: https://phab.enlightenment.org/D8402
Summary:
This patch removes the ability to do hardware rotation (it's broken
anyway), and refactors the _drm_rotation_do function to just use
software (ecore_evas & evas) rotation.
ref T7690
Depends on D8115
Reviewers: raster, cedric, zmike
Subscribers: cedric
Tags: #efl, #do_not_merge
Maniphest Tasks: T7690
Differential Revision: https://phab.enlightenment.org/D8116
Summary:
Since we're now going to be shipping some eo classes as stable,
there is no point in keeping the eo api behind a macro, and it
should be enabled by default. Another case is beta classes, but
those are behind the EFL_BETA_API_SUPPORT guard.
This also changes includes around the place where things are
clearly broken (such as an included header needing something
from another header but that other header being guarded, notably
efl_ui_widget.h needing focus manager but focus manager being
behind beta in Elementary.h)
Reviewers: zmike, cedric, bu5hm4n, stefan_schmidt, segfaultxavi
Reviewed By: cedric, segfaultxavi
Subscribers: segfaultxavi, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8322
example:
...
im=evas_object_image_add()
evas_gl_surface_create
...
evas_object_image_native_surface_set(im, xx)-> MAIN CONTEXT
evas_gl_make_current -> CONTEXT A
.....
evas_object_image_size_set(im, x,x) ->WRONG CONTEXT A
evas_object_image_size_set of image have native_surface finally calls
eng_image_size_set function of gl_generic.
eng_image_size_set cannot get the proper context related with
evas_gl_common_image_native_enable.
It ruined gl context and texture of main context has gone wrong.
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D8338
Here is a replacement to use eina_file from a vg obj instance
to map file data by vg loaders.
This brings a benefit that integrated access to load data
between vg object and vg loaders.
Summary:
This enables all the checks unconditionally, without ignoring
classes that don't have an Efl namespace. This required a lot
of beta marking to make it build. It most likely doesn't
mark types correctly, as that is not fully enabled yet.
Reviewers: zmike, cedric, segfaultxavi, bu5hm4n
Reviewed By: segfaultxavi
Subscribers: #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8266
this takes the current generated output from eolian for legacy code in
efl and adds it to the tree, then removes legacy references from the
corresponding eo files. in the case where the entire eo file was for
a legacy object, that eo file has been removed from the tree
ref T7724
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D8208
this takes the current generated output from eolian for legacy code in
efl and adds it to the tree, then removes legacy references from the
corresponding eo files. in the case where the entire eo file was for
a legacy object, that eo file has been removed from the tree
ref T7724
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D8201
this takes the current generated output from eolian for legacy code in
efl and adds it to the tree, then removes legacy references from the
corresponding eo files. in the case where the entire eo file was for
a legacy object, that eo file has been removed from the tree
ref T7724
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D8166
this takes the current generated output from eolian for legacy code in
efl and adds it to the tree, then removes legacy references from the
corresponding eo files. in the case where the entire eo file was for
a legacy object, that eo file has been removed from the tree
ref T7724
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D8163
When we call evas_outbuf_reconfigure (when rotation changes), we need
to update the Outbuf with new values for width, height, rotation, etc.
Failing to do this here causes any rotations applied to the engine to
fail.
ref T7690
@fix
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D8109
so blind use of strncpy was again wrong - it limited to the length of
the src not the dest buffer and gcc warnings pointed out this
silliness. so instead go back to strcpy with proper length checks
before and now it's clear that it's correct and not trying to hide
behind strncpy which was wrong.
there are differences between meson and autotools.
autotools installs them under ${libdir}/ecore_buffer/modules/module/version/ as module.so
Reviewed-by: Marcel Hollerbach <marcel-hollerbach@t-online.de>
Differential Revision: https://phab.enlightenment.org/D7837
the source should be used in the dependency. However, only the generated
header source, not the .c files or we will get duplicated sources.
This is another attempt to fix the build OSX travis failure
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D7896
There was the problem that evas_ector_software_buffer.eo was not arround
but required by the gl_generic engine, this fixes that by adding the
generated source and dependencies to the software_generic dependency.
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D7871
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
the error
```
./src/modules/evas/engines/gl_generic/../software_generic/evas_ector_software.h:31:10: fatal error: 'evas_ector_software_buffer.eo.h' file not found
```
Came up when building efl on osx with meson. This is caused by the fact that gl_generic was build before the .eo files of evas_ector have been created in software_generic, this fixes this race condition by adding a new dependency to avoid that.
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D7831
this came up on travis with osx. However, it should hit everyone, and
its questionable why it did not happened ever before.
Differential Revision: https://phab.enlightenment.org/D7831
Summary:
plug canvases do not have ee->evas, so this fixes unlimited error messages
while also fixing the corresponding functionality
@fix
fix T5536
Reviewers: devilhorns
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T5536
Differential Revision: https://phab.enlightenment.org/D7681
Everything that is owned must have a free function. In commit
1afd3c215f the string was
converted to const(string) it was not const before.
So this is converting back to the old behaviour.
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D7626
This patch does a small refactor of _ecore_evas_new_internal function
to separate canvas setup for gl & software. This was done so that when
we create a canvas on a per-output bases (multi-output support), the
code inside _ecore_evas_new_internal will be cleaner and easier to
follow.
NB: No real functional changes here until muti-output lands
Differential Revision: https://phab.enlightenment.org/D7679
In order to support per-output ticking, the drmModePageFlip and
drmModeAtomicCommit functions need to pass the actual Output as data
to the pageflip callback so that the pageflip callback function can
pass the proper rectangle to ecore_evas_animator_tick
Differential Revision: https://phab.enlightenment.org/D7678
Summary:
Since glib 2.58 g_type_class_add_private is deprecated and this throws
an ugly warning in our build. Not being a glib expert I based this on
patch in freeverb which solves the same issue for them:
90625953f2
Videos in rage are still playing fine for me, but double checking during
review would be appreciated.
Reviewers: raster
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7638
lidrm is defined in different locations, which causes a unexpected behavior.
this patch fixes it in advance.
Differential Revision: https://phab.enlightenment.org/D7567
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
wayland window geometry isn't currently being handled properly, but the
ecore_evas geometry should be correct and coherent.
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
Reviewed-by: Chris Michael <cp.michael@samsung.com>
Differential Revision: https://phab.enlightenment.org/D7435
We looked this up with dlsym, so I guess we should use that even though
the direct call seems to work just fine most of the time.
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
Reviewed-by: Chris Michael <cp.michael@samsung.com>
Differential Revision: https://phab.enlightenment.org/D7433
I'm going to deal with some ugly geometry problems in the getter func
shortly.
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
Reviewed-by: Chris Michael <cp.michael@samsung.com>
Differential Revision: https://phab.enlightenment.org/D7432
This implementation uses Ector_Buffer to generate mask image from vg container,
and pass it to Ector engine. Ector renderer could blend this image as a mask.
Yet only vg container works as a mask, we could extend shape to support masking later.
Still vector gl drawing is not completed, We use software ector buffer to draw on it.
This is on progessing.
There was a big trouble that vg cache didn't free cached data properly.
Plus, there was a unnecessary copy of vg tree data.
This revised version is a improvement of our evas vg cache
in stable and optmization.
Summary:
GLPIPES is proved to use since it's been used for many years as the default.
On the other hand, single-line routine hans't, acutally it's not maintained properly.
Even this single-line routine doesn't compileable right moment.
This patch is one refactoring to clean up code that's not valuable to maintain.
Reviewers: #committers, raster, cedric, ManMower
Reviewed By: #committers, ManMower
Subscribers: ManMower, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7328
Summary:
When we meets a new shader program in shape_context_push(),
it loads a shader binary, if it is necessary, create a new program for the shader.
In this step, the current program state could changed to this new one.
But still our gl context by shader_flush() could keep the previous program for next shader flush.
But it doens't know current program was changed by dropping by.
Here is a simple scenario:
1. evas_gl_common_context_image_push():
This image requires Program A. it calls evas_gl_common_context_push() internally.
then shader_array_flush() instantly.
It stores the current context including shader program(Program A)
2. evas_gl_common_context_xxx_push():
call evas_gl_common_shader_program_get().
xxx draws first time, it loads a new shader program.
Now this changed the current program to a new instant one.
...
3. shader_array_flush():
draw image which requires Prorgam A (No.1).
Unfortunately, stored context is same to this.
So, it skips some gl context setting including shader program.
@fix
Reviewers: #committers
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7309
Theoretically this shouldn't be necessary, but it may be possible for
a backend to give us a visual with translucency even if we didn't ask
for one.
also better comments.
Differential Revision: https://phab.enlightenment.org/D7248
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
The module name and installation directory where previously picked from
the last engine being processed instead of being unique to the VNC Server
module. This patch ensure that we do not write over another engine and
break everything when the VNC Server support is turned on.
Reviewed-by: Marcel Hollerbach <marcel-hollerbach@t-online.de>
Differential Revision: https://phab.enlightenment.org/D7290
warnings now are being super picky with:
../src/modules/evas/engines/software_x11/evas_xlib_buffer.c: In
function ‘evas_software_xlib_x_output_buffer_new’:
../src/modules/evas/engines/software_x11/evas_xlib_buffer.c:306:56:
warning: cast between incompatible function types from ‘void
(*)(Display *, XErrorEvent *)’ {aka ‘void (*)(struct _XDisplay *,
struct <anonymous> *)’} to ‘int (*)(Display *, XErrorEvent *)’ {aka
‘int (*)(struct _XDisplay *, struct <anonymous> *)’}
[-Wcast-function-type]
ph = XSetErrorHandler((XErrorHandler)
can we really match a struct <anonymous> somehow? i don't think so...
so... void to the rescue.
so gcc now is being very picky about types. since we'r ereallyjast
throwing void *'s around for pointers to funcs and looking them up by
hand - use void *'s to avoid warnings.
so getting context at least on some dviers is expensive. it may really
impact cpu usage a lot (in this cate getpid() was being called by the
nouveau drivers and that can be expensive. it is on ARM as it's a full
syscall and 1-2% of cpu time was just getting pid all the time thanks
to this...
@opt
This uses the meson/ninja depfile functionality + eolian to make
sure proper dependencies between generated files and .eo files
are managed, to ensure consistent re-generation of all generated
files that are affected upon .eo file modification.
For custom rules with multiple outputs, Ninja currently does not
support depfiles. Therefore, split those into two custom rules
so that the depfiles functionality can be enabled. While this
is ugly and slows down the process a little by having to invoke
Eolian twice instead of once, it has to be done and it's still
better than what we had in Autotools anyway.
Differential revision: D7187
Fixes T6700.
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
Summary:
When we reset of texture for a valid object,
this object cache size become -1 x -1 with null texture.
Later, we reset a new texture of the object,
Its texture size could be -1 x -1.
That brings to incorrect result drawing.
Can't see any points of using cache size there.
This bug was introduced by 9e01cf2698
@fix
Reviewers: #committers, raster
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7077
Summary:
We're doing this all wrong.
We've asking for "at least 1 bit" of A, R, G, B color depth.
ARGB2101010 fits that nicely, so mesa on radeon gives it to us.
This only fixes the drop shadows though, it's entirely possible that
a fullscreen window without alpha would get ARGB2101010 instead of
XRGB8888, so this code probably needs a rethink for multiple engines.
Reviewers: devilhorns
Reviewed By: devilhorns
Subscribers: devilhorns, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7022
It is now similar to how other modules are handled.
Differential Revision: https://phab.enlightenment.org/D7016
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
Summary:
Current preloading is too buggy since it's on thread-based.
This is a fundamental improvement to fix a bug.
The critical issue here is,
When preloading img object suddenly cancel its preloading,
the object possibly cannot render image next then because
renderer doesn't have any idea when async cancelling is
finished. Renderer just tries to render regardless of
image loading status, and this could occur no-texture(in gl case)
image object.
So, here improvement is, adding a notification for async cancelled
so that putting img objects to redraw images properly after their preloading is
cancelled.
The best scenario to reproduce this bug is this one.
Evas_Object *img2 = evas_object_image_filled_add(evas);
evas_object_image_file_set(img2, "test.jpg", NULL);
evas_object_image_preload(img2, EINA_FALSE);
evas_object_resize(img2, 200, 200);
evas_object_show(img2);
Evas_Object *img = evas_object_image_filled_add(evas);
evas_object_image_file_set(img, "test.jpg", NULL);
evas_object_image_preload(img, EINA_FALSE);
evas_object_move(img, 200, 200);
evas_object_resize(img, 200, 200);
evas_object_show(img);
evas_object_image_preload(img2, EINA_TRUE);
If you run this on gl backend, occasionally happens rendering fail.
Yet there other bugs on preloading feature....
@fix
Reviewers: #committers, raster
Subscribers: cedric, #reviewers, #committers, zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6919
Summary:
Adding cache targets in other modules are inproper.
This can't be managed by cache module inside.
One representive scenario is,
when preload cancel is triggered, preload canceling sequence
can't be performed properly because cache targets implicitly were
increased by backend modules.
And then, Cache itself couldn't get notified it.
see this condition.
if ((!ie->targets) && (ie->preload) && (!ie->flags.pending))
in _evas_cache_image_entry_preload_remove()
Consequently, I move preloaded callbacks to sync with adding cache targets,
not to add by backed engines themselves.
This will bring Cache to manage cache targets properly.
Reviewers: #committers, raster
Subscribers: cedric, #reviewers, #committers, zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6912
Summary:
That redundant code just made code complex.
This is one of intermediate patches for preload
Reviewers: raster, #committers
Subscribers: cedric, #reviewers, #committers, zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6907
Summary:
While debugging a problem,
found a hole that upload texture twice unnecessary.
Here is the scenario.
Set up two objects with same image resource plus both preloading - obj1, obj2;
After image preloading,
_evas_cache_image_async_end() will be triggered.
=> ie->flags.update_data = true;
then first obj1 is gonna drawing,
Since it doesn't have any texture uploaded yet,
it will create a texture and upload texture data as well.
along with below sequence.
=> else if (!im->tex && !ie->load_error)
After it, second obj2 is gonna drawing.
But actually its texture is already readied after obj1,
it doesn't need to upload texture agin.
But still ie->flag.update_data == true, it will do dumbly.
Reviewers: #committers, devilhorns, raster
Subscribers: cedric, #reviewers, #committers, zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6902
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
Summary:
wayland transparent func was replaced with alpha's.
By this, transparent common attribute is no more valid,
ecore_evas_transparent_get() doesn't work.
This is a regression bug by 5af84afced
Reviewers: ManMower, devilhorns
Reviewed By: ManMower, devilhorns
Subscribers: cedric, #reviewers, #committers, zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6856
Summary:
Map context missed setting texture target.
I guess this is one of regression bugs in gl backend.
When shader is flushed, it sets invalid texture target with map texture.
That caused blank map rendering, this could be observed temporary
because gl pipe contexts are reusable and missing texture target means,
it could use previous texture target values that mostly have GL_TEXTURE_2D.
@fix
Reviewers: #committers, ManMower
Reviewed By: #committers, ManMower
Subscribers: ManMower, cedric, #reviewers, #committers, zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6818
Summary:
draw_block should only be unset if the event is triggered by the wm
or the window is an override, otherwise it prematurely begins rendering
the window at a size which may or may not be accurate
ref T7008
Reviewers: devilhorns, ManMower
Reviewed By: ManMower
Subscribers: ManMower, cedric, #reviewers, #committers
Tags: #efl_display_system
Maniphest Tasks: T7008
Differential Revision: https://phab.enlightenment.org/D6793
Summary:
The line prior to this damages the canvas and should result in a render
anyway.
Forcing a manual render here (without regard to the manual_render_set
state) will cause a post render callback to fire for clients that
think they've disabled automatic rendering.
fix T7275
Reviewers: devilhorns
Reviewed By: devilhorns
Subscribers: devilhorns, cedric, #reviewers, #committers, zmike
Tags: #efl
Maniphest Tasks: T7275
Differential Revision: https://phab.enlightenment.org/D6809
Summary:
The animator timestamps were only getting the offset applied when they
came from page flips. The "early tick" logic failed to apply the offset.
This likely only changes behaviour on vmware's graphics stack, and
only the env var ECORE_EVAS_DRM_GPU_CLOCK_WRONG is set.
Reviewers: devilhorns
Reviewed By: devilhorns
Subscribers: bu5hm4n, cedric, #reviewers, #committers, zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6792
Summary:
When we BAIL from the configure callback with an immediate ack we don't
properly update state, commit the ack, or allow ecore_wl2 to process
a deferred ack_configure that happened during async rendering.
Using a commit here instead should update internal state properly.
ref T7243
Depends on D6783
Reviewers: zmike
Reviewed By: zmike
Subscribers: cedric, #reviewers, #committers, zmike
Tags: #efl
Maniphest Tasks: T7243
Differential Revision: https://phab.enlightenment.org/D6784
Summary:
This reverts commit a61f254f19.
and a follow up commit that removed some warnings
Apparently this is instrumental in enlightenment's window maximize
animation processing.
The removed bits would force an ack configure when an inbound
configure didn't result in a change that would cause a re-render.
Since this calculation needs knowledge of state ecore_wl2 doesn't
track, it does need to happen here.
ref T7243
Reviewers: zmike
Reviewed By: zmike
Subscribers: cedric, #reviewers, #committers, zmike
Tags: #efl
Maniphest Tasks: T7243
Differential Revision: https://phab.enlightenment.org/D6783
Summary:
We need to pass the entire pointer, not just 32-bits of it.
Fixes a crash with enlightenment sandbox gadgets where
ecore_wl2_window_alpha_get() is called with an invalid pointer while
trying to display a pop-up.
Reviewers: zmike, devilhorns
Reviewed By: zmike, devilhorns
Subscribers: devilhorns, cedric, #reviewers, #committers, zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6775
Summary:
use the correct pointer when applying the passed parent object in order to
successfully set the parent
ref 78f27a3eff
Reviewers: devilhorns
Reviewed By: devilhorns
Subscribers: cedric, #committers
Tags: #efl_display_system
Differential Revision: https://phab.enlightenment.org/D6757
Summary:
If the compositor drops fullscreen or maximize for us the CSD to change
that state would become broken, as ecore_wl2 thought the window state
was whatever we last set it to from the client side.
Update that state on configure event.
fix T7211
Reviewers: devilhorns, zmike, eagleeye
Reviewed By: devilhorns, zmike
Subscribers: cedric, #committers, zmike
Tags: #efl
Maniphest Tasks: T7211
Differential Revision: https://phab.enlightenment.org/D6684
Summary:
when ecore_evas is resized, get evas' size,
but angle not checked, so put a check.
@fix
Signed-off-by: Umesh Tanwar <umesh.tanwar@samsung.com>
Reviewers: Hermet, devilhorns
Reviewed By: devilhorns
Subscribers: cedric, #committers, zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6627
Summary:
Here opened eina file is just leaked.
close it properly.
@fix.
Reviewers: devilhorns, #committers, zmike
Reviewed By: #committers, zmike
Subscribers: cedric, #committers, zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6549
Summary:
In fixing T7099 I've also allowed the buffer queue to grow quite large,
so now we should prune it back if it's bigger than it needs to be for
a long time.
ref T7099
Depends on D6565
Reviewers: devilhorns
Reviewed By: devilhorns
Subscribers: cedric, #committers, zmike
Tags: #efl
Maniphest Tasks: T7099
Differential Revision: https://phab.enlightenment.org/D6566
Summary:
It's no longer needed in the header because it doesn't change
the size of the structures there anymore.
Depends on D6564
Reviewers: devilhorns
Reviewed By: devilhorns
Subscribers: cedric, #committers, zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6565
Summary:
Instead of allocating a fixed number of buffers immediately, allocate
buffers if needed to render to.
Normally we only need 2 buffers, but we've been allocating 3 to handle
worse case behaviour. As T7099 shows, this is not always enough. We
now cap at a max of 10.
For the normal case where we always use 2 this results in a slight
memory reduction (1 buffer) and a slight renering load reduction
because we pick the oldest buffer to render into.
A future patch will trim the buffer queue if it's been too large for
a long time.
fix T7099
Depends on D6563
Reviewers: devilhorns
Reviewed By: devilhorns
Subscribers: cedric, #committers, zmike
Tags: #efl
Maniphest Tasks: T7099
Differential Revision: https://phab.enlightenment.org/D6564
Summary:
This is just a step towards making it a variable length.
ref T7099
Depends on D6562
Reviewers: devilhorns
Reviewed By: devilhorns
Subscribers: cedric, #committers, zmike
Tags: #efl
Maniphest Tasks: T7099
Differential Revision: https://phab.enlightenment.org/D6563
Summary:
Use pointers instead of an array of structures, since we're going to
replace the array with a list shortly.
ref T7099
Reviewers: devilhorns
Reviewed By: devilhorns
Subscribers: cedric, #committers, zmike
Tags: #efl
Maniphest Tasks: T7099
Differential Revision: https://phab.enlightenment.org/D6562
this has been going on for a while. on nvidia drivers in gles mode on
x11 there is a massive perf drop to like a few fps with enough windows
if we build for egl/gles instead of opengl. it was the re-creating of
eglimages every frame. put a vendor specific workaround for this and
avoid it. it's not needed there anyway. framerate back to 60fps
smoothness afterwards.
@fix
Summary:
This is now totally trivial and needs not exist.
Depends on D6522
Reviewers: devilhorns
Reviewed By: devilhorns
Subscribers: cedric, #committers, zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6523
Summary:
There's no benefit to generating ids instead of just using the
Ecore_Wl2_Window pointer in events.
This has the added benefit of working around a really nasty hash collision
bug when multiple ecore_evas engines are used at once.
ref T7053
ref T6222
@beta_break
Depends on D6521
Reviewers: devilhorns
Reviewed By: devilhorns
Subscribers: cedric, #committers, zmike
Tags: #efl
Maniphest Tasks: T7053, T6222
Differential Revision: https://phab.enlightenment.org/D6522
Summary:
ecore_event_window_unregister(ee->prop.window) is actually *exactly*
the same as ecore_evas_input_event_unregister(ee)
So this sequence just uselessly tries to remove something from an empty
hash table.
Reviewers: devilhorns
Reviewed By: devilhorns
Subscribers: cedric, #committers, zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6521
Summary:
a common use case for mempools is that they get created by a thread but then
exist for the duration of the app's lifetime until shutdown() occurs in the
main thread. there is no reason to have an assert here which blocks that
use case
Depends on D6434
Reviewers: ManMower, bu5hm4n, devilhorns
Reviewed By: devilhorns
Subscribers: cedric, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6435
Summary:
drawing a non-override window before receiving a configure event results
in an unsized window, breaking spec. it also prevents ecore-evas resize
callbacks from triggering, yielding undefined returns from functions which
attempt to get the geometry of the ecore-evas
this patch improves upon the previous version by handling the case of windows
which are created with the correct initial size, bypassing an initial configure
event
there is still a lot of work to be done in this engine to improve/consolidate
resize-related code and ensure protocol correctness
ref T7008
fix T6907
Reviewers: devilhorns, ManMower
Subscribers: cedric, #committers
Tags: #efl
Maniphest Tasks: T7008, T6907
Differential Revision: https://phab.enlightenment.org/D6275
This include is necessary according to POSIX. Without it, build
fails on certain platforms (QNX). It may already be included
implicitly in some of those files, but declare intent.
Fixes T6667.
Summary:
this case would guarantee a crash if the module was ever unloaded
and the event handlers were called, and it leaks otherwise
@fix
Reviewers: ManMower, devilhorns, bu5hm4n
Reviewed By: ManMower, bu5hm4n
Subscribers: cedric, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6296
Summary:
We need to be able to forcibly destroy all surface buffers to make
session recovery work safely for software rendering.
@betabreak
Depends on D6278
Reviewers: devilhorns, zmike
Reviewed By: zmike
Subscribers: cedric, #committers, zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6279
Summary:
this is a longstanding issue which was exposed by recent patches to standardize
object lifecycles. when a native surface is used by multiple images, unsetting
the surface from one image must not destroy the native surface or else the
remaining images
fix T6970
@fix
Reviewers: ManMower
Reviewed By: ManMower
Subscribers: cedric, #committers
Tags: #efl
Maniphest Tasks: T6970
Differential Revision: https://phab.enlightenment.org/D6235
Summary:
code was added which ignores the comment explicitly warning not to
do what was done here
ref 9e01cf2698
ref T6970
==4829== Invalid read of size 1
==4829== at 0x246D8F06: evas_gl_common_image_update (evas_gl_image.c:907)
==4829== by 0x246DAA7B: evas_gl_common_image_draw (evas_gl_image.c:1417)
==4829== by 0x246A2AB6: eng_image_draw (evas_engine.c:1240)
==4829== by 0x6A87842: _draw_image (evas_object_image.c:1403)
==4829== by 0x6A8A1BF: _evas_image_render (evas_object_image.c:2171)
==4829== by 0x6A890C1: evas_object_image_render (evas_object_image.c:1868)
==4829== by 0x6B09C82: evas_render_mapped (evas_render.c:2292)
==4829== by 0x6B0CE90: evas_render_updates_internal_loop (evas_render.c:3079)
==4829== by 0x6B0EACA: evas_render_updates_internal (evas_render.c:3522)
==4829== by 0x6B1087C: evas_render_updates_internal_wait (evas_render.c:3946)
==4829== by 0x6B10A4D: _evas_canvas_render_updates (evas_render.c:3971)
==4829== by 0x6A7A234: evas_canvas_render_updates (evas_canvas.eo.c:212)
==4829== by 0x6A7BBD4: evas_render_updates (evas_canvas.eo.c:758)
==4829== by 0x808A7D8: ecore_evas_render (ecore_evas.c:177)
==4829== by 0x808AA58: _ecore_evas_idle_enter (ecore_evas.c:284)
==4829== by 0x5CC1E46: _ecore_call_task_cb (ecore_private.h:442)
==4829== by 0x5CC1EAE: _ecore_factorized_idle_process (ecore_idler.c:35)
==4829== by 0xBFA4DD4: _event_callback_call (eo_base_class.c:1663)
==4829== by 0xBFA50A6: _efl_object_event_callback_call (eo_base_class.c:1747)
==4829== by 0xBFA514C: efl_event_callback_call (eo_base_class.c:1750)
==4829== by 0x5CC661B: _ecore_main_loop_iterate_internal (ecore_main.c:2352)
==4829== by 0x5CC3F65: _ecore_main_loop_begin (ecore_main.c:1175)
==4829== by 0x5CCC856: _efl_loop_begin (efl_loop.c:83)
==4829== by 0x5CCEF6D: efl_loop_begin (efl_loop.eo.c:28)
==4829== by 0x5CC40DF: ecore_main_loop_begin (ecore_main.c:1248)
==4829== by 0x5480EE: main (e_main.c:1090)
==4829== Address 0x2bfc30f8 is 328 bytes inside a block of size 560 free'd
==4829== at 0x4C30D18: free (vg_replace_malloc.c:530)
==4829== by 0x540AE91: _eina_freeq_free_do (eina_freeq.c:118)
==4829== by 0x540B7B0: eina_freeq_ptr_add (eina_freeq.c:372)
==4829== by 0x6BCD23C: _evas_common_rgba_image_delete (evas_image_main.c:555)
==4829== by 0x6B41538: _evas_cache_image_entry_delete (evas_cache_image.c:205)
==4829== by 0x6B43503: evas_cache_image_drop (evas_cache_image.c:945)
==4829== by 0x6B43F4F: evas_cache_image_size_set (evas_cache_image.c:1166)
==4829== by 0x246D6548: evas_gl_common_image_alloc_ensure (evas_gl_image.c:17)
==4829== by 0x246D8EA8: evas_gl_common_image_update (evas_gl_image.c:869)
==4829== by 0x246DAA7B: evas_gl_common_image_draw (evas_gl_image.c:1417)
==4829== by 0x246A2AB6: eng_image_draw (evas_engine.c:1240)
==4829== by 0x6A87842: _draw_image (evas_object_image.c:1403)
==4829== by 0x6A8A1BF: _evas_image_render (evas_object_image.c:2171)
==4829== by 0x6A890C1: evas_object_image_render (evas_object_image.c:1868)
==4829== by 0x6B09C82: evas_render_mapped (evas_render.c:2292)
==4829== by 0x6B0CE90: evas_render_updates_internal_loop (evas_render.c:3079)
==4829== by 0x6B0EACA: evas_render_updates_internal (evas_render.c:3522)
==4829== by 0x6B1087C: evas_render_updates_internal_wait (evas_render.c:3946)
==4829== by 0x6B10A4D: _evas_canvas_render_updates (evas_render.c:3971)
==4829== by 0x6A7A234: evas_canvas_render_updates (evas_canvas.eo.c:212)
==4829== by 0x6A7BBD4: evas_render_updates (evas_canvas.eo.c:758)
==4829== by 0x808A7D8: ecore_evas_render (ecore_evas.c:177)
==4829== by 0x808AA58: _ecore_evas_idle_enter (ecore_evas.c:284)
==4829== by 0x5CC1E46: _ecore_call_task_cb (ecore_private.h:442)
==4829== by 0x5CC1EAE: _ecore_factorized_idle_process (ecore_idler.c:35)
==4829== by 0xBFA4DD4: _event_callback_call (eo_base_class.c:1663)
==4829== by 0xBFA50A6: _efl_object_event_callback_call (eo_base_class.c:1747)
==4829== by 0xBFA514C: efl_event_callback_call (eo_base_class.c:1750)
==4829== by 0x5CC661B: _ecore_main_loop_iterate_internal (ecore_main.c:2352)
==4829== by 0x5CC3F65: _ecore_main_loop_begin (ecore_main.c:1175)
==4829== by 0x5CCC856: _efl_loop_begin (efl_loop.c:83)
==4829== by 0x5CCEF6D: efl_loop_begin (efl_loop.eo.c:28)
==4829== by 0x5CC40DF: ecore_main_loop_begin (ecore_main.c:1248)
==4829== by 0x5480EE: main (e_main.c:1090)
==4829== Block was alloc'd at
==4829== at 0x4C31A1E: calloc (vg_replace_malloc.c:711)
==4829== by 0x6BCCF2F: _evas_common_rgba_image_new (evas_image_main.c:509)
==4829== by 0x6B41588: _evas_cache_image_entry_new (evas_cache_image.c:261)
==4829== by 0x6B44861: evas_cache_image_empty (evas_cache_image.c:1447)
==4829== by 0x246D845B: evas_gl_common_image_native_disable (evas_gl_image.c:624)
==4829== by 0x253F3C09: eng_image_native_set (evas_engine.c:1234)
==4829== by 0x6A86204: _evas_image_native_surface_set (evas_object_image.c:1021)
==4829== by 0x6A7E110: evas_object_image_native_surface_set (evas_image_legacy.c:509)
==4829== by 0x6A8609A: _on_image_native_surface_del (evas_object_image.c:998)
==4829== by 0x6A55190: _eo_evas_object_cb (evas_callbacks.c:184)
==4829== by 0xBFA4EB7: _event_callback_call (eo_base_class.c:1686)
==4829== by 0xBFA51F8: _efl_object_event_callback_legacy_call (eo_base_class.c:1759)
==4829== by 0xBFA529E: efl_event_callback_legacy_call (eo_base_class.c:1762)
==4829== by 0x6A968ED: _efl_canvas_object_efl_object_event_callback_legacy_call (evas_object_main.c:1229)
==4829== by 0xBFA529E: efl_event_callback_legacy_call (eo_base_class.c:1762)
==4829== by 0x6A55C3D: evas_object_event_callback_call (evas_callbacks.c:413)
==4829== by 0x6A96D3E: _efl_canvas_object_efl_object_invalidate (evas_object_main.c:1279)
==4829== by 0xBFA7BAB: efl_invalidate (efl_object.eo.c:72)
==4829== by 0xBFA0A09: _efl_invalidate (eo_base_class.c:170)
==4829== by 0xBFA2737: _efl_object_parent_set (eo_base_class.c:734)
==4829== by 0xBFA6BDA: efl_parent_set (efl_object.eo.c:12)
==4829== by 0xBFA2537: efl_del (eo_base_class.c:686)
==4829== by 0x6A96082: evas_object_del (evas_object_main.c:1041)
==4829== by 0x2C9D519F: _bar_icon_preview_del (bar.c:762)
==4829== by 0x6A55190: _eo_evas_object_cb (evas_callbacks.c:184)
==4829== by 0xBFA4EB7: _event_callback_call (eo_base_class.c:1686)
==4829== by 0xBFA51F8: _efl_object_event_callback_legacy_call (eo_base_class.c:1759)
==4829== by 0xBFA529E: efl_event_callback_legacy_call (eo_base_class.c:1762)
==4829== by 0x6A968ED: _efl_canvas_object_efl_object_event_callback_legacy_call (evas_object_main.c:1229)
==4829== by 0xBFA529E: efl_event_callback_legacy_call (eo_base_class.c:1762)
==4829== by 0x6A55C3D: evas_object_event_callback_call (evas_callbacks.c:413)
==4829== by 0x6A96D3E: _efl_canvas_object_efl_object_invalidate (evas_object_main.c:1279)
==4829== by 0xBFA7BAB: efl_invalidate (efl_object.eo.c:72)
==4829== by 0x7BE9326: _efl_access_object_efl_object_invalidate (efl_access_object.c:634)
==4829== by 0xBFA7BAB: efl_invalidate (efl_object.eo.c:72)
==4829== by 0xBFA0A09: _efl_invalidate (eo_base_class.c:170)
==4829== by 0xBFA2737: _efl_object_parent_set (eo_base_class.c:734)
==4829== by 0xBFA6BDA: efl_parent_set (efl_object.eo.c:12)
==4829== by 0xBFA2537: efl_del (eo_base_class.c:686)
==4829== by 0x6A96082: evas_object_del (evas_object_main.c:1041)
==4829== by 0x7CD5F2C: _efl_ui_widget_efl_canvas_group_group_del (efl_ui_widget.c:855)
==4829== by 0x6AAD303: efl_canvas_group_del (evas_object_smart.c:1862)
==4829== by 0x7AFF104: _elm_box_efl_canvas_group_group_del (elm_box.c:362)
==4829== by 0x6AAD303: efl_canvas_group_del (evas_object_smart.c:1862)
==4829== by 0x6AABB79: evas_object_smart_del (evas_object_smart.c:1288)
==4829== by 0x6A97179: _efl_canvas_object_efl_object_invalidate (evas_object_main.c:1336)
==4829== by 0xBFA7BAB: efl_invalidate (efl_object.eo.c:72)
==4829== by 0x7BE9326: _efl_access_object_efl_object_invalidate (efl_access_object.c:634)
==4829== by 0xBFA7BAB: efl_invalidate (efl_object.eo.c:72)
==4829== by 0xBFA0A09: _efl_invalidate (eo_base_class.c:170)
==4829== by 0xBFA2737: _efl_object_parent_set (eo_base_class.c:734)
==4829== by 0xBFA6BDA: efl_parent_set (efl_object.eo.c:12)
==4829== by 0xBFA2537: efl_del (eo_base_class.c:686)
==4829== by 0x6A96082: evas_object_del (evas_object_main.c:1041)
==4829== by 0x2C9D41DA: _bar_icon_preview_hide (bar.c:450)
==4829== by 0x5CFE14C: _ecore_call_task_cb (ecore_private.h:442)
==4829== by 0x5CFE5C4: _ecore_timer_legacy_tick (ecore_timer.c:160)
==4829== by 0xBFA4DD4: _event_callback_call (eo_base_class.c:1663)
==4829== by 0xBFA50A6: _efl_object_event_callback_call (eo_base_class.c:1747)
==4829== by 0xBFA514C: efl_event_callback_call (eo_base_class.c:1750)
==4829== by 0x5CFF880: _efl_loop_timer_expired_call (ecore_timer.c:634)
==4829== by 0x5CFF6AF: _efl_loop_timer_expired_timers_call (ecore_timer.c:587)
==4829== by 0x5CC6522: _ecore_main_loop_iterate_internal (ecore_main.c:2317)
==4829== by 0x5CC3F65: _ecore_main_loop_begin (ecore_main.c:1175)
==4829== by 0x5CCC856: _efl_loop_begin (efl_loop.c:83)
==4829== by 0x5CCEF6D: efl_loop_begin (efl_loop.eo.c:28)
==4829== by 0x5CC40DF: ecore_main_loop_begin (ecore_main.c:1248)
==4829== by 0x5480EE: main (e_main.c:1090)
Reviewers: ManMower
Reviewed By: ManMower
Subscribers: cedric, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6234
This reverts commit 7b80038fa7.
JackDanielz asked nicely, but this hasn't been reverted. As this
totally breaks enlightenment (it's black) and this happens on
everythng I've tested (1 laptop, desktop and Xephyr) I'm calling this
patch a dud.
Now... what kind of review is going on here? This hasn't been tested.
What kind of review doesn't build + run things?
for the reasons of poor review and massive horribler fully complete
desktop like breakage ... this gets reverted as master should not be
broken like this.
Summary:
drawing a non-override window before receiving a configure event results
in an unsized window, breaking spec. it also prevents ecore-evas resize
callbacks from triggering, yielding undefined returns from functions which
attempt to get the geometry of the ecore-evas
fix T6907
Reviewers: cedric, raster
Reviewed By: cedric
Subscribers: #committers, vtorri
Tags: #efl
Maniphest Tasks: T6907
Differential Revision: https://phab.enlightenment.org/D6019
Reviewed-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
A reference was taken on these when they were added, so by passing NULL
here we're not allowing that reference to be dropped. This results in
not only leaking the device forever, but also potentially leaving it as
a default device after it's removed so that no new attach will replace it.
Under weston all devices are removed on a VT switch, and when you switch
back the default device is wrong, which leads to problems with events
like "mouse in" which, for legacy reasons, don't take a seat, but
instead look up the default seat.
This allows the delete callback to be fired for the first time ever,
and while I've tried to fix some bugs this has revealed, I'm not
actually sure I've caught them all.
Depends on D6182
Reviewers: zmike
Reviewed By: zmike
Subscribers: cedric, zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6183
Summary:
extn socket should be rendered even if it is not visible to answer client's requests
extn_socket was rendered even if it's not visible for the first render.
however, it's not rendered as expected because there has been changes for ecore evas idle enterer.
so that this patch changes visibility of extn_socket to answer client's requests immediately.
ref D6054
Reviewers: zmike, jypark
Subscribers: cedric
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6167
Summary:
current extn_socket_prepare function logic could run into dead-end
because extnbuf_lock return null on failure of taking a lock.
this patch removes aka latch logic that guide the function to dead-end.
Reviewers: cedric, raster, zmike, jypark
Subscribers: zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6054
Summary:
Seding ipc messages on ews_update_image(which is invoked as a callback of EVAS_RENDER_POST)
can makes ecore main loop awake, because sending ipc messages makes message_queue not empty.
so that this patch prevent seding ipc logic if there is nothing to draw.
Reviewers: cedric, raster
Reviewed By: raster
Subscribers: zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6055
Summary:
We were creating seats with silly arbitray names like seat-11 when
creating a new canvas.
Depends on D6130
Reviewers: zmike, cedric
Reviewed By: zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6131
Summary:
This hasn't been useful in a very long time.
Depends on D6120
Reviewers: zmike, cedric
Reviewed By: zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6121
Summary:
I don't even know what to put here, but I'll try.
wl_egl_window_resize()'s final two parameters indicate new attachment
points for a buffer relative to the previous top left corner. When the
compositor is resizing a window it already handles the corner placement.
Fortunately, compositors seem to ignore the new attach co-ords during
resize, so this code hasn't broken anything. It's just a complicated
NOP.
The new attachment points are intended for use in spontaneous resize,
not drag resize, but the only time these functions are called is for
drag resize.
Depends on D6119
Reviewers: zmike, cedric
Reviewed By: zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6120
Summary:
drawing a window before receiving a configure event results
in an unsized window, breaking spec. it also prevents ecore-evas resize
callbacks from triggering, yielding undefined returns from functions which
attempt to get the geometry of the ecore-evas
ref T6907
@fix
Depends on D6033
Reviewers: vtorri
Reviewed By: vtorri
Subscribers: cedric
Maniphest Tasks: T6907
Differential Revision: https://phab.enlightenment.org/D6034
If we don't ack_configure here, it'll just automatically happen in
ecore_wl2_commit() next time we render anyway.
If we do ack_configure here, we can totally screw up E's internal window
handling.
Removing it seems like a win.
Instead of having elm handle all this stuff, handle it in ee. This fixes
a loooong standing bug where we would always use an alpha enabled surface
because CSD needs shadows - even if we aren't drawing CSD.
Since we don't actually set the color depth at all we can end up with
an RGB565 buffer. We don't ask for depths because apparently the N900
had a problem with this under X.
I'm not aware of any efforts to bring wayland to the N900, so let's do
this normally.
Summary:
"plane" exception value is already filtered at line 1791.
execution cannot reach this statement.
Reviewers: cedric, Jaehyun_Cho
Reviewed By: Jaehyun_Cho
Differential Revision: https://phab.enlightenment.org/D5973
This changes a lot of things all across the EFL. Previously,
methods tagged @const had both their external prototype and
internal impl generated with const on object, while property
getters only had const on the external API. This is now changed
and it all has const everywhere.
Ref T6859.
I want to use this in other engines, but no other engine initializes this
properly, so draw_ok would be EINA_FALSE everywhere. This way draw_block
is EINA_FALSE after calloc in all engines that don't know about it.
ref T6834
Someone could NOT use elementary and use ecore_evas only. In this case, content
size which is defined by elementary is 0x0. If content size is 0x0, then frame
size is equal to window size. But the frame size is defined by elementary as
well. So if there is not a content, then the frame size should be 0.
Summary: disp is written twice with the same value.
Test Plan: N/A
Reviewers: woohyun, kimcinoo, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D5874
Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
We should only have to actually force a tick if we can't set up
the tick job, as the evas changed callback or a following render
from the tick job's tick will cause a flip.
Should remove a potential for a missed tick near the start of
ticking.
Similarly to commit 8b962d24ac prevent
extra flips in the drm engine.
These are potentially more harmful to DRM as they can cause frame
drops and missed render opportunities.
It's possible that we unregister then reregister an animator so quickly
that the ecore_evas idle enter/exiters haven't had a chance to run yet.
In this case a render will come shortly anyway and we shouldn't use a
'false' commit to kick off a frame callback.
Silences an ERR and unmeasurably improves protocol utilization.
strstr() can give false positives if the extension name is a subset of
a string in the extension list, for example EGL_EXT_image_dma_buf_import
would match EGL_EXT_image_dma_buf_import_modifiers.
I've opted for a mildly badgered copy of epoxy's test, which should be
robust in the face of subsets.
Anything non-EGL we might query would have to be queried here, so
I'm moving the call here to protect us in the event that we need GL
extensions in the future.
I'm still a bit confused as to what string I should be passing to
evas_gl_symbols, though.
This is a hint that we want a high priority context. Since gl_drm is
likely a compositor or a full screen app, it makes sense that it try to
use this (but other engines probably shouldn't)
Based loosely on Chris Wilson's weston patch to do the same thing.
(weston commit b678befb6ed055e6c66466505d9195a3cebf8073)
As this extension appears to have been around for years, I haven't
added fallback defines for:
EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100
EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101
Summary:
Increasing offset as 2 for next map points is wrong.
If evas tries to draw for wrong combination of map points,
it can cause wrong results. Actually, every drawing code for
map points use and increase offset as 4.
@fix
Test Plan:
A test case for textpach is modified for testing this issue.
1. Run elementary_test with sync render mode.
ex) ECORE_EVAS_FORCE_SYNC_RENDER=1 elementary_test
2. Open textpath test.
3. Set a short text by clicking newly added check box.
4. (It will show another issues... So,) change slice number to update textpath properly.
5. See some noises at top-left side of text.
It is drawn from the two of end map points to the two of empty(not used) map points.
Reviewers: raster, cedric, jpeg, jypark
Differential Revision: https://phab.enlightenment.org/D5833
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
If we have a blacklisted gl implementation then we'll create a canvas,
it'll fail to be useful, and we'll free it - which calls
ecore_wl2_shutdown(), but then we'll also call ecore_wl2_shutdown()
a second time further down the failure path.
Take a bonus reference before freeing the failed canvas to keep refcounts
sane.
Summary: This patch replaces ecore_wl_dpi_get with ecore_wl2_output_dpi_get using Ecore_Wl2_Output
Test Plan: Execute test suite
Reviewers: cedric, raster, jpeg, stefan_schmidt, Jaehyun_Cho, devilhorns
Reviewed By: devilhorns
Differential Revision: https://phab.enlightenment.org/D5804
This is a funny story:
elm_web loads modules for getting a actual elm.web object. However, when
elementary was merged into EFL someone (... :)) forgot to change the
path that is used to load intree modules, so elm.web.none was never
actaully tested ... :)
But thx to the wonderfull legacy patch its super simple to fix this :)
We already include the Ecore_Drm2 header for these engines, so there
is no need for the 'output' field to be a void pointer here.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
so scenario:
1. use ibus
2. have at least english input and japanese input (or korean etc.)
3. have 2 kbd layouts (english and greek).
4. enable "use system keyboard layout" in ibus advanced settings
5. switch to english input mode
6. switch to greek key layout
7. type and get english, not greek input as you should
@fix for both terminology and elm/efl entry/ytext input.
The dirty bit was a dirty hack to let session recovery force reconfigures
on startup.
Now that we have a surface flush we can achieve the same thing by just
discarding all buffers immediately.
For SW engine we need to verify that OSMesa is present. The patch
fb048e7312 broke the logic.
Tested by temporarily removing OSMesa from my system.
Fixes T6617 (again)
Summary:
elm_datetime and Efl.Ui.Clock uses same module: clock_input_ctxpopup.
The module creates internal field object.
Use legay button for field object until Efl.Clock and datetime module
policy is fixed.
Reviewers: jpeg, CHAN, woohyun
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D5725