Summary: This fixes a reported resource leak (by coverity).
_pack_meshes_vertex_data allocates memory stored in 'vertices' however
vertices is never free'd unless count > 0
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This fixes an issue of coverity reporting Explicit null
dereference as fetchfunc is defaulted to NULL, yet no check is made
later before calling it.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This fixes a resource leak of eina_array in
eng_ector_renderer_draw which would return without freeing an
allocated array.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
efreetd was losing the last char on every line of extra_icon.dirs and
icon.exts thus resulting in gradual degredation of these files as more
and more changes happen to have things like:
.jpeg
.jpe
.jp
.j
.
etc. for extension or dirs like
/home/raster/.e/e/icons
/home/raster/.e/e/icon
/home/raster/.e/e/ico
...
/home/ras
/home/ra
/home/r
...
/ho
/h
/
.. you get the idea. before long the list of extra icon dirs (and
extensions) was massigve and caued all sorts of filesystem rummaging.
this fixes that to no longer degrade these files. this also changes
their names to force new files to be used instead of the broken old
ones.
if you unlink then rename, there is a gap between the unlink and
rename - no file is there. the point of the rename is to be atomic.
either old file OR new file. nothing in between. this fixes that race.
this fixes major slowness in things like enlightenment login. when
enlightenment starts, efreetd is started. efreetd takes a long time to
start because it is scanning lots of directories recursively. it is
early in code freeze, so i think this can go in as a fix, even though
it is more of an optimization, but as such it has a fairly major speed
impact, so i consider this fixing a core performance problem for
things like logging in. The solution is a cache file containing all
the sub directories in a directory tree. we still have to stat every
directory, but this avoids a lot of stating of all files as well and
avoids any readirs etc. so it is much faster. on an ssd this comes out
to 4 times faster for efreetd to start up. on an hdd it's about 2x
faster to start uncached.
this should bea good fix for startup times - on my systems thats a 1
second speedup on ssd (out of about 8 seconds boot time) and 3 seconds
on hdd (out of about 39 seconds boot). so w save 1 and 3 seconds
respecively in boot + login.
now can we get this to 0 or close? that's a matter of designing
something like a deferred scan + monitor add so we wait until "startup
is done" then set up in the bg for a bit. that might shave another 3
seconds off boot time for hdd's but for ssd's wil barely blip (maybe
save 0.1 sec). so leave that till normal dev mode.
@fix
i found my efreetd was not just monitoring a small set of dirs but
literally $HOME - recursively. this explains a lot of performance
issues i have seen on spinning hdd's vs ssd's. i never knew if was in
efreetd though... until now. for whatever reason my efret cache caused
efreet to try monitro a list like:
/
/h
/ho
/hom
/home
/home/
/home/r
... etc.
when trying to monitor something like:
/home/raster/.local/share/icons
that means it ended up trying $HOME as wellas a vast range of dirs it
just shouldn't sensibly ever try. i have no idea how my cache ended up
this way, but deleting it and re-populating it fixed it. so this ads
code to detect such insanity (as wellas give actual complaints on deep
recursion so we can see things better later). not a bug fix as such,
but a major improvement to detecting bugs which is what we want for
stability.
I also noticed that one legacy pixmaps dir is not recursively
monitored, but another is - so be consistent and recurs both.
Also apply checks to desktop file monitoring too.
Summary:
last_ms is not needed at all. If curl_multi_timeout returns non zero, then its error, if it returns zero, then its fine. If ms is zero, then call curl_multi_perform immediately.
Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>
Reviewers: cedric
Subscribers: cedric
Maniphest Tasks: T2200
Differential Revision: https://phab.enlightenment.org/D2294
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
When processing random data result of this function differs from C variant in more than 50% cases.
This difference is due to alpha calculation, in C code :
alpha = 256 - (*s >> 24)
in NEON:
"vmvn.u8 q4,q0 \n\t"
// ie ~(*s>>24) === 255 - (*s>>24)
We cant just add "1" as overflow will occur in case (*s>>24) == 0 (we use only 8 bit per channel in vector registers)
So here is the solution:
copy *d right before multiplication and add it to the result of it later.
Same approach as in D455.
Reviewers: raster, cedric, stefan_schmidt
Reviewed By: cedric
Subscribers: cedric
Projects: #efl
Differential Revision: https://phab.enlightenment.org/D2308
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Fixes warning:
lib/ecore_audio/ecore_audio_obj_out_pulse.c:275:60: warning: implicit declaration of function 'basename' is invalid in C99
[-Wimplicit-function-declaration]
class_vars.context = pa_context_new(class_vars.api, basename(argv[0]));
^
lib/ecore_audio/ecore_audio_obj_out_pulse.c:275:60: warning: incompatible integer to pointer conversion passing 'int' to parameter of
type 'const char *' [-Wint-conversion]
class_vars.context = pa_context_new(class_vars.api, basename(argv[0]));
^~~~~~~~~~~~~~~~~
/usr/local/include/pulse/context.h:174:67: note: passing argument to parameter 'name' here
pa_context *pa_context_new(pa_mainloop_api *mainloop, const char *name);
^
Test Plan: It now compiles without warning.
Projects: #efl
Differential Revision: https://phab.enlightenment.org/D2313
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Fixes src-on-NFS builds on FreeBSD, especially when the current shell is
not bash.
Test Plan:
Before:
SHADERS modules/evas/engines/gl_common/shader/evas_gl_shaders.x
gmake[4]: modules/evas/engines/gl_common/shader/gen_shaders.sh: Command not found
Makefile:34122: recipe for target 'modules/evas/engines/gl_common/shader/evas_gl_shaders.x' failed
gmake[4]: *** [modules/evas/engines/gl_common/shader/evas_gl_shaders.x] Error 127
Even manually adjusting path doesn't fix it (and the file is clearly `+x`):
$ ls -l src/modules/evas/engines/gl_common/shader/gen_shaders.sh
-rwxrwxrwx 1 1000 1000 1848 Apr 8 17:01 src/modules/evas/engines/gl_common/shader/gen_shaders.sh
$ export PATH="$PATH:$(pwd)/src"
$ modules/evas/engines/gl_common/shader/gen_shaders.sh
zsh: no such file or directory: modules/evas/engines/gl_common/shader/gen_shaders.sh
After patch:
SHADERS modules/evas/engines/gl_common/shader/evas_gl_shaders.x
CC modules/evas/engines/software_x11/modules_evas_engines_software_x11_module_la-evas_x_egl.lo
CC modules/evas/engines/software_x11/modules_evas_engines_software_x11_module_la-evas_xlib_swapbuf.lo
...
Projects: #efl
Differential Revision: https://phab.enlightenment.org/D2314
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: The Evas Drm engine makes use of Ecore_Drm functions now so
we no longer need private versions of the same code
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: As we already have Ecore_Drm which handles all things drm
related, let's make use of it in the Evas Drm Engine. This modifies
the 'meat' of the Evas Drm engine to use Ecore_Drm functions rather
than keeping private versions of the same code.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: With the evas drm engine refactor, some of the fields in the
Render_Engine structure are unused so remove them.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: With the evas drm engine refactor, a lot of these fields in
the Outbuf structure are unused so remove them. This also removes
unused private function declarations.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: A few of these engine fields are no longer needed or were
unused in the Evas Drm engine so remove them.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This makes use of the newly added Ecore_Drm API functions to
get information about the output so we can setup the Evas engine
properly
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This modifies the ecore_drm_device pageflip function to make
use of the ecore_drm_fb callbacks passed into the ecore_drm_fb_send
function
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This adds 2 new API functions we can use from within the evas
drm engine to set framebuffers as current, and to call a pageflip on
given buffers.
@feature
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This commit adds an API function that can be used to find an
output given an x/y coordinate pair.
@feature
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This API was added in the header while testing a theory, and
should not have been committed.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: Since we only create one drm context in the drm_device
structure now, we need the drm headers to be included in Ecore_Drm.h
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This changes allows us to reuse the same drmEventContext once
so that when we get drm events, we are not constantly recreating the
drmEventContext.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This marks an Ecore_Drm_Device as active or not when we VT
switch. We do this so we can skip rendering if we are not active.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: If we are using the software version of ecore_evas_drm, then
make API call to setup the Ecore_Drm_Device for software rendering.
This creates the dumb buffers on the Ecore_Drm_Device.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: Since we now create the dumb buffers in the ecore_drm_device
structure, we don't need them on a per-output basis. This commit fixes
the output & device code to adjust to this.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This adds an API we can call from ecore_evas to setup the
device for software rendering which will cause dumb buffers to be
created in the Ecore_Drm_Device structure.
@feature
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: No real need for each output to have its own framebuffers as
we can just create dumb buffers in the drm device structure
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: When we make the call to outputs_geometry_get, we should NOT
include cloned outputs in the final size.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: If an output has a pending page flip, we cannot destroy it
until the page flip has completed. This commit adds support to delay
destroying an output until the page flip is completed.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This removes an internal evas drm engine function and instead
uses the new ecore_drm_fb_dirty function call to mark the framebuffer
as dirty
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This refactors the output creation code to support better
mode detection, cloning of hotplugged outputs, and initial support for
setting of output gamma (API to follow)
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This commit adds support for setting DPMS level of an output.
This adds a new API function 'ecore_drm_output_dpms_set' to set the
level.
@feature
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
For GLX backend, we should dlopen libGL.so*
@fix
Test Plan: Evas GL 1.x test cases
Reviewers: cedric, jpeg
Reviewed By: jpeg
Subscribers: mythri, mer.kim, wonsik, cedric
Differential Revision: https://phab.enlightenment.org/D2322
Summary:
Evas GL surface buffers are allocated at make current time now
rather than surface creation time, and since we pass evas gl surface handle
to the backend, we do not need direct surfaces hash anymore.
Test Plan: elementary test and evas gl test cases
Reviewers: cedric, jpeg
Reviewed By: jpeg
Subscribers: cedric, mythri, mer.kim, wonsik
Differential Revision: https://phab.enlightenment.org/D2320
Summary:
Hopefully this will fix some of the multiple windows issues for elm glview but not all.
@fix
Test Plan: elementary glview tests
Reviewers: cedric, jpeg
Reviewed By: jpeg
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2317
Summary:
@fix
During execution example evas-3d-obj, part of 3D objects showed with red ripple.
The reason is not completely initialize component vector gl_FragColor
Reviewers: cedric, Hermet
Reviewed By: Hermet
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2292
this should hugely improve the speed of file monitor event processing;
in my test case, 800,000+ monitors were present and the application was
entirely unable to process them
Summary: This fixes an issue where heights of all outputs would get
added, thus causing the ecore_evas to be created at the wrong size.
Now, the height will be whichever output is larger.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This fixes a minor oversight in ecore_drm_output_mode_add
which was not setting the mode->flag to preferred if this is a
preferred mode.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: If we unplug an output, we should still be sending this event
so that the compositor can remove any unplugged outputs
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: libdrm has support for Virtual and DSI connector types, so
add those to the connector types
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: Move the Eeze udev watch to inside the ecore_drm_device. This
allows us to only create One watch to catch all output changes. No
need for more than one watch (one per output) as was done previously
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This commit changes the evas drm engine to use Ecore_Drm_Fb
for framebuffers. We remove the old 'Buffer' structure from the evas
engine and replace it in Outbuf with Ecore_Drm_Fb. This also removes
unused functions from the evas_drm.c file as we can now use
ecore_drm_fb calls
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This adds a w & h field to the Ecore_Drm_Fb structure so it
can be used from within the Evas engine
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This file is not needed for the software drm engine. This was
added (initially) for combining the drm software & hardware engines
into one. As that is not the case, this file is unused.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: By default, we should be creating dumb buffers using XRGB8888
that way it does not matter if we have an alpha channel or not in the
buffer.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Make sure not to sample the mask image outside its boundaries.
This is a series of last resort checks. I can not reproduce the
crashes but know they have happened.
I used EINA_UNLIKELY more for clarity than for compiler optimizations.
Summary:
... to simply invoke `_ecore_main_fd_handler_add()`. The only difference appears to be the former sets `->file` to `EINA_TRUE`. So, we add that as a parameter.
You can consider this patch, and any other contributions I make to enlightenment, to be under the terms of whatever open source license governs that particular project, or at your option, the MIT license. Basically, if I'm uploading patches here, it's because I want them to be useful.
Test Plan: Should be pretty straightforward. I am in the process of doing a compile check.
Reviewers: #efl
Projects: #efl
Differential Revision: https://phab.enlightenment.org/D2302