this fixes a lot of noise for filled image objects that set fill to
0x0 if objetc is 0x0. this clamps minimum fill at 1x1 and thus keeps
things silent and sensible. also just silently ignore 0x0 filled image
objects. noise is not that useful.
This reverts commit 986b60eaf0.
Added PUSH_SAMPLE for simplicity.
It was dumb of me to use uniforms, so I added a comment to prevent
other dumb people from making the same mistake later.
The exact same ugly macro would appear hundreds of times in the GL
code:
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
Instead, override the common GL functions iif GL_ERRORS is defined.
This greatly simplifies code and removes tons of useless lines.
Also, this will give better debugging output as the exact code line
is printed, and the function name is also printed.
Also, fix linking to the glerr function.
This is a code cleanup. Hopefully I didn't break anything with this
big operation of find & replace.
This should speed up setting uniforms in the shaders, by storing
their locations in the Evas_GL_Program description.
I kept the previous solution with name as fallback, but it won't
actually be used with the current shaders.
Image and texture programs "12", "21" and "22" used tex_sample
as a texture attribute passed to the vertex shader. Instead of
this seemingly hackish solution, use a vec2 uniform.
this adds a lock for when walking all the objects to generate render
commands for an async render. this allows even the object tree walk
plus update area caluclation to be moved off into async if every oject
that can change canvas state actually does so correctly. this change
adds all those lock block calls to synchronise with an async object
tree walk.
Summary: If we send a dbus blocking message, and it returns an error
then we should be printing out this error message
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: Due to libinput processing events directly from evdev, we
need to disable/enable input events when we release/acquire the vt.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: Due to libinput process events directly from evdev, when we
VT switch we should disable/enable inputs accordingly.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
This commit fixed several bugs, and show what was be fixed.
Bugs:
- When designer save obj file in Blender, he/she can set flags (fig 1). Normals and UV coords flags was necessary for obj loader. Loader crushed when they are not set as true. It fixed by this commit.
- Another loaders set default values to data which aren't in loading file, so mesh need more memory for unused data. It fixed by this commit for obj and will be fixed for another formats in future.
- Saver saved incorrect data if normals or tex_coords was not set in mesh in evas. Now it fixed.
- Saver failed if it save mesh without material. It fixed and in this case material file is not created now.
- Also fixed some leaks and undefined behavior which valgrind shows.
Example:
- Example shows cases described above. Example use files saved with different flags for it.
Resources:
- man_mesh is replaced by several smaller file, to use them for showing new features and fixes. For example, similar to that models can be added when implement work with material for obj, work with different flags for obj loader/saver etc. (big count of man_meshes is to much memory).
- texture for home is flipped, because of bug with texture in efl to see if tex_coords is incorrect.
Test:
- test should be rewritten in future, because another formats still use default values for normals and tex_coords. And test can not pass for all types of obj file because of standardization for any format in him.
Test Plan: Test suit will be rewritten after correcting of other formats (they will set NULL to file when save an empty data (like mesh without normals))
Reviewers: Hermet, raster, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1957
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
See first part https://phab.enlightenment.org/D1811 (backend, gl)
Add get/set for color pick mode at evas_3d_mesh and evas_3d_scene
Add evas_3d_node_color_node_mesh_collect function to collect data at force rendering
Add state flag for scene to avoid useless force rendering in case scene wasn't changed
Add functionality for color pick in evas_3d_scene_pick method
Reviewers: Hermet, raster, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1956
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
In previous version of this commit we checked if the _WIN32 macro was
defined. But now I am using EXEEXT from autotools to get
eolian_gen extension.
@fix
This fixes some cases where the image has no alpha and COPY mode
is used, but a mask is also applied. In that case, masking
takes precedence and BLEND mode is used.
@fix
I really REAAALLLY doubt that was necessary, but I'm still adding
these few changes for legacy compatibility.
This lib seriously should have had a stable API.
Summary:
libdrm_slp has been replaced with libtbm, so modify xlib swapper
to use tbm apis instead of drm_slp apis
Test Plan: Local tests
Reviewers: raster, Hermet, cedric, jpeg
Reviewed By: jpeg
Subscribers: cedric, wonsik
Differential Revision: https://phab.enlightenment.org/D1932
Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
Summary:
This native surface type is based on the tbm surface used for the tizen platform.
For the software_x11 backend, image data is retrieved from tbm surface
and color format converted appropriately.
This will only work when libtbm.so is present in the system.
@feature
Test Plan: Local tests
Reviewers: raster, cedric, jpeg, Hermet
Subscribers: wonsik, cedric
Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
Summary:
implement native surface set for EVAS_NATIVE_SURFACE_X11 type
on software_x11 backend.
@feature
Test Plan: local tests on PC
Reviewers: jpeg, cedric, raster, Hermet
Subscribers: wonsik, cedric
Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
Summary:
This native surface type is based on the tbm surface used for the tizen platform.
EGL_TIZEN_image_native_surface EGL extension is used to map
tbm surface to an egl image
@feature
Reviewers: raster, cedric, jpeg
Subscribers: cedric, wonsik
Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
A rare case of garbage data would happen if smooth scaling
was called with a mask and 1:1 scaling. Use the proper
render_op to COPY for the first pass.
@fix
Summary:
When trying to compile eina_bench.c we get an error that say we didnt
defined the variables that EINA_ARRAY_ITER_NEXT. I defined them.
@fix
Reviewers: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1952
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: Before ecore_con_server_add and client add with only TCP sockets. Have made that function generic and testing for other options too. Not all options are covered. Need to add different kind of cases for other options. Will check how I can add and add.
Reviewers: stefan_schmidt, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1939
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Added additional texture and framebuffer for rendering meshes to it.
Added function that return OpenGL id additional texture
Added function that return color from target texture by mouse pick coordinates
Added function that render need meshes to target texture
Added engine wrappers for possibility force render to texture
@feature
Reviewers: Hermet, raster, cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1811
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
I have added some methods to edje_cc_out.c to organize model lookups. The same methods already exists for images.
Also, I have removed source_type because now we don't need it in efl_file_set.
@feature
Reviewers: raster, Hermet, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1886
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
When getting ellipsis value from evas text object fails,
the most reasonable return value is -1.0.
Currently, evas_object_text_ellipsis_get API with NULL returns 0.0.
It means ellipsis is not off. It must return -1.0 when API fails.
@fix
Comments by Tom: until now, this was inconsistent. With this change, it
now returns -1.0 consistently. Also, fixed commit summary.
Reviewers: woohyun, Hermet, seoz, tasn
Reviewed By: tasn
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1944
We take a lock, search the list, and the release the lock before we
finish using the values of the list. While unlikely, the string could be
deleted in the meanwhile.
Summary:
Extension function pointer initialisation requires glGetString(GL_EXTENSIONS).
To get GLESv1 extension string, GLESv1 context has to be bound.
Change involves updating extensions after GLESv1 context has been bound.
Reviewers: jpeg
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1946
Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
invalid id. Fix T2086
Summary: In order to avoid getting returned an invalid id, we should
not be checking the currently active encoder and crtc combination
because outputs may have changed, encoders/crtc combinations could
have changed, etc, etc.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Ecore_Event_Key attribute "key" cannot be NULL. This
raise a segmentation fault in Enventor when hitting on
modifier keys.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
With cocoa you may have negatives values when Mouse Down or Up. This
changes fix this behavior by sending mouse event only if x and y are
inside the ecore_evas space.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This commit adds a method in Ecore_Cocoa_Window to be able to retrieve an unique
identifier for each window. It adds new events type and modify existing ones to
pass these windows identifiers through the event call chain. Resize, GotFocus and
LotFocus events are also updated to pass these identifiers to event handlers.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Don't use NSAppKitDefined events subtype for focus events, which contain NULL
window object most of the time. Use the NSWindowDelegate method designed for that
purpose instead. It fixes random focus issues in windows which was caused by
incorrect window identifier not found in ecore_evas_cocoa.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Until now, video_resize events was received only when application returned control
to the event loop. When a window is resized dynamically a lot of video_resize
events are emitted from EcoreCocoaWindow::windowDidResize and not handled
immediatly, only when the main thread is back to the ecore main loop. This is why
there are not refreshed window areas. Call ecore_main_loop_iterate() from
windowDidResize solves the issue.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
isKindOfClass should receive an instance of a class and a class as arguments and
not two class. It fixes Mouse events sent to a window on OSX.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
add a reimplementation of clock_gettime for OSX within the test in
order to be able to test eina_condition_timedwait
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
check that ecore_test_ecore_thread_eina_thread_queue_t6 doesn't
enter in an infinite loop if something goes wrong, if the main thread
doesn't receive the message number 10000
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This patch fix the semaphore initialisation on posix plateform
there was a preconditon test which returned the semaphore
uninitialised when count_init was 1, this caused the semaphore to
be unusable on OSX plateform. Furthermore, it seems that we need to
unlink the semaphore before its initialisation on OSX as there seems
to have some kind of persistence of the semaphore accross execution.
warning, this patch change the signification of the parametter
count_init on linux plateform, this parametter is now consistent on
every plateform, with the meaning of setting the initial count value
of the semaphore.
This used to be on linux 1 -> the semaphore is shared and initialised
at 1 and 0 -> the semaphore is not initialised, thus, by side effect
not shared and initialised at 0.
This patch set on linux plateform the semaphore as systematically
shared
@fix
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
The required precision of decompressed images allows a difference of
1 bit for each pixel compoment [1] . Such difference has been noticed
on OSX when using libjpeg9 from macports.
evas_suite images tests has been modified to compare jpeg images with
this tolerance. Other image formats are still compare with exact
precision
[1] http://en.wikipedia.org/wiki/JPEG#Required_precision
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
The Ecore_File test suite was comparing path with strcmp,
which can lead to incorect comparison in some case (comparing
realpath and expected path for instance)
This patch adds a function to compare paths within this tests. Paths
are compared by getting the "realpath" of each operand
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Amitesh Singh fixed this issue with Commit
e66e132d9d, but this commit has been reverted
recently, by a commit freeing ressources
(6d0b834a76). It's clear that we are leaking here
if we remove the free, but there is also a valgrind error when this memory is
freed. After trying to debug and understand the code of epp, i can only
propose to remove this free, we will need to include a lot of files before this
memory leak could be visible.
It is also not a real problem, the memory leak only concern the file name passed
in the include directive and epp is started per file anyway. It is unlikely to
create any real life problem and we better spend our time on more pressing matter.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
The order of tranformation changed to scale, orientation, position as
in some cases it can lead to incorrect value for the bounding box.
@fix
Reviewers: cedric, Hermet, raster
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1942
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
During filling evas pick public data by API evas_3d_scene_pick
segfault can occur if mesh was created without texcoords.
See functions - _pick_data_mesh_add, _pick_data_texcoord_update
@fix
Reviewers: cedric, Hermet, raster
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1941
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: Eina_Value must be allocated with eina_value_new() to be freed by eina_value_free().
@fix
Reviewers: felipealmeida, larryolj, cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1927
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: When center of bounding sphere was out of frustum and number of intersections between bs and planes of frustum was more then 3, objects disappeared.
@fix
Reviewers: Hermet, raster, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1938
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
This is a follow-up to the 7cbf22212f
revert commit. It's a bit late, as the issue has already been fixed with
the later 7143bd7fb5 commit.
This test checks eina_file_sanitize "../" case with absolute paths (i.e.
that start with "/"), and should fail prior the revert mentioned above.
Should come up with more tests like this one.
Reviewers: stefan_schmidt, cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1937
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
The new value is allocated using Eina_Mempool, it should be freed using
eina_mempool, not using libc free.
@fix
Signed-off-by: vivek <vivek.ellur@samsung.com>
Reviewers: cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1940
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This fixes an issue spotted after the previous fix.
Passing the Y-invert flag is necessary because in the usual
case a map is rendered with Y-invert (OpenGL coords vs. Evas coords)
but in case a map is rendered in an FBO (another map's surface)
then Y-invert must be unset.
Fixes rendering in the following case:
- Object with a map has a mask
- Object is child of smart object which also has a map (eg. transit)
--> Masking did not apply to the children before this patch.
NOTE: This works fine in SW but still didn't work in GL, see the
following commit...
Now we try to treat first inherit as a parent and everything else as a mixin.
If the first inherit is not a class (interface or mixin), every inherit is
treated as a mixin.
@fix
Summary: When ecore_init failed or when failed to initialize ecore_con_log_domain, then evil_shutdown was not called. So cleaned up code and added the fix.
@fix
Reviewers: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1921
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: _evil_init_count should never go below zero. This can occur, if a developer mistakenly calls evil_shutdown before calling evil_init. So fixing the code so that it never goes below zero.
Reviewers: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1922
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: This ports the deprecated screensaver_suspend and new API
screensaver_suspend to work with xcb.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This deprecates the old misspelled screensaver_suspend API
function and adds a new one.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This API function is misspelled, so after speaking with
Stefan, we've decided to deprecate this function add add a properly
spelled one.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: _init_con_ssl_init_count should not go below zero. This can occur if a developer mistakenly calls ssl shutdown before calling ssl init. So adding the check to prevent this.
Reviewers: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1925
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Apparently eina_tmpstr_strlen counts the null character as well. This
doesn't follow how strlen works, as the latter excludes it from the count.
This resulted in mistreatment of the string in _eina_file_escape, with
tmp_str paths that had "../".
This fix will do for now, but it is advised that we avoid using
eina_tmpstr_strlen, to prevent such confusions in the future.
Test Plan:
The following lines will throw a valgrind 'invalid read of size 1' error
prior this fix:
char *path = "home/mydir/../myfile";
Eina_Tmpstr *tmp_str = eina_tmpstr_add(path);
char *ret_path = eina_file_path_sanitize(path);
@fix
Reviewers: cedric, stefan_schmidt
Subscribers: tasn, cedric
Differential Revision: https://phab.enlightenment.org/D1929
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
@fix
this fixes T1987 - the commit that broke it was:
commit 18d494489c
Author: Cedric BAIL <cedric.bail@samsung.com>
Date: Fri Jan 3 16:20:53 2014 +0900
eet: use eina_swap*() function instead of custom slower one.
I know. This title does not explain anything. Whatever.
This fixes the following issue:
- Mask a genlist (big mask)
- Each item has an icon masked (small mask)
- Apply a map to the genlist
- Scrolling the genlist
--> The big mask still works but totally screws up the
small icons with masks.
Note: Once again this patch only affects code paths where an
object is a mask.
Yeah, mixing maps and masks of masks in a genlist leads
to tons of amazing bugs :)
This commit removes x,y from the "mask" field in an object,
as they are duplicates of cur->geometry.{x,y} but were not
properly kept in sync.
This patch fixes a situation of:
- A genlist in a map
- Each item has an icon masked
- Scrolling the genlist
--> The masked items would not render properly before this
patch.
Remaining known problem:
- Mask a genlist (big mask)
- Each item has an icon masked (small mask)
- Apply a map to the genlist
- Scrolling the genlist
--> The big mask still works but totally screws up the
small icons with masks.
Note: These changes look scary just before the release
but I would have to backport them to 1.13.x as they
definitely are bug fixes. Also, they only concern
code paths used exclusively by masking.
All those masking bug fixes become harder to explain. But here goes:
- Take a genlist, apply a mask to it (for example put everything
in an elm_layout). Also play with various objects in the genlist.
- Also apply a map to it (for instance, elm_transit zoom).
--> Now some elements will be masked, some others will not,
and some may even not render at all.
This patch restores a mask in the current drawing context, instead
of just unsetting it.
In a situation where an object with mask of mask is in a map
(Yes! It can happen!) the masks would not get properly "multiplied".
Now the problem is that some objects still seem to bypass some
masks... Hmm...
get them
Summary: Some keys in certain keyboard layouts should not be repeated
so add a test which uses xkb to inform us if this key supports
repeating.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
When the examples were compiled they used to through the below warning
$ gcc -o ecore_con_client_simple_example ecore_con_client_simple_example.c `pkg-config --libs --cflags ecore ecore-con eina`
ecore_con_client_simple_example.c:11:0: warning: "EINA_UNUSED" redefined
# define EINA_UNUSED
^
In file included from /usr/include/eina-1/Eina.h:215:0,
from /usr/include/ecore-1/Ecore.h:304,
from ecore_con_client_simple_example.c:5:
/usr/include/eina-1/eina/eina_types.h:112:0: note: this is the location of the previous definition
# define EINA_UNUSED __attribute__ ((__unused__))
^
So removed these defines as they are no longer required now.
Reviewers: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1919
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This is a left-over from a previous fix a few weeks ago.
The point of this "if" is just to avoid writing the COW value
if not needed.
For reference:
commit f876cf31f8
Author: Jean-Philippe Andre <jp.andre@samsung.com>
Date: Tue Dec 23 18:57:45 2014 +0900
Evas masking: Fix invalid geometry after mask redraw
Summary: If we fail to duplicate stdin, we should write out an error
and exit appropriately.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This reverts commit f52f562891.
This is reverted because it breaks eina_file_path_sanitize when using
"/../" in paths, for example:
eina_file_path_sanitize("/home/../mydir/myfile")
returns: "/mydir/myfili"
What invalid read size does this fix? Why was no test case specified?
Anyway, this change affects too much code to leave it in like this.
It is unable to do recursive reference such as:
> Having group A with GROUP part that has group B as source.
> Having group B with GROUP part that has group A as source.
Here we have a loop that is not allowed by edje_cc, so edje_edit also need
to check this case.
@fix
If "keyname" and "key" are NULL an Ecore_Event_Key is allocated
throught calloc. strlen() is called on these variables, which crashes
the program. As it is not correct to return a key event for NULL
keys to ecore, it is preferrable to return NULL and exit the function
before the key event is allocated, which fixes the crash in the same
time.
@fix
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This should not be an ABI regression on the platform where it work (Unix). It is on Windows,
but the API was unusable at all without this change, so this is a necessary breakage to
unbreak things.
@fix
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>