Coverity detected that the same code was being passed to resize
regardless of canvas orientation. This patch fixes the issue by
passing the proper values to window_resize.
Fixes Coverity CID1357150
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
Coverity reports that this bpp check is actuall dead code due to the
fact that bpp can never be < 0.
Fixes Coverity CID1357144
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
This patch fixes 2 Coverity issues where engine_info_set was being
called, but the return was never being checked.
Fixes Coverity CID1357141 and CID1357142
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
This reverts commit 3c13ef14e3.
This introduced new build breaks, especially with in-tree builds.
In particular, DIR was not defined. See T3975.
I'll make the shaders regen an opt-in rather than on by default.
So... adding the .x files to BUILT_SOURCES means they would
get deleted during clean. This was bad, but turned to be awful
when this made the check for writability fail.
See:
8a273158782b8912462e
This commit reverts:
0b69356f1b
Notes:
Please revert if this breaks the build for anyone.
I'm pretty sure the use of top_srcdir is not recommended the
way I've done it.
I hate autofoo.
My nvidia EGL driver coultn't compile some shaders because of
the error:
error C1059: non constant expression in initialization
The proposed patch at D4068 is not acceptable since it just
brings the original problem back. Instead, make sure all vec3
variables are initialized in main() or another function, not in
the global scope.
I tested all examples in evas
When an fbo pageflip finishes, we should be marking the current fbo
(one just sent) as no longer busy since it's already been pixel
blasted to the screen. Also, if we fail to flip to a given fbo during
buffer swap, then don't leave that fbo marked as busy since it is
technically not in use
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
When kernel support for locally mmapping buffers is unavailable and
software rendering is used, dmabuf may need to fallback to shm for the
very first frame rendered.
We need to copy that frame to a shm buffer during the fallback to make
sure it's actually displayed.
As it seems the jpeg breakage is over wrt direct input callbacks, we
can re-enable these for the drm engines
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
Summary:
1. For converting tbm buffer from yuv to rgb, image.data should be allocated.
2. Stride should be set by info of tbm surface.
3. The number of row is height*2. but if height is odd, last row is invalid in process of _evas_video_i420.
Test Plan: Local Test, Tizen2.4 Mobile
Reviewers: spacegrapher, wonsik, jpeg
Subscribers: cedric, dkdk
Differential Revision: https://phab.enlightenment.org/D3870
Summary:
Prevents the uninitialized surface pointer to be used when
glsym_evgl_native_surface_buffer_get is NULL.
Reviewers: devilhorns
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4016
@fix
Summary:
Disables GLES3 support when it cannot be determined that it is
available. Prevents to repeatly request a (missing) gles3 support and
fail.
Fixes T3795.
Reviewers: jpeg
Subscribers: cedric, jpeg
Maniphest Tasks: T3795
Differential Revision: https://phab.enlightenment.org/D4014
Summary:
In same cases(devices) can lead to mix up attributes in shaders.
@fix
Reviewers: cedric, Hermet, raster
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D4012
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Implemented interface Efl.Gfx.Buffer functions bufer_map/unmap for Efl.Canvas3D.Scene.
Added function e3d_drawable_texture_rendered_pixels_get to module evas_gl_3d
to getting pixels from FBO. Added wrappers for functions
e3d_drawable_texture_rendered_pixels_get and e3d_drawable_texture_id_get
to have possibility call it through engine functions.
Reviewers: cedric, Hermet, raster, jpeg
Reviewed By: jpeg
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D3978
Apparently I broke some inputs in E (efm) like mouse wheel.
Somehow the list of objects where the pointer is in was NULL.
This was because the mouse_in/out events were not matched to
the proper window ID.
Fixes T3760
This reverts commit 546ff7bbba.
It seems that eo_del() is useful and removing it was creating bugs.
The issue is that the way we defined parents in eo, both the parent and
the programmer share a reference to the object. When we eo_unref() that
reference as the programmer, eo has no way to know it's this specific
reference we are freeing, and not a general one, so in some
circumstances, for example:
eo_ref(child);
eo_unref(child); // trying to delete here
eo_unref(container); // container is deleted here
eo_unref(child); // child already has 0 refs before this point.
We would have an issue with references and objects being freed too soon
and in general, issue with the references.
Having eo_del() solves that, because this one explicitly unparents if
there is a parent, meaning the reference ownership is explicitly taken
by the programmer.
eo_del() is essentially a convenience function around "check if has
parent, and if so unparent, otherwise, unref". Which should be used when
you want to delete an object although it has a parent, and is equivalent
to eo_unref() when it doesn't have one.
For ecore_evas drm engine(s), disable setting of
ecore_event_window_direct_callback as this Completely Breaks all input
when running Enlightenment Wayland.
NB: This can likely be re-enabled at some point, when the jpeg
breakage is over ;)
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
This whole input system is a massive mess. It looks like spaghetti.
Long live the giant flying monster.
This commit changes how some events are propagated in X.
Before:
ecore_x -> evas_event -> evas
After:
ecore_x -> ecore_input_evas -> ecore_evas -> evas_event -> evas
There are still inconsistencies between events and between X and WL,
but ecore_evas should be used for all events since it rotates the
inputs.
This patch fixes an issue where starting Enlightenment would not
center the mouse pointer. Basically the issue is that we cannot warp
the mouse pointer until After the ee->prop.window has been set else
E will not process the mouse_move event
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
We need to continue to tick even if we can't find a buffer - otherwise
we'll stop updating forever.
We also need to reset buffer busy bits to 0 if we run out of buffers or
we'll never try to assign one. (The page flip handler would eventually
clear the busy bit for the current buffer, but a few lines ago we just
set that to NULL so it will never happen...)
If we don't block the current buffer from being assigned to the new
current buffer we'll end up rendering into the same buffer over and over
and never actually double buffer.
so ibus module for ecore-imf likes to send an x event back to
ourselves faking a key... this works unless we are looking at
modifiers that make make for odd combos with keysyms turned into
keycodes. so actualyl use the correct original keycode plus state
unless we are having to explicitly send a keysym from ibus core.
this fixes T3703
@fix
An unknown crash happened in glDrawArrays() where color_ptr is
a non-reachable pointer that looks like a valid malloc() zone.
Unreproducible issue. I can only hope this patch doesn't actually
break anything.
This cleans up rectangle and line in particular, that were not
using common code to use GLPIPES. I honestly couldn't find a
problem though.
DMABuf buffers destroy their glimage in the unbind callback, so it's
usually already gone for the free callback.
Now we test if we actually need to destroy anything.
Also, switch to GLERRV macro for error reporting - it saves us the heavy
eglGetError() unless we've built it in intentionally.
i've been gettign persistent evas test suite suite failures ffor a
while. annoying as i can't get 100% pass anymore. it's due to segv's
in evas test suite thanks to chunks of uninitialized memory in the
mesh loaders/saver code.
this fixes that
@fix
Previously events used to use class name as a prefix and ignored eo_prefix
when specified. This is no longer the case. Events follow eo_prefix by default
now. In order to get around this for classes where this is undesirable, a new
field event_prefix was added which takes priority over eo_prefix. If neither
is specified, class name is used like previously.
@feature
We used to have eo_del() as the mirrored action to eo_add(). No longer,
now you just always eo_unref() to delete an object. This change makes it
so the reference of the parent is shared with the reference the
programmer has. So eo_parent_set(obj, NULL) can free an object, and so
does eo_unref() (even if there is a parent).
This means Eo no longer complains if you have a parent during deletion.
add support for reconnecting wayland applications if the compositor dies
disconnect -> destroy gl ctx + image textures -> block rendering ->
reconnect -> create gl ctx -> create image textures -> unblock rendering ->
sprinkle special seasoning on top -> just like ma used to make
#SamsungFeatures
@feature
On shutdown we need to set wl_surface to NULL to let the engine know
there's nothing to write to - however we've been setting up an entirely
new outbuf instead of just changing the old one.
The outbuf code should free the surface structure, not the dmabuf
abstraction or a use after free occurs on fallback.
Re-organize some code to make sure we don't rely on anything that may
have already been freed.
Add a wl_surface_commit() to keep the animation timer alive through
the fallback process.
This include is leftover from the porting to Ecore_Wl2. Remove
unused include for old Ecore_Wayland library
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
This adds a separate backend to the "shm" engine that allows allocation
of buffers via libdrm that can be turned into dmabuf handles and used
with the wayland dmabuf extension.
Currently only the intel buffer manager is supported.
The benefit of dmabuf buffers is that they don't require a texture upload
like shm buffers do, and when we have plane support they can be dropped
directly into a plane without a memcpy.
Split this into two parts, one that makes the base surface, one that
calls the potential back ends.
Once the dmabuf backend is added this will allow a fallback path to
re-initialize the surface as wl_shm if dmabuf fails.
This doesn't really care what the buffers were allocated with, so
let's make this chunk of code useful to both the shm method and the
upcoming dmabuf one