Summary: if EGL_KHR_partial_update extension is implemented in the
driver, set damage region. This is done before the draw calls.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
After the commit D2904
this commented code and comments are not required
Test Plan: NA
Reviewers: tasn
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2938
Some files were still including SDL-1 headers even though we only link
against SDL2 libs.
URL: https://bugs.gentoo.org/551882
Reported-by: Barnaby <badbit@me.com>
Reported-by: Romain Naour <romain.naour@openwide.fr>
Summary:
Fix type in edje_container_align_set,
it was originally named as edje_contain(t)er_align_set.
Reviewers: Hermet
Subscribers: cedric, Hermet
Differential Revision: https://phab.enlightenment.org/D2927
ecore_evas_first only can be set first render even though there are several windows.
because of this, second or third ecore_evas loses chance to render first frame.
@fix
NOTE: it would be nicer to setup a specific context for each snapshot
and walk all the child below. If any of them did change, only trigger the
full redraw in that case (and of course only if a filter with blurr does
use it somewhere).
This should theorically work, need some test. Design is easy to understand. Render
every part of a snapshot object by rendering the content below it, before rendering
the stack above it using that object content.
Summary:
Fix to delete selection when preedit status has not ended
In preedit mode when selection is made and input any letter,
there is duplicate character appeared because the selection
is cleared when commit happens so delete the selection in
preedit last stage.
@fix
Test Plan: Test in Tizen devices.
Reviewers: woohyun, id213sin, shilpasingh, tasn
Subscribers: rajeshps, cedric, govi
Differential Revision: https://phab.enlightenment.org/D2837
Summary:
If EGL_KHR_partial_update extension is implemented by the driver,
set the damage region. This is done before the draw calls.
@feature
Reviewers: wonsik, spacegrapher, jpeg
Reviewed By: spacegrapher
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2828
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: This is a logic of tangent data calculation, we need it in order to avoid bugs with normal mapping after building with opengl=yes.
Reviewers: Hermet, raster, cedric
Reviewed By: cedric
Subscribers: Oleksander, cedric, artem.popov
Differential Revision: https://phab.enlightenment.org/D2802
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
When commit string comes from key_down text filter is applied before deleting
the range but when commit string comes from imf filter is applied after deleting
the range. Moreover when format is prepended range is deleted before applying
insert filter. Please check the _edje_key_down_cb and
_edje_entry_imf_event_commit_cb routines.
@fix
Test Plan: Tested in Tizen device
Reviewers: herdsman, thiepha, shilpasingh, raster, tasn
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2904
Summary: This adds support for allowing a client/compositor to adjust
the keyboard repeat rate and delay via a call to
wl_keyboard_send_repeat_info.
@feature
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
The root cause of the crash is freed memory.
The evas_object_image_data_set api called with extn buffer in _ipc_server_data.
But there is no inform to render when free this buffer.
@fix
Reviewers: Hermet, jpeg, jypark
Subscribers: stefan_schmidt, cedric
Differential Revision: https://phab.enlightenment.org/D2902
Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
Summary: This fixes T2625 where launching filemanager would cause a
deadlock. The issue here is that wl_display_dispatch actually uses
poll() which will block and wait, while using
wl_display_dispatch_pending does not case any blocking.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
This fixes a rendering issue with wayland apps. We consume all buffers then
drop any attempted renders that take place while we have no buffers.
This fix now waits for the server to give us some buffers back.
This is the cause of T2612
@fix
#Kansas
Reviewers: zmike, devilhorns
Reviewed By: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2897
Summary: As we no longer need the wdata here (see previous commit), we
can remove the usage of this variable
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This function should really not be called here as it triggers
an xdg_surface_set_window_geometry call which (in turn) should only be
getting called when the window geometry (meaning visible region)
itself has changed.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: As we need access to the wl_display in order to dispatch
events on the queue while we wait for free buffers, pass it in to the
surface creation function and set it in the Shm_Surface structure
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: These functions need to have an additional wl_display
parameter so that we can set the field inside the Surface structure
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: In order to fix an existing rendering issue, we need access
to the wl_display so that we can dispatch events on the que while we
wait for a free buffer
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This sets the wl_display field of the Evas engine info
structure so that the wl_display can later be used for dispatching
queue while we await a free buffer
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This just adds a field so we have some place to store the
wl_display for use in the evas wayland engine
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This fixes a crash which Could occur if no outbuf depth was
given during a call to reconfigure.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
We now track each shm buffer's time since last draw so evas can tell
what it needs to re-render.
Reviewers: zmike, devilhorns
Reviewed By: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2893
Summary:
This is when we're about to start a new render, so it's the best
time to set up the next buffer to draw to.
Reviewers: zmike, devilhorns
Reviewed By: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2892
Summary:
We already have *current, but we're not using it properly. Let's throw
out curr_buff and just use *current.
This temporarily makes swapmode_get do full renders, this will be
fixed in a future commit that adds proper buffer ages.
Reviewers: zmike, devilhorns
Reviewed By: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2890
Summary:
Split out the buffer picking stuff because we're going to want to call
it from somewhere else.
Reviewers: zmike, devilhorns
Reviewed By: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2889
Summary:
It doesn't redraw anything, it posts a buffer full of data to the
compositor.
Reviewers: zmike, devilhorns
Reviewed By: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2887
Summary:
char type is interpreted as unsigned char in some implementations,
so setting -1 will be read as 255.
So we should explicitly make this a signed char type.
@fix
Test Plan: Local tests
Reviewers: cedric, jpeg
Reviewed By: jpeg
Subscribers: wonsik, cedric
Differential Revision: https://phab.enlightenment.org/D2895
Summary:
window manager can send arguments and its meaning as follows.
1) resize:0
it means client window doesn't need to resize its window by rotation.
this case is a ELM_WIN_BASIC window in mobile profile.
2) resize:1, ee->w != w, ee->h != h (deprecated)
it means client window should be resized by rotation, and wm already resize its window.
so, client don't need to resize its window.
it's just for backward compatibility.
3) resize:1, ee->w == w, ee->h == h (addition)
it means client window should be resized by rotation, and wm don't resize it.
so, client should resize its window.
Test Plan: N/A
Reviewers: gwanglim, raster, jypark, devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2831
Summary:
Set size of texture unit without 2 pixels for borders in case use it without
atlses. Just one case if texture for 3D use repeat mode and non-normalized
tuxture coordinates
Reviewers: Hermet, cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2805
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: As we end up calling ecore_evas_wl_common_resize anyway,
there is no need for all these size calculations in the configure
callback. The resize function will deal with this anyway.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: Since the surface_swap functionality is changed now, we no
longer need to bother checking if the leaf is busy as we don't use the
leaf itself inside this function anymore.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
Looks like the recent changes to swap/redraw have fixed a problem with
damage tracking and we no longer need this.
Damage history seems ok without it now.
@fix
Reviewers: zmike, devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2876
Summary:
The way things were, we'd be committing a buffer we hadn't rendered to
yet.
Now redraw() contains all the attach/damage/commit logic, and swap() is
called afterwards to set up a new target buffer for the next render.
@fix
Reviewers: zmike, devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2875
Summary:
We don't need to - all the frame callback does for us is ensure a queue
push.
We should destroy any callback we receive when we receive it.
@fix
Reviewers: zmike, devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2874
With -DDEBUG, we can see an error message, like:
ERR: You are calling _ecore_lock() from outside of the main loop
threads in lib/ecore/ecore_private at line 306
Looking at the code shows that ecore_lock fails immediately if
thread debugging is enabled, but ecore_unlock does not, so the
value _ecore_main_lock_count could go below 0.
This is not very important as the value is never used.
This fixes filters on Ubuntu 32 bits.
This was one hell of a weird bug to track down. Everything worked
like a charm on my 64 bit machines, but filters would simply fail
for no good reason: a safety check sees a NULL pointer when clearly
it was properly allocated.
Just after entering a function, the content of an RGBA_Image would
change, even though there was no memory write there. This made the
image data pointer NULL, and filters would fail miserably.
So I printed out the contents of the RGBA_Image, they changed. But
the memory itself had not changed. The size of the struct itself
had changed when jumping from one file to another! But its definition
had not! Non-sense!
Unless of course a system header file was included before config.h
and ino_t or off_t would switch between 32 and 64 bits...
@fix
Summary:
This fix need for synchronous rotation mesh and aabb of "sonic" in example "evas-3d-aabb.c".
@fix
Reviewers: Hermet, cedric
Reviewed By: cedric
Subscribers: sri.hebbar, cedric
Differential Revision: https://phab.enlightenment.org/D2779
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
buf is always NULL (already freed and set to NULL).
We don't need to add NULL checking and free it.
Reviewers: raster, cedric, Hermet
Subscribers: seoz, cedric
Differential Revision: https://phab.enlightenment.org/D2783
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Implemenation of eina_matrix3_quaternion_get function
Signed-off-by: Vivek Ellur <vivek.ellur@samsung.com>
Reviewers: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2786
This was a function I forgot to finish implement. Thanks Vivek to take care of it.
As it comes with a test case, is self contained and fix a missing bit of code I will
push it at this point in time of our release process. Sorry everyone for that late push.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Fix Coverity issue which reports a dereference before null check.
The enc_info can not has NULL point
because _edje_multisense_encode api calls exit() in case of failure
Reviewers: Hermet, Jaehyun, cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2794
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: This fixes an issue where we may been missing a frame
callback due to the wl_surface_commit being called before the frame
callback listener was setup. Now we will setup the frame callback
listener before doing any wl_surface_commit so that we don't miss
frames.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
i am not sure if this is the odd crash i am seeing, but in theory it
could be. as these crashes are rare it's hard to find and gdb is "too
late" other than telling me the image is freed already by the time we
do an unload.
*this does not affect any "stable" code paths - it's render2 and some
added region code that i MAY have to use to fix some bugs/issues as i
am noticing tilebuf being pretty silly and just doing bounding boxes.
region code lifted from xserver (mit-x11 license thus compatible with
evas bsd) and it's been stripped down and cleaned up with some tilebuf
optimizations like remembering the last rect add/del to avoid work
when repetedly adding/delling the same rects (very common).
Summary: This patch adds some checks to make sure that we can ignore
key events which are not seat wide state changes.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
The evas-3d-shooter-header.h is used by two binaries. One is using these image
path and the other not. Which means that we get a bunch of warnings thrown at
us during the compile of the binary which does not use them as unused variables.
Solve this by having them only in the place where they are actually used.
This reverts commit 60b473d949.
It breaks our mingw cross build setup we are using on jenkins. In summary it
silently fails to use eolian_gen.exe while it should use the linux native
eolian_gen and thus does not generate the c and h files from the eo ones.
See the ml for details or look at the error here:
https://build.enlightenment.org/job/changely_efl_mingw_x86_64/2115/console
Before this patch, those EGL/EvasGL functions can not work
without a current context. But EGL does not require any
current context for those to work, or at least, this should
be left to the driver to decide.
Evas GL was only able to get a pointer to the display
if a context was current.
The display pointer should be infered from Evas_GL unless
we can find a current display. EGL does not require a
context to be current in most of these function calls.
This should bring evasgl a little bit closer to EGL in terms
of behaviour (those are EGL-only extensions, btw).
Thanks @spacegrapher for the quick review
@fix
Summary:
Now Evas gl preload feature is disabled.
But if it is turned on, memory crash occurs.
Because evas_gl_common_texture_upload is not excuted immediately.
Test Plan: EVAS_GL_PRELOAD=1 ELM_ENGINE=gl elementary_test -to "photocam"
Reviewers: raster, cedric, woohyun, seoz, Hermet, singh.amitesh, jpeg
Subscribers: jpeg, cedric
Differential Revision: https://phab.enlightenment.org/D2823
Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
When glClear is called in direct rendering move (DR), we usually
have to skip the call altogether because clearing out transparency
would erase the pixels in the evas backbuffer. This means Evas
would not be able to blend an RGBA GLView on top of other objects.
But COPY mode should allow Evas GL to poke holes in a window
backbuffer.
Thanks @spacegrapher for the review :)
NOTE: Elm GLView also needs to pass the render op to its Evas.Image.
@fix
evas_gl_native_context_get is an internal function
passed around from an evas engine to evas_gl so that we can
implement evasglCreateImageForContext without exposing
any evas engine internal structure to evas_gl.
It's all a ittle bit ugly but the previous solution with
dlsym(DEFAULT) didn't work.
Failing to load a module that does not exist is indeed not an error,
but failing to load a module that exists on disk happened probably
because of an error like "symbol not found".
Considering eina_module is most likely used by EFL itself, I believe
an internal linking failure is a warning worth reporting.
If the TLS variable was not initialized, Evas GL can't get a pointer
to a valid EGLDisplay which is required by eglImageDestroy.
So, we keep track of the dpy used at creation time and use that
if we're in another thread.
Summary:
Apart from evas_canvas3d_node_look_at_set() all other things are referenced.
Tried to reference it to @Evas.Canvas3D.Node.look_at_set(). But getting error.
Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>
Reviewers: cedric, tasn, q66
Reviewed By: q66
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2822
This reverts commit 5beb47aa4d.
Revert "image_savers/jpeg: fix undefined behavior of using sigsetjmp on jmp_buf"
This reverts commit 84c7751e19.
these end up with efl simply not compiling. efl tree does not build at
all now and this warrants a revert.
lib/evas/.libs/libevas.so: undefined reference to sigjmp'
collect2: error: ld returned 1 exit status
Makefile:19321: recipe for target 'bin/evas/evas_cserve2' failed
.. etc.
Replacing decimal point in buffer resulted in invalidation of the original
string pointer. On Linux, this issue was for some reason not caught, but
it was wrong anyway. Use the updated string correctly now.
@fix
This is a complex situation:
- Smart object A contains image I
- A is proxied into an image B
- B is marked as source_invisible, which means A is invisible
- Mask M is applied to image I
- Mask M is ALSO a smart child of A
Because of all that, mask M could not be rendered into its private
mask surface, as it was falling under the case of "parent_src_invisible".
This patch checks that the object is not a mask during the
parent_src_invisible check.
@fix
The return value is used for divisor in many case.
If it return 0.0 when it fail, it can break app with div by zero.
@fix
Signed-Off-By: YoungBok Shin(id213sin) (youngb.shin@samsung.com)
Summary: If we end up cancelling the keyboard repeat timer due to no
focused surface, we should also reset the input repeat values.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: During the keyboard repeat function, if we have no keyboard
focused window to send the key to, then we should cancel the repeat
timer.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: As we delete any keyboard repeat timers when we get a
keyboard leave event, we should also reset any stored values there
(key, sym, time, etc).
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: If we get pointer or keyboard leave events, then reset the
Ecore_Wl_Input's idea of focus (eg: set input->pointer_focus and
input->keyboard_focus fields to NULL) just in case we cannot find a
window for this surface.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This fixes a scenario in which paragraphs in the current layout still
store visual lines from the previous layout. This is possible if the
text uses an ellipsis format, allowing the layout work to stop at a
certain paragraph. This inconsistency affects some query functions that
consider lines which may be irrelevant in the current layout.
Test Case: see added test case to evas_suite.
@fix
i was runing perf top and noticed that evas_image_load_file_data_eet(0
was being called. in fact - it was #1 on the list of functions being
called. why? it didn't make sense. i found out. just a blinking cursor
in terminology was causing the background to be unloaded and
re-loaded. the new "actually unload" changes for 1.15 made this happen
and thus we kept sucking in new data all the time even if the
scalecache already had the data - and that was the problem.
so now calcecache prepare tells you if you don't have cached data and
if you likely then have to ensure the data is loaded. this cuts down
quite a bit of work.
while i'm at it... we definitely need to clean house on the internals
of evas. a decade+ of features, mess, optimizations needs to be fixed.
i mean really house-cleaned. rewritten clenl;y re-using existing code
where appropriate.
For unset color_class for part used edje_edit_state_color_class_set and NULL
value for color_class, it's a string, is valid. In this case function must
return EINA_TRUE.
@fix
It's now generalized to work properly with legacy functions
as well as correctly append suffixes. Thus, it can be easily
used with the documentation generator and in other places.
@feature
this was broken in 5cb6cdbc5e such that
when multiple sources produce mouse events using the same device,
these events are marshalled as though they were from the same canvas.
the result is that eventing is wrong on at least one of the canvases,
and spurious mouse-up events are triggered before every mouse down
fix T2509
i think this has been disabled for a while. image unloading is broken
- esp with gl enigne as due to async move it was effectively disabled.
this re-enables it. unloading is deferred with a managed list of things
needing unloading and then when any async sw renders are not busy any
more - do the unload then in the mainloop of all pending/flagged
images to unload
@fix
Since the move to eo, ecore_con_local hangs on Windows, hence edje_cc can
not compile edc files (e.g.).
Problem was a loop that was used to finish some threads which is now endless.
For now, comment out that loop
@fix
The correct way of disposing of an object in a failed finalisation is to
return NULL, not to delete it.
Also, since the destructor is already called when the object is deleted
anyway, there's no point in having cleanup code in the finalizer too.
@fix