The only purpose of this commit was to allow efl 1.19 to be
released on macOS wothout crashing on termination. Time to revert
it and see that we can find a real fix for the next release.
This reverts commit cd5e755951.
ref T5245
If you define either the macro MY_CLASS_EXTRA_OPS for normal
methods/properties or MY_CLASS_EXTRA_CLASS_OPS for class methods
or properties, which contains a comma-delimited list of ops defs
(i.e. EFL_OBJECT_OP_FUNC(...), ...) right before including the
generated my_class.eo.c file, the definitions from these will
be included in the actual class. This can be used to override
certain things in a class internally without exposing it to
Eolian, or for testing/debugging.
Summary:
When _item_filtered_get is called, block and pan re-calculations
happen, When there is no filter applied, we can skip item filtering to
avoid some unwanted calculations
Reviewers: cedric, raster, SanghyeonLee
Reviewed By: raster
Subscribers: rajeshps, Princekrdubey, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4759
Summary:
The Ecore_Event_Joystick would be not enough information on user side.
Because the button index such as ECORE_EVENT_JOYSTICK_BUTTON_SELECT/START/META,
etc could be mapped to different button for different named joystick.
Test Plan: Using example
Reviewers: raster, cedric, jpeg
Reviewed By: raster
Differential Revision: https://phab.enlightenment.org/D4669
Summary:
The _ecore_con_post_event_server_upgrade() call adds an event to free
the server_upgrade object, svr, via _ecore_con_server_free(svr) so we
should assume srv is freed after it returns. Thus, perform the
pending_slice processing prior to calling it. Otherwise it triggers an
illegal access (USE_AFTER_FREE) error in Coverity.
@fix CID1373485
Reviewers: barbieri
Reviewed By: barbieri
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4785
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Test Plan:
- There are other grammatical errors, but I'm focusing this patch just
on pluralization-related issues to ease review and make it clearer if
I've introduced any inaccuracies.
Reviewers: cedric
Reviewed By: cedric
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4784
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
When popup is timeout, notify call hide func, and send time out event to popup.
After popup receiving time out event, popup hide object again,
so hide animation doesn't show.
And notify hide function doesn't send hide signal to block events part,
(but dismiss function send it)
So add that signal.
Test Plan:
1. elementary_test -to popup
2. click first item, "popup+center+text"
3. compare time out event before this patch and after.
@fix
Reviewers: herb, singh.amitesh, Hermet, cedric, raster, jpeg
Differential Revision: https://phab.enlightenment.org/D4780
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
See the previous commit. efl_provider_find() could not
find a canvas because the event object had no parent.
This restores the slider in E's sound mixer.
Note: Input events may expose the evas canvas object
because of parenting. This will eventually need fixing,
as only efl.ui.win should be exposed.
If 8ff2dffe7c7a21278dis backported to 1.19 then this patch
also needs to be merged as well.
Test scenario:
elementary_test -to "ExtScroller"
Try and modify a slider's value with the mouse wheel. Bad things
were happenning, as the flag ON_HOLD was not properly propagated
from the slider to the scroller. This is because the legacy
event_info structure inside the eo event info was not updated
with the new flag value.
By introducing a new EO only API, which is meant to remain
internal, we can use a single legacy info structure, fixing
this issue.
Note: In the future this API needs to be internal, not protected.
@fix
Prerequisites:
Disable scroll animation (in elementary_config)
Test case:
elementary_test -to Scroller
1. Scroll with the mouse wheel. Scrolling will not loop or anything.
2. Enable loop in Y, scroll to the top and to the bottom, verify
that scrolling loops fine and shows the last and first page in
full.
3. Enable page snapping, and repeat 2.
FIXME: Page snapping doesn't do much if you use thumbscroll or
drag the scrollbars.
FIXME: In the test case, Y +/- 1 is useless as the scroller snaps
to the pages even without snapping enabled.
@fix
The freeze property is a set() only but could internally
be reset to false, after dragging a vertical or horizontal slider.
Test scenario:
elementary_test -to scroller
Click Freeze, test the mouse wheel (can't do anything), drag a
scroller side bar, test the mouse wheel again.
Before this patch, the scroller would scroll. After the patch, the
scroller remains fixed, respecting the value of freeze.
FIXME: It is possible that the proper fix would be to disable
bars drag during freeze, but that is not the case currently.
NOTE: freeze, hold, movement_block, lock_x/y have very similar
meanings. The doc really needs clarification here, and some
property might be removed. Also, freeze and hold have no
getter, only a setter. drag_lock_x/y is part of elm_widget,
and not specific to scrollers.
If the scroll animation is disabled, we ended up with an
immediate call from inside a post-event callback to modify
the canvas geometry which led to feeding events. Since
99d21f6d9c and 54e5841b2f it is basically forbidden
to modify the canvas or feed events from the post-event cb.
This is because feeding events from inside the post-event
callback can break the logical order of operations between
post-event cb and event cb.
Note: This also implements no-animation scrolling for page
scroll, in case scroll animation is disabled (unifying the
code did that).
Fixes T5289 (abort inside E)
Test scenario:
elementary_test -to "Scroller 2"
Use the mouse wheel to scroll inside the horizontal scroller
(the one with many "...Horizontal scrolling..." buttons). This
scroller should scroll horizontally. When reaching the end of
this scroller, the main vertical scroller should take over
and scroll vertically, but only after a 0.5s timeout has passed.
Before this patch, you could wait forever and scrolling inside
the horizontal scroller would never trigger a scroll in the main
vertical scroller, despite reaching the end point.
In 1.18 both the main and the horizontal scrollers scroll
simultaneously. The imbricated vertical scrollers seem to work
as designed, but not H inside V.
@fix
Summary:
Before, rsc->current_ctx is always same with ctx.
So checking context change was meaningless.
From now, it has meaning.
Test Plan: App call evas_gl_make_current more than twice in pixels callback. Those surfaces are indirect rendering surface.
Reviewers: jpeg, dkdk, wonsik
Reviewed By: jpeg
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D4773
Summary:
There's problem in Tizen3.0.
1. Clip set mask_obj to obj for masking.
2. Unset mask_obj from obj, and del mask_obj.
3. obj has clip.mask still. So obj is trying to do mask_subrender() for freeed mask_obj.
So reset clip.mask to NULL, If there isn't clipper.
Now, there's no routine for reseting clip.mask when clipper object is freed. isn't it?
Actually I'm not sure that clip.mask=NULL should be there as this patch.
Test Plan: Tizen3.0 wearable
Reviewers: cedric, raster, wonsik, jpeg
Subscribers: scholb.kim, dkdk
Differential Revision: https://phab.enlightenment.org/D4721
Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
Theoretical bug that may become real in the coming days - ecore_imf's
wayland module has the interface for the text input protocol. The
imf module gets unloaded after destroying the protocol object but
before receiving all events from the server destined for it.
Currently that's fine, but I've posted some wayland patches for
review that require the interface to remain present while the text
input object is a zombie. These patches cause some EFL apps to
crash on shutdown when they unmap the wayland imf module.
This moves the wayland interface bits into ecore_wl2 which doesn't
get unmapped.
Since 9b7ac51943 evas map tries to avoid recalculating
stuff when the map parameters have not changed. Unfortunately the
code in elementary_test -to "Flip Page" was badly written. It was
modifying a constant's internal value (after ugly cast). So the
memcmp() and all other checks would return successfully, as the
exact same pointer was being compared to itself.
So, I've fixed the comparison by adding some forgotten parameters
(perspective) but most importantly I fixed the map API usage in the
test case.
There are reports of crashes when y < 0. This case seems
abnormal in case of filters, as I don't know how to reproduce it,
but it's happened.
Thanks Youngbok Shin for the report.
@fix
An unfortunately very common misuse of clip is as follows:
- Layout A is created (edje object / elm_layout)
- Object B is swallowed inside A
- Clipper C is set to clip B
This is a invalid usage, as layout A takes control over the clip
property of B (just like it does for geometry, visibility, color...).
Since 75ec3a7338 edje_recalc resets the clip at every calc
loop, as it can change between states.
In the past, edje_recalc did not reset the clip so anyone could
(wrongly) swallow an object and then change its clip from C to modify
its color, mask it, blend it, etc... Even though this was not proper
use of the API, this is not very clearly documented, and since it
worked, it has been (ab)used a lot already.
The result now is that a clipper set from C will become visible
as an opaque white rectangle covering the entire UI. Booh.
This patch is a workaround that should have no impact on well
written applications. As a bonus this avoids an extra call to
clip_set() from edje.
@fix
Summary:
If the last item before ellipsis item has bigger width than its advance,
evas_common_font_query_last_up_to_pos() function can find wrong ellipsis position.
When Evas finds a position for non last item, Evas must care about additionally
available space for glyph's width of the given x position.
ex) the last item's glyph before ellipsis item has a tail to draw above the ellipsis item.
@fix
Test Plan:
Test case will added as comment.
(Becasue of font license problem.)
Reviewers: herdsman, raster, jpeg, woohyun
Subscribers: cedric, Blackmole
Differential Revision: https://phab.enlightenment.org/D4727
if you set config via environment variables then sa config
update/reload may end up overriding these again whenever it is updated
and thus may result in scaling or other things suddely changing
@fix
just match the ref with the drop anddon't also manually free the image
as this leads to accessing of freed memory which is not a good thing.
this should fix T5374
@fix
for dialers we should also monitor "resolved" from inner TCP socket
and emit that ourselves, letting people know that we have an IP
address.
this is important for ecore_con_legacy.c, since the svr->ip is only
decoded and stored once when this signal is emitted.
Since efl_net_ssl_context is immutable for a dialer and we create the
dialer with the context, the SSL cases uses a trick to postpone dialer
creation using a job, then it allows one main loop iteration for the
user to call various ecore_con_server_ssl_*() methods.
However this breaks immediate ecore_con_server_send() after
ecore_con_server_connect() as used to be allowed and used by
azy/erssd.
Most people wouldn't notice that, since the most common case is to
either use ecore_con_url (which uses cURL and a complete different
code path) OR they would wait for ECORE_CON_EVENT_SERVER_ADD prior to
sending data.
Nonetheless it was a compatibility issue and must be fixed.
Fixes T5339
We should be setting this to the context version we understand, not
the highest version supported by the library.
From Daniel Stone's recent intel-gpu-tools commit fixing the same bug:
With libdrm 2.4.78, setting a higher context version than 2 will attempt
to call the page_flip_handler2 vfunc if it was non-NULL, which being a
random chunk of stack memory, it might well have been.
The efl_ui_win overrides _elm_interface_atspi_component_extents_get to give
correct value if screen_coord is EINA_FALSE which means relative position.
The efl_ui_win has given its object geometry value + ecore evas geometry value.
The object geometry value was equal to the ecore evas geometry value, so the
relative position was not correct(twice of ecore evas geometry value).
old_clipper = evas_object_clip_get(objA);
evas_object_clip_unset(obj_A);
evas_object_clip_set(obj_A, new_clipper);
evas_object_del(old_clipper);
when old_clipper deleted, _clipper_del_cb unset the current new_clipper of obj_A.
Summary:
By 403b0ecfa6 the coreaudio
support was dropped.
So 'HAVE_COREAUDIO' define is invalid.
Reviewers: jpeg
Subscribers: cedric, woohyun
Differential Revision: https://phab.enlightenment.org/D4732
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: Pointer ed->callbacks may have NULL value in callback add functions.
This reduce the chance of continue to kind of work for longer in case of memory
constrain. Maybe using Eina macro would be better.
Reviewers: jpeg, jypark
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4761
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Reviewers: jpeg, jypark
This could lead to a crash as we were checking against NULL on
the wrong pointer.
@fix
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4762
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: Pointer eina_mempool_malloc return value may have NULL value when
module aren't properly installed. This reduce the chance of a crash and increase
the likelyness of properly handling the failure.
Reviewers: jpeg, jypark
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4763
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
webp has slightly change since we registered this test and even if the
output is visually still close, as we do a perfect pixels comparison,
we are impacted by the slightest change. It would be nice to introduce
a function that does a more fuzzy comparison.
The "access,activated" smart callback is called when "Activate the selected item"
gesture occurs.
Application could do the activation action using elm_access_action_cb_set.
But we recommend not to use elm_access_action_cb_set for this purpose on atspi
environment. And this would be usual widget behavior as elm_button does.
Summary:
valign tag is for handling vertical align according to line's height and
text's height. But, it worked in a line which has only one font and
one font size, too. And the result was abnormal depending its font.
The line's height is [ascent + descent]. But, Textblock uses max ascent and
items's height(could be used max ascent + max descent according to its position)
when Textblock calculates item's yoff.
So, If Textblock calculate yoff based on line's height,
it should use only ascent and descent instead of max ascent and max descent.
@fix
Test Plan: Will attached in comment section.
Reviewers: raster, herdsman, jpeg, woohyun
Reviewed By: raster
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D4760
On Windows, fd and sockets are different. Sockets are actually HANDLES, hence
_get_osfhandle() should not be used with sockets, and GetHandleInformation()
and SetHandleInformation() can be used directly with sockets.
This is fixed by adding a function to test if the 'fd passed to fcntl() is a
socket or not.
the height of a item is 0 because the item is not realized, so if no
item is realized we are waiting until one is realized, until then we
just take 1px as a height, so at minimum one item needs to be realized.
If there is a realized item (or we are getting the event that there is
one) we are just calling _table_resize again, and are getting the size
for real.
in cases where a ui is using layers other objects could overlap the
hover object. Which is wrong, the genlist should stay above the rest of
the content, in any case.
if the parent is not a window the elm hover is created for the parent of
the combobox, which is a problem because the hover will not expand to
its full size of the window, and will stay in the size of the parent.
Adding the top widget instead of the parent widget fixes that.
Currently, elementary programs crash on termination on macOS (seems
Sierra-specific). This is very nasty, looks like deep memory corruption...
Without valgrind (or like) support on Sierra, it is difficult to
pinpoint the origin of the problem.
Due to the imminient release, and after discussion with @stefan, this
kludge will allow the release to happen.
This commit MUST be reverted just after the release, so we don't
blindfold ourselves!
Ref T5245
flipselector item destructor had a severe drawback and this patch fixes it.
when deleting multiple items at once, the view needs to be updated only once.
however, the destructor updated the view on deletion of
every single item and it caused a severe performance issue.
the worst case happened when deleting a flipselector object -
with 10000 items, it took 10 seconds to finish deletion.
this patch has two points:
1. if a flipselector object is on deletion, item destructor doesn't update the view
2. otherwise, view update is handled in one job for multiple item deletion
Summary:
eina_file_virtualize is causing issues.
memfile_set is better but see attached bt.
What to do???
Reviewers: raster, cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D4743
If the given string is not null-terminated, then strlen() will go out
of boundaries, we must limit the lookup to given 'n' parameter.
To do so use strnlen(), that is a strlen() bounded by a maximum size.
currently it's being defined in evil_fcntl.h, but the actual
implementation of fcntl() in evil_fcntl.c is causing problems with
sockets. So one possibility is to remove the ifdef, another is to
change the implementation.
This is the local socket for windows, analogous to AF_UNIX.
`Efl_Net_Socket_Windows` is the base class doing `ReadFile()` and
`WriteFile()` using overlapped I/O, as well as the close procedure
(`FlushFileBuffers()`, `DisconnectNamedPipe()` and
`CloseHandle()`). These are done on top of an existing HANDLE that is
set by `Efl_Net_Dialer_Windows` (from `CreateFile()`) or
`Efl_Net_Server_Windows` (from `CreateNamedPipe()`).
The overlapped I/O will return immediately, either with operation
completed or `ERROR_IO_PENDING`, which means the kernel will execute
that asynchronously and will later `SetEvent(overlapped.hEvent)` which
is an event we wait on our main loop. That `overlapped` handle must
exist during the call lifetime, thus cannot be bound to `pd`, as we
may call `CancelIo()` but there is no guarantee the memory won't be
touched, in that case we keep the overlapped around, but without an
associated object.
Windows provides no notification "can read without blocking" or
non-blocking calls that returns partial data. The way to go is to use
these overlapped I/O, with an initial `ReadFile()` to an internal
buffer, once that operation finishes, we callback the user to says
there is something to read (`efl_io_reader_can_read_set()`) and wait
until `efl_io_reader_read()` is called to consume the available data,
then `ReadFile()` is called again to read more data to the same
internal buffer.
Likewise, there is no "can write without blocking" or non-blocking
calls that sends only partial data. The way to go is to get user bytes
in `efl_io_writer_write()` and copy them in an internal buffer, then
call `WriteFile()` on that and inform the user nothing else can be
written until that operation completes
(`efl_io_writer_can_write_set()`).
This is cumbersome since we say we "sent" stuff when we actually
didn't, it's still in our internal buffer (`pd->send.bytes`), but
nonetheless the kernel and the other peer may be adding even more
buffers, in this case we need to do a best effort to get it
delivery. A particular case is troublesome: `write() -> close()`, this
may result in `WriteFile()` pending, in this case we wait using
`GetOverlappedResult()`, *this is nasty and may block*, but it's the
only way I see to cope with such common use case.
Other operations, like ongoing `ReadFile()` or `ConnectNamedPipe()`
will be canceled using `CancelIo()`.
Q: Why no I/O Completion Port (IOCP) was used? Why no
CreateThreadpoolIo()? These perform much better!
A: These will call back from secondary threads, but in EFL we must
report back to the user in order to process incoming data or get
more data to send. That is, we serialize everything to the main
thread, making it impossible to use the benefits of IOCP and
similar such as CreateThreadpoolIo(). Since we'd need to wakeup the
main thread anyways, using `OVERLAPPED.hEvent` with
`ecore_main_win32_handler_add()` does the job as we expect.
Thanks to Vincent Torri (vtorri) for his help getting this code done
with an example on how to do the NamedPipe handling on Windows.
While in UNIX we use 'select()/poll()' to query for read fds and this
will eventually callback with "can_read" event, use the loop to match
other implementations where can_read keeps true if not all data was
read.
We have a tag for unstable API, use it. It'll be visible in the
doc and force users to add the macro before being able to compile
code.
This amends d8dd685966.
_elm_gengrid_item_edge_check can have eo_it as NULL if none of widget item
is focused. This could happen if item_focus is not enabled on items.
test case: elm test -> gengrid 2 (enable only "focus hightligt set") and move focus.
@fix
Signed-off-by: Amitesh Singh <amitesh.sh@samsung.com>
We test a second match for a perfect match, then stop all further processing,
but we never test the first match. This leads to a situation where a system
wide .desktop file is given precedence over a local override.
Instead, check the first match too.
#test-e
if buffer canvas is not image object, this needs to emit a move event
to be consistent with other engines
probably this should emit events in all cases, but adding for image buffers
this close to release seems potentially risky so I'll leave that for later
ref 4a691f79df
Summary:
pa_stream's write callback requires to size of stream data
using 'len' parameter.
This size depend on pulse audio's internal status and not
consistent.
When a efl read audio's last stream, length of read('bread')
is less than write callback's 'len' parameter.
If the gap between 'len' and 'bread' is small,
last stream is played fortunately.
Otherwise, the last stream is discarded.
(It is doubtful about pa_stream's pre-buffering.)
To prevent it, push silent stream which is amount
of deficient length.
@fix T5281
Reviewers: raster
Reviewed By: raster
Subscribers: cedric, jpeg, woohyun
Maniphest Tasks: T5281
Differential Revision: https://phab.enlightenment.org/D4726
Summary:
There should be reallocation +1 (for last '\0') and also
checking >0, not !=0, because of getxattr can return -1 in case of error
@fix
Reviewers: cedric, raster, NikaWhite, jpeg
Reviewed By: NikaWhite
Subscribers: myoungwoon
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D4734
the code added by minkyoung has a definite security flaw here trusting
e->response to be within a small range when all it is is an int -
range is not limited other than that... so fix the code to check for
range like further code below does.
this commit went in 2 days ago... so not an existing bug fix.
The things you learn to love...
The situation was:
- An object is mapped (naviframe in an animation)
- One of its children has a mask
- The window is rotated by 90 or 270 degrees (landscape)
The mask glsl code to invert the x,y coordinate depends on the
screen rotation and this somehow was wrong.
Tested on Tizen and in elm_test "Masking", made with @jiin.moon.
@fix
Summary:
Delete check on NULL for icon object due to incorrect work. Function must delete
icon in map overlay (according to documentation) if we set NULL, but with this check -
nothing happening and after elm_map_overlay_icon_get we have not NULL returned value.
@fix
Reviewers: cedric, Hermet, raster, jpeg
Reviewed By: cedric
Subscribers: artem.popov
Differential Revision: https://phab.enlightenment.org/D4720
Summary:
This prevent invalid shared memory access.
Invalid access occur when server is resized sequentially from now to A-size
to B-size, and client receive A resize message after resizing B.
Then client try to render plug image with A-size, but shared memory is B-size
buffer. Size are mismatch. This makes segmentation fault when uploading texture(gl)
or rendering image(sw).
Test Plan: Indicator rendering on Tizen3.0 platform.
Reviewers: jypark, wonsik, dkdk, scholb.kim, jiin.moon, jpeg, cedric
Reviewed By: cedric
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4711
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
If we don't have EGL_EXT_buffer_age then we don't have buffer age - it's
a completely independent extension to KHR partial update.
This partially fixes partial update on recent mali drivers.
if efreetd cannot be connected to, stop infinitely trying to spawn it
since this generates crazy cpu load
probably this path should also send some cache events so that watchers
do not simply idle forever
ref T5200
If multi select mode is ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL and
user code try unselect a item and select another part which not
realized select callback calls twice in this case. For avoid this no
needs focus newly selected item.
@fix
Summary:
The function already has a precondition test for !font, so this
additional test will never trigger.
@fix CID1371525
Reviewers: cedric, jpeg
Subscribers: jpeg, cedric
Differential Revision: https://phab.enlightenment.org/D4682
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Time cmparision does not ensure the corrctness of posotion.
It is beacuse of double number calculation. Double number calculation
are not convertable.for example:
1/39 = 0.02564102564;
but 0.02564102564 * 39 = 0.99999999996 != 1;
The addition check for pos ensure the pos to be reached at its correct
position.
@fix
Signed-off-by: Umesh Tanwar <umesh.tanwar@samsung.com>
Reviewers: cedric, singh.amitesh, jpeg, raster
Reviewed By: raster
Subscribers: atulfokk, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4709
Signed-off-by: Amitesh Singh <amitesh.sh@samsung.com>
I believe there's a limitation in libglvnd where it doesn't
propagate the calls to eglGetProcAddress() properly to the vendor
library.
See also 265c851a8f
Since ecore now uses efl events to feed input events to the
canvas, anyone can now listen to any event on the evas. But
when using the legacy API the event info needs to be the legacy
struct, and not the eo event info otherwise crashes will happen.
While this is a new use of events, I consider it valid and it's
better to fix it rather than disallowing it. Fixed by wrapping
evas events the same way evas object events were handled.
Fixes T5266
It seems OSMesa was recently updated to not expose symbols statically,
so dlsym() returns invariably NULL. GetProcAddress must be used. Note
though that the extension "EGL_KHR_get_all_proc_addresses" is not
present (OSMesa is OpenGL, not GLES), and there is anyway no list
of extensions in OSMesa (at the WSI level, glGetString() returns a
ton of GL extensions as expected).
My OSMesa version is 11.2.0 (mesa 17.0.1).
This fixes make check.
@fix
prev_description was used when HAVE_EPHYSICS is set, which is the
default, but I also added a use in 7072fbc2bf where the map
was not properly reset.
This removes an ugly #ifdef and opens the door to other fixes
similar to that map one.
The item, after having been unswallowed from its decorate
item, becomes unclipped and unparented. The parent was well
reset, but the clip wasn't.
Test case:
elementary_test -to "Genlist Decorate Item Mode"
I'm sure some bugs are still lurking. Genlist is so lovely.
Fixes T1551
In the following sequence, the swallowed object map property is
never reset as it should have been:
- swallow object
- start program, change state to have a map
- do something
- start program, change state to have no map
but before render, unswallow the object
At this point, the object will never be un-mapped. This is weird.
Somehow edje_calc avoids calling evas_object_map_[enable_]_set
excessively, but I believe the issue is that the object does not
need recalc. Its container needed recalc, not the child (which is
mapped). I'm not 100% sure.
Test case:
elementary_test -to "Genlist Decorate Item Mode"
Click on rotate, select a few items, scroll up and down. Enjoy.
Ref T1551
@fix
In "Genlist Decorate Item Mode" after decorating a few items
(rotate or slide, doesn't matter), only one item or none should
be decorated. Scrolling up and down the genlist should work just
fine. This fixes massive render issues and inconsistent states
of the items in this test case.
"rotate" mode is still going nuts.
Ref T1551
This reverts commit 3a9d54085b.
I got crash and a lot of valgrind warning with this patch. All in all, I
think we can just wait for next release and do a proper cleanup of our API
to not rely on strings at all.
For references this is the first valgrind warning I get (Not going to past the 100 following one) :
==11860== Invalid write of size 4
==11860== at 0xB10DDD1: _ecore_event_evas_modifier_lock_update (ecore_input_evas.c:432)
==11860== by 0xB10E3DD: ecore_event_evas_mouse_move (ecore_input_evas.c:725)
==11860== by 0x5D5115D: _ecore_call_handler_cb (ecore_private.h:317)
==11860== by 0x5D5115D: _ecore_event_call (ecore_events.c:518)
==11860== by 0x5D5CC47: _ecore_main_loop_iterate_internal (ecore_main.c:2381)
==11860== by 0x5D5D42E: ecore_main_loop_begin (ecore_main.c:1289)
==11860== by 0x5D5D490: _efl_loop_begin (ecore_main.c:2831)
==11860== by 0x5D59555: efl_loop_begin (efl_loop.eo.c:32)
==11860== by 0x14F275: main (test.c:1188)
==11860== Address 0x19a36828 is 7 bytes after a block of size 1 alloc'd
==11860== at 0x4C2AACE: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==11860== by 0x4C2CC81: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==11860== by 0xB10DDA8: _ecore_event_evas_modifier_lock_update (ecore_input_evas.c:425)
==11860== by 0xB10E3DD: ecore_event_evas_mouse_move (ecore_input_evas.c:725)
==11860== by 0x5D5115D: _ecore_call_handler_cb (ecore_private.h:317)
==11860== by 0x5D5115D: _ecore_event_call (ecore_events.c:518)
==11860== by 0x5D5CC47: _ecore_main_loop_iterate_internal (ecore_main.c:2381)
==11860== by 0x5D5D42E: ecore_main_loop_begin (ecore_main.c:1289)
==11860== by 0x5D5D490: _efl_loop_begin (ecore_main.c:2831)
==11860== by 0x5D59555: efl_loop_begin (efl_loop.eo.c:32)
==11860== by 0x14F275: main (test.c:1188)