Commit Graph

12606 Commits

Author SHA1 Message Date
Marcel Hollerbach 5b3fd27931 efl_ui_focus_manager: handle logical end correctly. 2017-04-20 14:38:58 +02:00
Marcel Hollerbach 6245e5a579 efl_ui_focus_manager: fix error message 2017-04-20 14:38:58 +02:00
Marcel Hollerbach 13982b2bd9 efl_ui_focus_manager: return the new candidate 2017-04-20 14:38:57 +02:00
Marcel Hollerbach a5c7006579 efl_ui_focus_manager: handle redirect objects in logical better 2017-04-20 14:38:57 +02:00
Marcel Hollerbach 200ad8ab50 efl_ui_focus_manager: be more secure 2017-04-20 14:38:57 +02:00
Marcel Hollerbach 924033e88a efl_ui_focus_manager: fix sub manager logical handling 2017-04-20 14:38:57 +02:00
Marcel Hollerbach a4616bb6fe efl_ui_focus_manager: better error messages 2017-04-20 14:38:57 +02:00
Marcel Hollerbach 09824ec450 efl_ui_focus_manager_sub: focus the item in sub and main manager 2017-04-20 14:38:57 +02:00
Marcel Hollerbach d4bd5c9961 efl_ui_focus_manager: add log domain for focus movements 2017-04-20 14:38:57 +02:00
Marcel Hollerbach 89cc2ca06a efl_ui_focus_manager: restructure node struct
a redirect can happen for logical OR normal
2017-04-20 14:38:57 +02:00
Marcel Hollerbach 0c1c2711f3 efl_ui_focus_manager: more debug information 2017-04-20 14:38:57 +02:00
Marcel Hollerbach 6d1df04f24 efl_ui_focus_manager: do not depend on elm widget events 2017-04-20 14:38:57 +02:00
Marcel Hollerbach 54145f488b efl_ui_focus_manager: unset redirect when focusing new item 2017-04-20 14:38:57 +02:00
Marcel Hollerbach 1424875f0a efl_ui_focus_manager: make next and prev searching deadlock prove 2017-04-20 14:38:57 +02:00
Marcel Hollerbach 8a216da3bb efl_ui_focus_manager: unset redirect when destroyed 2017-04-20 14:38:57 +02:00
Marcel Hollerbach be251b0496 efl_ui_focus_manager: allow flushing of one single node
this gives a massive performance boost
2017-04-20 14:38:57 +02:00
Marcel Hollerbach 0df0d9d358 efl_ui_focus_manager_sub: register the forwared itself 2017-04-20 14:38:57 +02:00
Marcel Hollerbach 0f2657983f efl_ui_focus_manager: handle redirect managers in a better way 2017-04-20 14:38:57 +02:00
Marcel Hollerbach b53f3edd15 elm_widget: update focus register work
now it trackes changes of the parent manager. And registers more
reliable.
2017-04-20 14:38:57 +02:00
Marcel Hollerbach 67a697fedd efl_ui_focus_manager: fix up tracking and returning of data
a logical parent should not be in the border elements. The child should
also be not deleted itself. If we do so correct deletion could fail.
2017-04-20 14:38:57 +02:00
Marcel Hollerbach 669db4841a efl_ui_focus_manager_sub: update to recenent changes 2017-04-20 14:38:57 +02:00
Marcel Hollerbach 7eb1df349c efl_ui_focus_manager_sub: register children correctly 2017-04-20 14:38:57 +02:00
Marcel Hollerbach 4932ec5f63 elm_widget: add logical parent to interface
and evaluate all values correctly and emit the correct events
2017-04-20 14:38:57 +02:00
Marcel Hollerbach e614c96466 elm_widget: make sure we dont have a destructed logical parent 2017-04-20 14:38:57 +02:00
Marcel Hollerbach 6264eb64e4 efl_ui_focus_manager_sub: register the root as logical 2017-04-20 14:38:57 +02:00
Marcel Hollerbach f6aefb2d88 efl_ui_focus_manager: a logical item should never get focus. 2017-04-20 14:38:57 +02:00
Marcel Hollerbach a5868fc819 efl_ui_focus_manager: use data iterator not key iterator
this saves one call to node_get
2017-04-20 14:38:57 +02:00
Marcel Hollerbach 37ce83cc04 elm_widget: enhance focus handling of the widget
widgets will now use there widget parent as logical parent.
2017-04-20 14:38:57 +02:00
Marcel Hollerbach 1f8e6dcb37 elm_widget: add debugging informations for a manager in a widget 2017-04-20 14:38:57 +02:00
Marcel Hollerbach f2248410b2 efl_ui_focus_manager: new api for adding a logical widget
a widget which is registered logically will not be used for right left
top or down relations.
2017-04-20 14:38:57 +02:00
Marcel Hollerbach 9aa7c63b2f efl_ui_win: make it a focus manager
Added a focusmanager with the window itself as the root.
2017-04-20 14:38:57 +02:00
Marcel Hollerbach 97265254e6 elm_widget: make it a efl_ui_focus_object
it will register based on it can_focus flag
2017-04-20 14:38:57 +02:00
Marcel Hollerbach 0eefeca64b efl_ui_focus_manager: add new api to receive child configuration 2017-04-20 14:38:57 +02:00
Marcel Hollerbach 78e7891029 focus: fix compilation
it seems like eolian changed, so i need to import the eina_types
2017-04-20 14:38:57 +02:00
Marcel Hollerbach b75b5f4c05 managersub: remove the select_set call
this can be done directly be inheriting border_elements and cutting down
the set.
2017-04-20 14:38:57 +02:00
Marcel Hollerbach ef3f302a65 focus: update documentation on all eo files
we should now have a complete documentation of those eo files
2017-04-20 14:38:57 +02:00
Marcel Hollerbach 357715f091 focus: update object definition
the event is now a bit better, since you only need to subscribe to one
event instead of two, the new state is passed in the event.
2017-04-20 14:38:57 +02:00
Marcel Hollerbach 01f46ae205 efl_ui: introduce a focus manager and sub manager object
The Efl.Ui.Focus.Manager abstracts the creation of a localization graph
and a logical tree. The localization graph is used to find a object
right left up or down of a given object. The logical tree is used to
iterate throuw the containers which are used to build a ui.

Those managers can be used bound to some layer in the ui, so for
example the window is a layer, the content of a scroller is a layer.
With those layers, we can make sure that movements of a scroller for
example just means that this graph of objects in the scroller needs to
be recalculated, and not the complete ui.

The advantage of having this to layer bound datastructures is that you
can easily debug those graphs, since the complete layer of this
managerobject can be calculated completly.
2017-04-20 14:38:57 +02:00
Jean-Philippe Andre 331bf9f746 elm_image: Fix file_set when preload is disabled
If we disable preload, then the second file set on an elm_image
object would not trigger a deletion of the first image. As a
consequence, both images would be visible... really bad if there's
alpha or different dimensions!

Thanks Anand Kumar for the report!

@fix
2017-04-20 18:54:59 +09:00
Derek Foreman 30cd3f8615 ecore_wl2: destroy dmabuf global at shutdown
Fixes a small memory leak.
2017-04-19 16:45:34 -05:00
Derek Foreman 9d3eaac080 ecore_wl2: refactor global cleanup in shutdown paths
Both session recovery and regular disconnect do this, so make
it a function to ensure they stay in sync.
2017-04-19 16:40:17 -05:00
Chris Michael c4b22eb59c ecore-drm2: Iterate plane formats properly
This patch addresses an issue where plane formats were not being
properly copied into our Plane State structure and causing any usage
of our atomic code paths to crash and burn

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-04-19 14:58:11 -04:00
Chris Michael 8eb1e925ae elput: Remove specific case for pointer wheel tilt
Since efl-jenkins does not have libinput >= 1.7.0, this commit broke
the jenkins build due to missing
LIBINPUT_POINTER_AXIS_SOURCE_WHEEL_TILT value. We should be able to
get by with letting 'default' case handle it....

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-04-19 14:13:29 -04:00
Jeeyong Um c8ca766a49 elm.hoversel: highlight selected item when auto update is enabled
Summary:
When auto update is enabled, the label of the hoversel will be that of selected
item. This feature is usually used when changing state of something.
Highlighting item previous selected will show what is current state more
explicitly especailly hoversel has many items.

Test Plan: elementary_test -to hoversel

Reviewers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4799

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-04-19 10:49:21 -07:00
Bryce Harrington 0d59a7a803 ecore_evas: fix some incorrect words
Summary:
 + whichever -> whatever
 + hyphenate pre-* and post-*
 + flowed -> followed

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4802

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-04-19 10:49:21 -07:00
Bryce Harrington 288e60dee2 evas: fix several incorrect words
Reviewers: cedric

Reviewed By: cedric

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4803

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-04-19 10:49:20 -07:00
Bryce Harrington 4768b38e6c evas: fix spelling for "ptimitive"
Reviewers: cedric

Reviewed By: cedric

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4804

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-04-19 10:49:20 -07:00
Chris Michael 642e7357f8 elput: Add case for wheel tilt when getting pointer axis value
libinput >= 1.7.0 added support for
LIBINPUT_POINTER_AXIS_SOURCE_WHEEL_TILT, however we do not yet support
that in elput, thus gcc was spilling a warning about an unhandled
enumeration value here. We'll add a case for the above, plus a default
to cover any future additions.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-04-19 13:16:57 -04:00
Chris Michael 0e6cd3fbf5 elput: Remove unused variable
Gcc reports 'flags' as unused here, so remove it

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-04-19 13:15:02 -04:00
Chris Michael 0652fbe91c ecore-con: Remove unused variable
Gcc complains that 'flags' here may be used uninitialized. In looking
at the code, 'flags' does not seem to be needed in the debug prints
here. If we keep and initialize the variable to 0 during declaration,
it would only ever print out 0 anyway as 'flags' is never changed in the
code.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-04-19 10:57:43 -04:00
Daniel Kolesa 84a584b313 eolian: fix buggy generation of auto/empty on properties
We only want to generate auto/empty function bodies on what is
specified inside the braces for properties, not for the whole
property.
2017-04-19 13:24:38 +02:00
Jeeyong Um 7ba0707851 Evas.Table: Apply mirrored correctly when align is set
Summary:
When table items are left aligned and mirrored is set, items should be placed
from the right side, but align is not changed. (still left-aligned)

@fix

Test Plan: make and run attached example

Reviewers: cedric, jpeg

Subscribers: thiepha, woohyun

Differential Revision: https://phab.enlightenment.org/D4758
2017-04-19 16:47:39 +09:00
se.osadchy abd71b2cfc elm_map: Fix elm_map_overlay_color_get
Summary:
Add all supports types for overlay color (such as in Doc.)
@fix

Reviewers: cedric, Hermet, raster, NikaWhite, jpeg

Reviewed By: jpeg

Subscribers: jpeg, artem.popov

Differential Revision: https://phab.enlightenment.org/D4800
2017-04-19 14:55:41 +09:00
Jean-Philippe Andre ec71288548 eo: Micro-optimize function calls
This is related to the previous changes to efl_super.
2017-04-19 14:44:14 +09:00
Jean-Philippe Andre 9a81165830 eo: Remove super bit from eo id
It is not required anymore as the super class and super bit can
be stored inside the object data. See the previous patches.
2017-04-19 11:41:15 +09:00
Jean-Philippe Andre 28d785ccb8 eo: Add docs for efl_super and efl_cast (doxygen) 2017-04-19 11:35:48 +09:00
Jean-Philippe Andre 19b9234f23 eo: Add new API efl_cast
This is similar to efl_super but the specified class is the one
we want to call the function on. This is similar to dynamic_cast<>
in C++.

Note: both efl_super() and efl_cast() need documentation!

This is an experimental feature.

Fixes T5311

@feature

Maniphest Tasks: T5311

Differential Revision: https://phab.enlightenment.org/D4797
2017-04-19 11:15:30 +09:00
Jean-Philippe Andre 85636658e0 eo: Remove lock from efl_super
I've always really disliked this lock. If someone calls a non-eo
function by accident with efl_super() then you'll most likely end
up in a deadlock.

This adds the cur_klass pointer to the object itself, exploiting
the fact that we have 8 bytes of padding (on 64 bits, at least).

Also, this opens the door to efl_cast() which would be similar to
efl_super() except that only a dynamic cast is done, not a call
to the parent function.

make benchmark shows a performance improvement, surprisingly.

This is a bit experimental. See also the following commit (efl_cast)
2017-04-19 11:04:12 +09:00
Ivan Furs c9469e0b01 ecore_pipe: Fixed dead lock with epoll
See a76ebea2d8 and the following
commits on this file.

The following test scenario let to easily reproducible
application hangs:

  elementary_test -to "Icon Desktops"
  # then scroll vigorously with the mouse wheel up/down

This patch was applied as a new revision on the below diff:

Differential Revision: https://phab.enlightenment.org/D4754
2017-04-19 10:33:03 +09:00
Cedric BAIL b12311804f elput: use new API eina_file_close_on_exec. 2017-04-18 16:56:56 -07:00
Cedric BAIL 9bd80d542c eio: use new API eina_file_close_on_exec. 2017-04-18 16:56:40 -07:00
Cedric BAIL 214e22bf72 ecore_file: use new API eina_file_close_on_exec. 2017-04-18 16:56:18 -07:00
Cedric BAIL 662f7d3310 ecore_con: use new API eina_file_close_on_exec. 2017-04-18 16:56:01 -07:00
Cedric BAIL 712f7e878b ecore: use new API eina_file_close_on_exec. 2017-04-18 16:55:31 -07:00
Cedric BAIL a2094567c9 evas: use new API eina_file_close_on_exec. 2017-04-18 16:55:03 -07:00
Cedric BAIL fed9ca47f2 eet: use new API eina_file_close_on_exec. 2017-04-18 16:54:44 -07:00
Cedric BAIL b2893dfc77 eina: use new API eina_file_close_on_exec. 2017-04-18 16:54:03 -07:00
Cedric BAIL 9d8549f7a3 eina: add an API to correctly do close on exec. 2017-04-18 16:53:26 -07:00
Chris Michael e2a6ee29f0 ecore-drm2: Add fields to plane structure for current, next, pending
FBOs

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-04-18 07:55:10 -04:00
Chris Michael d3d9ab2296 ecore-drm2: Free any previous atomic request
If we fail the atomic request merge, cleanup any previous request and
just use the new one.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-04-18 07:55:10 -04:00
Chris Michael 345fefd3ef ecore-drm2: Add API functions for atomic commit test and commit
This patch adds 2 new API functions, one which we can use to test atomic
commits before actually applying them, and another which does the
actual Atomic commit.

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-04-18 07:55:10 -04:00
Chris Michael 9d5c76e0d5 ecore-drm2: Add library symlink to merge atomic commit requests
Small commit to symlink to drmModeAtomicMerge function so we can use
that for atomic commit tests.

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-04-18 07:55:10 -04:00
Chris Michael 9e07d37320 ecore-drm2: Add API function to set plane destination
When we do an atomic commit, we need to know where to place a given
plane (in the case of overlays) in relation to the CRTC, so provide an
API function that can be used for that purpose.

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-04-18 07:55:10 -04:00
Chris Michael 44d5c855e0 ecore-drm2: Store plane src values on assign
As we will need the plane state source values when we do an atomic
commit, we can store them when plane_assign is called as we already
have the FBO available.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-04-18 07:55:10 -04:00
Chris Michael 19da4706f3 ecore-drm2: Add hardware plane functions
This patch adds a new file where we can store any additional functions
we may need to work with hardware planes. Currently the file contains
a public function that can be used to assign a given Ecore_Drm2_Fb to
a hardware plane

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-04-18 07:55:10 -04:00
Chris Michael f1525ecf35 ecore-drm2: Cleanup list of output planes on output_destroy
Small patch to make sure we free memory previously allocated for
hardware planes when we destroy an output

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-04-18 07:55:10 -04:00
Chris Michael 9dbf54e2f6 ecore-drm2: Move defines for CAP_CURSOR sizes to private header
As we may need these defines in other files, move them to the private
header so there is access to them.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-04-18 07:55:10 -04:00
Chris Michael 205c829a11 ecore-drm2: Store cursor size on device
As we will need these values later to determine if an FBO can go onto
the cursor plane, we should store this in the device structure to
avoid having to refetch them later.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-04-18 07:55:10 -04:00
Chris Michael 980ed70eb9 ecore-drm2: Support multiple planes on a given output
Various hardware can support multiple planes on a given output. As
such, we need to be able to store multiple plane states per-output.
This small patch adds support for that.

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-04-18 07:55:10 -04:00
Chris Michael 4f8f41299f ecore-drm2: Add support for plane formats
Small patch to store supported formats on a given plane state. This
will be used for assigning dmabuf clients to a hardware plane based on
size and supported format.

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-04-18 07:55:10 -04:00
Chris Michael 0a647f9fce ecore-drm2: Remove old atomic flipping code
As we are refactoring the usage of hardware planes and atomic commits,
we need to remove the old usage of atomic flipping for ecore_drm2_fb
because atomic flipping will be handled differently.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-04-18 07:55:10 -04:00
Chris Michael 43104a7268 ecore-drm2: Add opaque structure to represent a hardware plane
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-04-18 07:55:10 -04:00
Chris Michael 554883c048 ecore-drm2: Disable driver whitelist tests
While having the ability to test for specific driver and kernel
versions is nice to ensure that Atomic is supported, it quickly can
get out of hand trying to maintain this whitelist so (for now) disable
it and rely on the kernel results from drmSetCap.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-04-18 07:55:10 -04:00
Derek Foreman 61f40d58f7 ecore_drm2: Add ecore_drm2_fb_dmabuf_import
Imports a set of dmabuf buffers as a single Ecore_Drm2_Fb
2017-04-18 07:55:10 -04:00
Derek Foreman f0fc86516d ecore_drm2: store 4 handles, strides, and planes
We're going to support multi-planar formats soon.

It'll be great, you'll love it.
2017-04-18 07:55:10 -04:00
Derek Foreman 45e173d186 ecore_drm2: Use library function instead of ioctl for addfb2
Minor clean up.
2017-04-18 07:55:10 -04:00
Jean-Philippe Andre 86d1f2b6cd eo: Use COW to save 8~16 bytes per object
Summary:
This uses Eina_Cow to implement support for rarely used features
in EO objects. This covers:
- composite objects (eg. UI widgets: combobox, text, video, win)
- vtable for efl_object_override
- del_intercept

All of these features are quite tricky to get right and while
very useful, should still be used with great care. With this patch,
the size of an _Eo_Object struct comes down from 80 bytes (rounded
up from 72b) to 64 bytes (rounded up from 56b) on 64 bits.

Also I haven't measured precisely but I don't expect any performance
impact since the COW data is more likely to remain in L1/L2 cache,
as the default one will be used most often. Unfortunately, the
results of "make benchmark" have been quite inconsistent over
multiple runs.

This saves ~64kb in elementary_test (>4k objects) at the cost of
~100 calls to COW write (del intercept on some events).

@optimization

Reviewers: raster, cedric

Differential Revision: https://phab.enlightenment.org/D4796
2017-04-18 18:52:27 +09:00
Bryce Harrington 10f1fedfec ecore_evas: Unnecessary to test p before calling free(p)
Summary:
Modern, standards-compliant compilers already test p, so as per the C
spec it is superfluous to do so before the call.

Reviewers: jpeg

Reviewed By: jpeg

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4791
2017-04-18 18:42:51 +09:00
Vyacheslav Reutskiy c4e7d611d6 elm_filselector: don't force the icon size
A icon in the files view, mode grid, should not apply size bigger then
swallow for it. This commit additional fix for
52ddf9331a
2017-04-18 11:32:52 +03:00
Carsten Haitzler c65782b15c ecore file - use eina_file_mkstmp to solve umask complaint
this fixes coverity CID 1039614
2017-04-18 17:30:50 +09:00
Carsten Haitzler 706c7f9e3b genlist - fix coverity complaint about null check
we checked for null and then just used a null return later inthe loop.
this fixes that. this should fix CID 1360955
2017-04-18 17:30:50 +09:00
Carsten Haitzler 330368c10c eina log - try and fix coverity complaint about integer overflow again
it seems coverity didn't like our checks like if end - start > 0xffff
then dont do anything. this should effectively stop any issues but
seemingly not, so try another way to keep coverity happy.

CID 1361219
2017-04-18 17:30:50 +09:00
Carsten Haitzler f3f032e63f eina log - try and fix coverity complaint about integer overflow again
it seems coverity didn't like our checks like if end - start > 0xffff
then dont do anything. this should effectively stop any issues but
seemingly not, so try another way to keep coverity happy.

CID 1361220
2017-04-18 17:30:50 +09:00
Carsten Haitzler 4a4b0d8794 evas key lock state set - remove dead code
l is checked for NULL twice. this removes the pointless second check.
@fix
2017-04-18 17:30:50 +09:00
Carsten Haitzler 4e282c79bd evas key modifier state set - remove dead code
m is checked for NULL twice. this removes the pointless second check.
@fix
2017-04-18 17:30:50 +09:00
Carsten Haitzler 55ad786873 evas - table - remove logically dead code
this is right - it is dead code. this fixes CID 1372487

@fix
2017-04-18 17:30:50 +09:00
Jihoon Kim badf7bca45 ecore_imf: Added a new ecore_imf_context_keyboard_mode_get API and input_panel_event_callback type
Summary:
Applications want to know the current keyboard mode state to handle application's size manually.
So added a new ecore_imf_context_keyboard_mode_get API and input_panel_event_callback type for
keyboard mode.

Test Plan: Tested in Tizen device

Reviewers: jihoon, woohyun, id213sin

Reviewed By: jihoon

Subscribers: cedric, jsuya, z-wony, jpeg

Differential Revision: https://phab.enlightenment.org/D4790
2017-04-18 16:18:10 +09:00
Vyacheslav Reutskiy 52ddf9331a elm_fileselector: fix thumbnail size for other themes bisides default
Elm_fileselector has the hardcoded value for calculate the item size
with thumbail, this size was 16, it's looks like thumbnail size plus
labal text height, but hardcoded value haven't effect to scale. Other
problem with items without labels. As a result we have correct
thumbnail size only with default theme and with scale 1.0.

This commit made the item size accordingly to size what user set. It's
made more clearly this API behavior.

@fix
2017-04-18 10:04:07 +03:00
Vyacheslav Reutskiy 0ecf3c6906 fileselector: apply style for files view
By some reason style does not applyed to genlist/gengrid in
fileselector. Also fixed issue with applyed style for files view on
change mode.  Now this problem is fixed.

@fix
2017-04-18 10:04:07 +03:00
Jean-Philippe Andre acb9ae70fe eo/elm: Simplify box/grid EO API
After talking with @eunue I realised that the way I'd first
implemented the box/grid "pack" API was simply too complicated.
I had tried to make it possible to change the layout function
at runtime, like good old evas box, but since there are no function
pointers in EO the final design was really convoluted.

If someone really needs to change the layout of a box at runtime,
just create your own subclass, or unpack all items and repack them
in a new box.

Note: there are still some issues with the layout params & flow
2017-04-18 15:34:29 +09:00
Jean-Philippe Andre d6d4c3c25b eo: Fix crash in case of API misuse
If efl_object_override() is called with a function that does
not exist in the original class, it may lead to a crash on
indexing an non-existing array in the vtable.

This is really just a safety check, as the usage was wrong:
 * You are only allowed to override functions that are defined in the
 * class or any of its interfaces (that is, efl_isa returning true).
2017-04-18 15:34:29 +09:00
Carsten Haitzler 3e494a0a21 ecore pipe - fix checking return of read for pipes in new code 2017-04-18 14:30:22 +09:00
Carsten Haitzler 352174784e ecore pipe - fix new coverity complaint about using closed socket
this should fix CID 1374297
2017-04-18 14:25:56 +09:00
Carsten Haitzler 1eb36e6f84 ecore pipe - fix potential use of freed pipe data
new thanks to new patches so not an existing bug in the last release
2017-04-18 14:25:56 +09:00
Carsten Haitzler 0911370790 ecore pipe - clean up formatting a bit 2017-04-18 14:25:56 +09:00
Jean-Philippe Andre e79f27ae0c efl: Remove manual definitions of event "changed"
Honestly I can't see why gfx & gfx.path "changed" need a manual
definition, instead of relying on EO. If the API needs to be
internal only, then EO needs to handle internal APIs. In this
case, the event was exposed as a C API but not a EO... why?
2017-04-18 11:07:46 +09:00
Woochan Lee e85c92662b elm_calendar: Improve code quality.
Summary:
The values(259200, 86400) are hard to know the meaning.
And we don't have to call gmtime() in for loop.

Test Plan: elementary_test -> calendar

Reviewers: jpeg, Hermet, shilpasingh, cedric

Reviewed By: cedric

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4717
2017-04-18 10:17:07 +09:00
Derek Foreman fddbf75fc9 Fix sed error that changed "video" to "videfl"
commit c662934be8 seems to have accidentally
renamed a few instances of _video_ to _videfl_, this hopefully changes
them all back.
2017-04-17 17:06:28 -05:00
Derek Foreman 6319f3831a ecore_wl2: Remove unused code
ecore_wl2 contains a bunch of code for compositor side seat handling.
There's really no need for a client to do this, and E does the
compositor side seat stuff internally, so this code will never
be used.

This removes the unused code.
2017-04-17 14:45:14 -05:00
Carsten Haitzler 0a600a45d3 Revert "ecore_imf: Add ecore_imf_context_keyboard_mode_get API"
This reverts commit 4533eef59b.

this commit breaks efl's build and can't be fixed - missing types.
2017-04-17 17:23:19 +09:00
Carsten Haitzler 2055a876c4 ecore pipe - fix cast warning by casting (validly) 2017-04-17 17:08:33 +09:00
Jean Guyomarc'h 8f0402e2fb ecore: fix build on macOS
Epoll/timerfd is not available on "everything but Windows".
This fixes a76ebea2d8.
2017-04-17 09:57:53 +02:00
Jihoon Kim 4533eef59b ecore_imf: Add ecore_imf_context_keyboard_mode_get API
Summary:
When the keyboard mode state is changed, the keyboard_mode_event_cb will be called, too.
But there is no way to get keyboard mode manually.

Test Plan: Tested in Tizen device

Reviewers: jihoon, woohyun, id213sin

Reviewed By: jihoon

Subscribers: jpeg, z-wony, jsuya, cedric

Differential Revision: https://phab.enlightenment.org/D4786
2017-04-17 16:53:50 +09:00
Carsten Haitzler 2ea4872869 ecore_pipe - fix recent patch to close on exec the epoll fd 2017-04-17 14:23:33 +09:00
Ivan Furs a76ebea2d8 ecore_pipe: added epoll
Summary: integration epoll in ecore_pipe

Reviewers: cedric, NikaWhite, rimmed, an.kroitor, vtorri, raster

Reviewed By: raster

Subscribers: artem.popov, cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4754
2017-04-17 12:28:42 +09:00
Ivan Furs 0e7ee821cd eina: For Windows fix crash when the file was opened many times.
Summary:
A similar problem as:
    commit 62b469749a

Reviewers: NikaWhite, t.naumenko, an.kroitor, FurryMyad, cedric, raster, vtorri, rimmed

Reviewed By: raster

Subscribers: artem.popov, cedric, jpeg

Tags: #windows, #efl

Differential Revision: https://phab.enlightenment.org/D4788
2017-04-17 11:51:05 +09:00
Jean-Philippe Andre 03b0e23137 evas filters: Fix rare crash with async render
Reported by bu5hm4n

@fix (backport will look slightly different)
2017-04-14 13:57:04 +09:00
Jean-Philippe Andre 3c92b32c13 evas filters: Fix async RW rendering
This fixes a crash (when deleting the output image), and rearranges
the code a bit.
2017-04-14 13:57:04 +09:00
Jean-Philippe Andre 30ac315631 evas filters: Cleanup unused buffers
This might not be used as over two consecutive runs all the
same buffers should be used. But it could happen if some
parameters in the filter change (eg. blur radius).

Fixes major (GPU) memory leaks. Reuse mode is still leaking.
2017-04-14 13:57:04 +09:00
Jean-Philippe Andre 01a4ecd92c evas filters: Adjust downscale coordinates to avoid artifacts
This avoids sampling artifacts when moving or resizing a
snapshot object over a region with sharp content (eg. text).
2017-04-14 13:57:04 +09:00
Jean-Philippe Andre 5467d1eb3e evas filters: Fix artifacts when scaling up & down
An odd-sized image scaled down by 2 was losing 1 pixel during the
downscale, and it was not restored after scaling up. The same
happened with downscaling by 4 except the effect was even more
visible.

This meant that a moving snapshot with a large blur would trigger
some really ugly sampling issues if the content below was precise
(such a text).
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre 4cbff5f0ea evas filters: Fix maps with filtered snapshots
Another wonder of evas render... maps, clips, snapshots, filters...
This fixes animations with windows that have a snapshot decoration.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre b5a5f61cd6 evas filters: Prevent redraws when obscure changed
If the obscured area in a snapshot object changes a lot, do
not try to keep track of it forever. Instead, redraw the filter
over the entire object region, without obscure.

This fixes a performance issue when an opaque window is moved
above a fixed transparent window (the latter has a snapshot with
blur filter).
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre fc92a1c0f6 evas filters: Enable down scaling with GL blur
This dramatically improves the performance and now seems
to give acceptable results. Eventually we need a quality flag
in order to enable this or not. Alternatively, "gaussian" blur
mode would skip this optimization, while "default" would trigger
it.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre 293438111c evas filters: Avoid creating input buffer for images
When the filtered object is an image, without borders, map,
fill info or anything of this sort, then the filter input
buffer is really just a copy of the original image. We can
skip that to save on memory usage and pixel fetches.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre 08a8072571 evas: Fix cutout handling for snapshot objects
This improves over the previous code for handling
snapshot objects and cutouts. Basically any opaque object
above a snapshot should be obscuring it. That is true
unless a crazy filter is applied, or the snapshot object
is itself the source of a map or proxy.

This also uses eina_tiler instead of a custom (and really
bad) algorithm to compute the obscure regions.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre c53f1526f1 evas: Make save() work on snapshots
This make save() work on snapshot objects, provided the call
is done from inside render_post.

Also, this saves the filtered output of an image, rather than
its source pixels. Any call to save() on a filtered image must
be done from post-render as well.

Fixes T2102

@feature
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre 06a7beec52 evas filters: Switch to uniforms in GL blur
This was a poor attempt at improving the performance but
obviously the root cause isn't fixed (too many texel fetches).

Uniform should (theoretically) work better than an attribute
the for loop. Just a guess here.

This also makes GL blur use a float value as radius, allowing
future extension to non-integer blur radii, as well as using
linear scaling as a fast blur approximation.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre 408115cef6 evas image: Factorize some code for render
This factorizes some of the common code for image render
and resolving is_inside (verifying alpha value of a pixel).
This should also be used by save(), as well as buffer_map().

This patch introduces lots of whitespace changes by using return
instead of long if() {} or else {} blocks.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre 530399acde evas filters: Force redraw of snapshot if cutout shrank
The situation is clearly visible in the Snapshot test case:
increase the radius and a red glow would appear. This is because
the snapshot object was not marked as needing redraw and so had
no pixels under the opaque rectangle.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre a8b6c1cd7f evas filters: Move private data out of evas headers
This moves the filter internal data back to the filters
implementation, rather than inside evas common headers.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre b6c5af5edc evas: Fix excessive redraws of snapshot objects 2017-04-14 11:26:44 +09:00
Jean-Philippe Andre 1bf24f8762 evas filters: Refactor to support reuse of buffers
This will reuse existing buffers by resetting only the minimum
required in the filter context (also reused). Work in progress,
as the actual reuse is disabled for now.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre 9aa335cecc evas filters: Remove warning about OpenGL
Well... I'm working on making all this work, so the log
is a bit irrelevant now.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre b77cb960ca evas filters: Avoid unnecessary draw
This avoids creating one more FBO and doing one more draw,
by rendering the image input data directly into the input
buffer. This also makes the code common between SW and GL.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 6af3c20aeb evas filters: Pass gaussian values to GL blur shader 2017-04-14 11:26:43 +09:00
Jean-Philippe Andre a9ddeeb4fb evas filters: Use GL downscaling for blur
This will improve the performance a lot. Now remains to figure
out the best values for downscaling and improve the actual blur
shader as well.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre d56f9afa40 evas filters: Recompile filter after data_set 2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 3f6f51560a evas: Consider objects in copy mode as opaque
This skips extra tests with image objects that have the
is_opaque() function. That way, if an object is marked as COPY,
rendering of all objects below it will be skipped.

This can dramatically help with performance when flagging a
snapshot object as COPY. This should not be done if a filter is
applied and is meant to blend with the underlying UI.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 1336b2d9e0 evas filters: Expand snapshot regions by blur radius
When using a snapshot object we have access to exactly all
the pixels below it inside the snapshot surface. So, in order
to produce a nice blur, it is necessary to expand this snapshot
and then clip it otherwise the edges will look a bit ugly.

Unfortunately, there are still places where blurs didn't look
so good, as objects below an opaque region would never get
rendered into the snapshot object. So the edges, inside a
snapshot object, around an opaque region would have blur
artifacts.

This fixes that by shrinking the cutout regions by the radius
of the filter. Eg for blur this is the blur radius.

The test case in elm_test can exhibit this fix very clearly:
a red glow would be visible around the opaque rectangle, but with
these changes we instead see the blurry edges of the objects
below the rectangle.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 9b1ea2fc6b evas: Pass obscuring region to the filters
This will be most useful in a special case, where a filter is
used in a window decoration, applied to a snapshot object.

Another optimization that might be wanted is passing a list
of update regions (from the proxy or snapshot).

The filters don't support the obscuring region yet, only some
of the high-level logic is implemented.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre a6951397f6 evas: Optimize redraws of snapshot objects
If anything in the canvas needs redraw and a snapshot object
happens to intersect with the update region then it was redrawn,
even if all objects below it hadn't changed. This has an insane
performance impact when you apply a blur filter on the snapshot
object. Walking the object list will always be cheaper than
rendering the snapshot!

Note: Added a FIXME comment and forced clean_them to be true
because some odd behaviour happens when breaking with GDB and
the array snapshot_objects keeps growing at each frame (I guess
only if we miss a frame or something like that).
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre b90246a619 evas: Improve blur filter perf by using 2 passes
By simply splitting X and Y blurs in two passes we can improve
the performance of the blur filter a lot.

There is still much to be done to make it really fast and nice
looking:
- implement true gaussian blur (not sine-based approximation,
  right now the actual blurs look different in SW and GL)
- exploit linear interpolation for R tap instead of R*2+1 taps
  (a tap being a texel fetch)
- downscale & upscale large images with large blur radii
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 5bce7120f1 evas filter: Implement blur filter in pure GL
Wait a second though, this implementation is not only incomplete
(no support for box vs. gaussian blur), it's also insanely bad in
terms of performance. Small radii may work fine, but at least blurs
render properly in GL with this patch (no more glReadPixels!).

The shader needs a lot of love, including in particular:
- support for 1D box blur single pass
- support for 1D gaussian (or sine) blur
- use linear interpolation and N-tap filters
- separation of 2D blur in two passes (high-level logic)
- potentially separation of large 1D blurs in 2 or more passes
  knowing that 2sigma == sigma + sigma when it comes to the gaussian
  bell curve.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 125c7d956e evas filters: Implement displace filter in pure GL
This one was a bit more... "fun". I had to add a new vertex
attribute and obviously using a VertexAttribPointer led to
incomprehensible crashes. But a simple glVertexAttrib2fv makes
it work like a charm!

A rare option is not handled yet.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre ac8812665b evas filters: Implement fill filter in pure GL
Now that one was trivial. Could also be done with glClear and
glScissor instead, but the rectangle infrastructure works well
enough.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 3d2f1a3d9b evas filters: Implement mask filter in pure GL
This reuses the existing mask infrastructure, but adds a color
flag to use the whole RGBA range, rather than just the Alpha
channel.

Filters are still very slow (glReadPixels and non-optimized use of
GL buffers...), but this is progress :)
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 92dfe1831c evas filters: Fix blur logic and GL buffer handling
This corrects two things:
- the blur filter high-level logic, that lead to reusing some
  temporary buffers which contained garbage;
- the versatile gl buffer implementation so that it now properly
  switches between the RGBA_Image and the FBO content (yes, this
  is insanely slow and inefficient... but it works and that was
  the only point).
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 2ef8d6f39a evas filters: Refactor ector and gfx filters A LOT
Alright, so this is a massive patch that is the result of
trying to get rid of unused or poorly implemented classes in
ector. Originally ector was meant to support VG but extend to
things like filters as well. At the moment, ector's design
makes it quite hard to plug in the filters.

For now I think it's easier to implement the GL support for
the filters directly in the engine, where I hope to interfere
as little as possible.

This massive patch keeps only the required minimum to support
a versatile gl buffer that can be mapped, drawn or rendered to (FBO).
It's extremely inefficient as it relies on glReadPixels and lots
of texture uploads, as well as conversions between ARGB and Alpha.

Another type of GL buffer is a wrap around an existing GL image,
but that one is read-only (map or draw: no write map, no FBO).

No, all the filters run fine, and the high-level implementation
(evas_filters.c) does not need to know whether the underlying engine
is SW or GL. One problem though appears with the blending or blurring
of some Alpha buffers, the colors are wrong.

This patch removes more lines than it adds so it must be good ;)
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 190d84e84b evas: Rename software filter function type
From Evas_Filter_Apply_Func to Software_Filter_Func.
Also fix include dir for out-of-tree builds of non-static sw generic.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre a8d283567a evas filters: Move blur to software generic (8/8)
This completes the series of refactoring patches, where only the
filter implementation is moved to the engine rather than inside
evas itself.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 46542ea748 evas filters: Move transform to software generic (7/8) 2017-04-14 11:26:42 +09:00
Jean-Philippe Andre 1b95d22c2c evas filters: Move bump to software generic (6/8) 2017-04-14 11:26:42 +09:00
Jean-Philippe Andre b56a788e96 evas filters: Move displace to software generic (5/8) 2017-04-14 11:26:42 +09:00
Jean-Philippe Andre c9eec74002 evas filters: Move fill to software generic (4/8)
This also moves the header evas_engine_filter.h to its subdir.
2017-04-14 11:26:42 +09:00
Jean-Philippe Andre b6df13b024 evas filters: Move curve to software generic (3/8)
This moves the RGBA premul/unpremul functions to static_libs/draw.
2017-04-14 11:26:42 +09:00
Jean-Philippe Andre 09ff5f419e evas filters: Move mask to software generic (2/8) 2017-04-14 11:26:42 +09:00
Jean-Philippe Andre 0740010a06 evas filters: Move blend to software_generic (1/8)
This is an attempt at refactoring the filters code so I can
later implement GL support. This patch adds a few extra changes
to remove avoid calling functions of libevas from the software
engine: use the draw functions from static_libs/draw rather
than evas_common APIs.
2017-04-14 11:26:42 +09:00
Jeeyong Um f370ea803b Efl.Gfx.Path: Fix wrong condition check in _find_ellipsis_coords
Summary:
In previous patch, !w should be replaced with EINA_FLT_EQ(w, 0.0), but it was
replaced with !EINA_FLT_EQ(w, 0.0). This breaks rounded rectangle.

T5291

Test Plan: compile and run attached file

Reviewers: cedric, jpeg, Jaehyun_Cho

Reviewed By: Jaehyun_Cho

Differential Revision: https://phab.enlightenment.org/D4787
2017-04-14 10:16:48 +09:00
Cedric BAIL 9883831b76 evas: move Efl_Canvas_Output to be an internal only API. 2017-04-13 15:25:29 -07:00
Cedric BAIL 969112a36d evas: this symbol actually don't exist. 2017-04-13 14:39:46 -07:00
Stefan Schmidt 9a15eeaced Revert "efl: terrible kludge so avoid termination crash on osx"
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
2017-04-13 16:11:39 +02:00
Bryce Harrington 8b95b78dee efl vpath: Check and terminate execution if set*uid() calls fail
Summary:
Quells warnings:
    lib/efl/interfaces/efl_vpath_core.c:117:9: warning: ignoring return
    value of ‘setuid’, declared with attribute warn_unused_result
    [-Wunused-result]
         setuid(geteuid());
         ^
    lib/efl/interfaces/efl_vpath_core.c:169:9: warning: ignoring return
    value of ‘setreuid’, declared with attribute warn_unused_result
    [-Wunused-result]
         setreuid(uid, geteuid());
         ^

Reviewers: raster, jpeg

Reviewed By: raster

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4768
2017-04-13 16:41:02 +09:00
Godly T.Alias 5cba6a5857 Genlist: Performance optimization for genlist in non-filter cases
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
2017-04-13 16:40:29 +09:00
Shinwoo Kim 4f6873905b ecore_input: add API to get name of joystick.
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
2017-04-13 14:53:48 +09:00
Cedric BAIL b04f584346 evas: engine_info set/get should never show up in Eo API.
Eo API are for something we want to expose to third party application
and bindings. engine_info is exactly what we don't want to expose.
2017-04-12 15:13:19 -07:00
Cedric BAIL e0bb9d6134 ecore_evas: change VNC API and use snapshot internally. 2017-04-12 15:13:19 -07:00
Bryce Harrington 6ea18851ba ecore_con: send server_upgrade event *after* clearing pending saves
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>
2017-04-12 14:39:08 -07:00
Bryce Harrington bb1a8779db evas: correct pluralization grammar in Evas_Eo.h
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>
2017-04-12 14:27:40 -07:00
JinYong Park 86008fa411 notify: fix hide animation logic for popup
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>
2017-04-12 14:25:53 -07:00
Jean-Philippe Andre 4b09ad7d6b evas: Fix event propagation in elm_widget
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.
2017-04-12 20:28:20 +09:00
Jean-Philippe Andre 8ff2dffe7c evas/elm: Fix bad propagation of ON_HOLD flag
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
2017-04-12 18:43:15 +09:00
Jean-Philippe Andre a5e019b468 scroller: Fix issues with looping and paging
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
2017-04-12 17:07:48 +09:00
Jean-Philippe Andre 0cd610af20 scroller: Fix freeze after dragging bars
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.
2017-04-12 15:18:24 +09:00
Jean-Philippe Andre 59cf7c7ab7 scroller: Fix CRI if scroll animation is disabled
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)
2017-04-12 14:54:15 +09:00
Jean-Philippe Andre bc4f803d37 scroller: Fix wheel scroll with imbricated H+V scrollers
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
2017-04-12 14:32:33 +09:00
Bryce Harrington 20e7f661e6 Evas_Common: Fix minor grammatical errors
Reviewers: devilhorns

Reviewed By: devilhorns

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4781
2017-04-11 11:48:36 -04:00
Minkyoung Kim 60a97c9be3 evas: If there isn't clipper when recalcing clip, set mask.clip = NULL.
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>
2017-04-11 13:54:53 +09:00
Carsten Haitzler 6e7c8e591b elementary - efl ui flip - fix map apply for page flip
this mirrors the fix in fd69113f6a by jp
into the elm flip widget too.

@fix
2017-04-11 09:56:22 +09:00
Jean-Philippe Andre fd69113f6a evas map: Fix test case "Flip Page"
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.
2017-04-10 19:38:56 +09:00
Jean-Philippe Andre f3c9500a6d evas filters: Fix a rare crash in text render (SW)
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
2017-04-10 16:56:14 +09:00
Jean-Philippe Andre c0db1f4225 edje: Add workaround for misuses of clip_set
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
2017-04-10 16:14:45 +09:00
Youngbok Shin 1ab87367d8 evas: give width offset when Evas tries to find ellipsis position
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
2017-04-10 12:15:20 +09:00
Carsten Haitzler 46bfd7ffb9 elm config - reload at runtime - fix env var overrides being lost
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
2017-04-10 11:05:56 +09:00
Carsten Haitzler 6aa72e3cf6 evas - async preload cancel fix - don't double delete/free
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
2017-04-10 10:40:52 +09:00
Gustavo Sverzut Barbieri e8a59ab6c2 efl_net_socket_ssl (dialer): emit "resolved"
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.
2017-04-08 19:21:44 -03:00
Gustavo Sverzut Barbieri c90865ca48 ecore_con_legacy: fix legacy compatibility for ecore_con_server_send()
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
2017-04-08 19:21:44 -03:00
Andy Williams 314f2763c6 elm_code: trigger user change event on applying an undo/redo
@fix
2017-04-07 23:36:29 +01:00
Mike Blumenkrantz aab3cca0be ecore-wl2: do not reconnect on protocol error for non-server processes
this is not a recoverable state

@fix
2017-04-07 16:06:41 -04:00
Mike Blumenkrantz 442844441e elm_win: set wl window type during finalize
@fix
2017-04-07 16:06:41 -04:00
Mike Blumenkrantz fc0c66675e ecore-wl2: create window surfaces immediately when windows are created 2017-04-07 16:06:41 -04:00
Mike Blumenkrantz bc7fb14a9c ecore-wl2: stop setting all windows as toplevels on creation
this is not a valid assumption since toplevel is a shell-specific concept and
it's possible to run a shell which does not implement such windows

@fix
2017-04-07 16:06:40 -04:00
Mike Blumenkrantz cb58baf400 ecore-wl2: CRI when attempting to create a window from a server display object 2017-04-07 16:06:40 -04:00
Cedric BAIL d2816c3879 elementary: fix test breakage.
It is perfectly valid to call this API with no pointer provided.
2017-04-07 11:38:10 -07:00
Andy Williams c5dce45a95 elm_code: Expose whether or not undo and redo can operate
A quick peek at the stack will allow us to inform users
of the widget if operations will apply.
2017-04-07 18:14:31 +01:00
Derek Foreman e5dd8327ba ecore_drm2: Use correct drm context version
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.
2017-04-07 09:09:56 -05:00
Shinwoo Kim 7a2aeec9ce elementary: win - override atspi component get interface
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).
2017-04-07 13:43:00 +09:00
Jiyoun Park 258b42b47b evas_clip: fix bug _clipper_del_cb function unset current clipper
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.
2017-04-07 11:35:55 +09:00
Andy Williams b5761fc227 elm_code: Don't refresh if fonts did not change 2017-04-06 23:30:00 +01:00
Jiwon Kim 1bd7b576bd edje: remove invalid macro-check regarding coreaudio
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>
2017-04-06 15:20:49 -07:00
Jeeyong Um e7319b84e4 elm.hoversel: adjust alignment correctly in mirror mode
Test Plan: elementary_test "hoversel"

Reviewers: cedric, jpeg

Reviewed By: cedric

Differential Revision: https://phab.enlightenment.org/D4751

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-04-06 15:20:49 -07:00
JEONGHYUN YUN 73c232e031 edje_program: add NULL check for ed->callbacks in edje_program
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>
2017-04-06 15:20:49 -07:00
JEONGHYUN YUN 5ed7378303 edje_edit: add NULL check for eina_mempool_malloc in _edje_edit_state_alloc()
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>
2017-04-06 15:20:49 -07:00
Bryce Harrington 3aa0ce099f evas: fix typo 'initializer to' to 'initialize to'
Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4767

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-04-06 15:20:49 -07:00
Bryce Harrington 55b4e2d369 ecore_evas: Fix several typos in doxygen
Reviewers: cedric

Reviewed By: cedric

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4772

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-04-06 15:20:49 -07:00
Andy Williams 595fc25f3f elm_code: fix copy/paste bug that slipped through 2017-04-06 23:14:03 +01:00
Bryce Harrington 9610d4aaa6 elm_code: Fix coverity issue divide by zero
Summary: @fix 1371128: DIVIDE_BY_ZERO

Reviewers: ajwillia.ms

Reviewed By: ajwillia.ms

Subscribers: ajwillia.ms, cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4771
2017-04-06 22:40:13 +01:00
Andy Williams e44c33f233 elm_code: Fix bug when deleting slection beyond start of document.
@fix
2017-04-06 22:16:27 +01:00
Cedric BAIL 8280e523ee evas: always send a proper event to simplify callee logic.
@fix
2017-04-06 13:31:53 -07:00
Bryce Harrington 65d7438466 ecore_evas: fix 'be delete' to 'be deleted'
Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4766
2017-04-06 14:14:09 -04:00
Jean-Philippe Andre 1d5b65ab85 access: Fix warning hiding a potential crash
See 5da4c96087
2017-04-06 18:14:40 +09:00
Jaeun Choi 53e31eeede emile_image: add error handling code for ifd_offset value
Signed-off-by: JEONGHYUN YUN <jh0506.yun@samsung.com>
2017-04-06 15:34:53 +09:00
Carsten Haitzler c3372a5c7a fix evas canvas callbacks to use correct legacy callback function 2017-04-06 14:43:04 +09:00
Carsten Haitzler 987620390b elm - cache dump - disable this to fix jp's issues of proxies etc.
this will stop proxies, maps, and other filter object content from
being dropped whenever elm calls elm_cache_all_flush() to flush all
caches.

@fix
2017-04-06 14:31:19 +09:00
Andy Williams ddb189bb1f elm_code: Fix crashes with backspace on OpenBSD
@fix
2017-04-05 23:59:23 +01:00
Andy Williams 650606ab90 elm_code: better safety around widget edge cases
Fixes crashes when dragging selection out of widget.
@fix
2017-04-05 22:40:43 +01:00
Shinwoo Kim 5da4c96087 elementary: access calls "access,activated" smart callback
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.
2017-04-05 19:58:46 +09:00
Bryce Harrington a28f4e3ba3 ecore_evas: Fix some pluralization grammatical errors
Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4729
2017-04-04 09:24:55 -04:00
Bryce Harrington cd60f0a1be Evas_Common: Fix assorted typos
Reviewers: devilhorns

Reviewed By: devilhorns

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4730
2017-04-04 09:23:55 -04:00
Bryce Harrington 51381d4e20 Evas GL: Correct a couple typos in doxygen comments
Reviewers: devilhorns

Reviewed By: devilhorns

Subscribers: devilhorns, cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4737
2017-04-04 09:21:34 -04:00
Bryce Harrington bab7d2ec41 Evas_Loader: Fix pluralization in grammar
Reviewers: devilhorns

Reviewed By: devilhorns

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4736
2017-04-04 09:20:48 -04:00
Bryce Harrington 72878655b7 evas: Correct typos in Evas_Eo.h docs
Reviewers: devilhorns

Reviewed By: devilhorns

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4735
2017-04-04 09:20:24 -04:00
Youngbok Shin 5da69d7ac9 evas textblock: fix top/bottom valign tag reversed issue
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
2017-04-04 18:36:42 +09:00
Vincent Torri 58d52a2309 Evil: fix fcntl() with sockets
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.
2017-04-03 11:24:34 +02:00
Marcel Hollerbach 87a25fd353 combobox: fix 0px height on first click
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.
2017-04-01 10:41:35 +02:00
Marcel Hollerbach 9661ab7052 combobox: fix layer setting for the hover
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.
2017-04-01 10:41:35 +02:00
Marcel Hollerbach 4ef3f6366f combobox: Fix combobox for the case the parent is not the window
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.
2017-04-01 10:41:35 +02:00
Andy Williams b40b1052b5 elm_code: fix backspace newline in BSD 2017-03-31 21:53:14 +01:00
Mike Blumenkrantz 0f6139b9cb ecore-evas: add flag for buffer canvas to prevent deadlock in pixels_get
when calling pixels_get during a render callback, another render would trigger
which would cause a deadlock from evas spinlock usage

@fix
2017-03-31 14:57:25 -04:00
Mike Blumenkrantz d956f34021 doc: add explicit note for timeline animator about first frame position 2017-03-31 14:57:25 -04:00
Jean Guyomarc'h cd5e755951 efl: terrible kludge so avoid termination crash on osx
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
2017-03-31 14:11:01 +02:00
Jaeun Choi e2d1da14b8 elm_flipselector: delete ecore job in group del function
ecore_job_del was missing in a4d2c51d14
2017-03-31 14:17:12 +09:00
Jaeun Choi a4d2c51d14 elm_flipselector: fixed flipselector item deletion process
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
2017-03-31 13:30:53 +09:00
Andy Williams 6fb1782576 elm_code: Fix newline crash on BSD
@fix
2017-03-30 23:20:22 +01:00
Gustavo Sverzut Barbieri 13cd93f729 evil_string: fix strndup() for non-NULL terminated strings.
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.
2017-03-29 12:44:19 -03:00
Gustavo Sverzut Barbieri 9486225744 ecore_con: remove warnings if FD_CLOEXEC is undefined.
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.
2017-03-29 12:44:19 -03:00
Gustavo Sverzut Barbieri 13a8842614 eina: fix compilation warning on _WIN32 due missing strndup()
Eina.h will include Evil.h, but those using direct include of internal
headers must include it as well.
2017-03-29 12:44:19 -03:00
Gustavo Sverzut Barbieri 6877ee8ad4 ecore_ipc: use new efl_net_*_windows classes. 2017-03-29 12:44:19 -03:00
Gustavo Sverzut Barbieri a4be1e479c ecore_con_local_path_new(): implemented for Windows 2017-03-29 12:44:19 -03:00
Gustavo Sverzut Barbieri fa0e2865a1 implement efl_net_{socket,dialer,server}_windows
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.
2017-03-29 12:44:19 -03:00
Jean-Philippe Andre c234422357 win: Mark unstable APIs as @beta (stack API)
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.
2017-03-29 09:51:28 +09:00
Carsten Haitzler d8dd685966 window stacks - make these unstable bta api for now
until settled, make these as beta for now.
2017-03-28 13:51:39 +09:00
Carsten Haitzler 479fd24650 ecore timeline animators - actually state the starting time
the starting time has always been "now" like in timers (loop time). it
would appear some people don't know this.
2017-03-28 11:44:22 +09:00
Carsten Haitzler 1fa1b46ebf ecore pub headers - use __sun not __sun__ for ifdef for solaris 2017-03-27 19:09:25 +09:00
Vincent Torri eff7bab48f Eina_Value: strdup() is used, so include string.h 2017-03-27 08:22:06 +09:00
Vincent Torri ac47c93330 Ecore: siginfo_t type is defined in sys/siginfo.h on Solaris 2017-03-27 08:22:06 +09:00
Amitesh Singh ecd89e0591 gengrid: fix the crash in _elm_gengrid_item_edge_check
_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>
2017-03-26 20:48:02 +05:30
Umesh Tanwar dd627324f9 Gengrid: Bring the item into view scope before swapping.
Summary:
The gengrid item should be into view scope while reordering the items.

@fix
Signed-off-by: Umesh Tanwar <umesh.tanwar@samsung.com>

Test Plan: elmementary_test -> gengrid 2 -> horizontal mode + reordering

Reviewers: singh.amitesh, cedric

Subscribers: cedric, atulfokk, jpeg

Differential Revision: https://phab.enlightenment.org/D4740

Signed-off-by: Amitesh Singh <amitesh.sh@samsung.com>
2017-03-26 20:26:15 +05:30
Vincent Torri 02b6ee3ed8 Ecore_Con: Fix compilation on Solaris
FIONREAD is defined in sys/filio.h
2017-03-26 23:50:02 +09:00
Andy Williams d15faf08fe elm_code: fix CID 1368489
@fix
2017-03-25 12:59:13 +00:00
Derek Foreman 67e07e5d2d efreet: Don't prefer the second perfect over the first in desktop_exec_find()
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
2017-03-24 14:59:11 -05:00
Mike Blumenkrantz acf4c35fd6 ecore-evas: better handling for pointer_warp with buffer canvas
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
2017-03-24 13:24:24 -04:00
Bruno Dilly e0170c2b0d evas_events: look for seats on hash instead of input devices
Summary:
Otherwise it won't ever find the modifier masks.

Fixes T5146

@fix

Reviewers: iscaro, Jaehyun_Cho

Subscribers: cedric, jpeg

Maniphest Tasks: T5146

Differential Revision: https://phab.enlightenment.org/D4738
2017-03-24 14:14:38 -03:00
Chris Michael 1a3bae8133 ecore-drm2: Remove unused field in Output structure
The 'planes' field in Ecore_Drm2_Output structure is unused and can
thus be removed here.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-03-24 08:54:52 -04:00
Jiwon Kim 25fcdde356 ecore audio: Fix loss of last stream
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
2017-03-24 10:34:54 +09:00
Jean Guyomarc'h 35a7e7ff18 ecore_evas: delete exit idler when done with it 2017-03-23 21:17:50 +01:00
Artem Popov 8d6c90351c Eina_Xattr: fix memory corruption
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
2017-03-23 16:27:22 +02:00
Andy Williams 2c0b850f57 elm_code: fix keyboard selection forward
@fix
2017-03-21 22:36:53 +00:00
se.osadchy a63ce8c2e2 elm_map: Fix work of elm_map_overlay_icon_set if icon is NULL.
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
2017-03-21 11:13:15 -07:00
Umesh Tanwar b313b30cf7 ecore: proper macro usage for double comparision. Summary: The comparisions are done between doubles. EINA_FLT_EQ -> EINA_DBL_EQ
Summary: Signed-off-by: Umesh Tanwar <umesh.tanwar@samsung.com>

Reviewers: singh.amitesh, cedric

Subscribers: jpeg, atulfokk

Differential Revision: https://phab.enlightenment.org/D4719

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-03-21 11:11:23 -07:00
Jean-Philippe Andre 76b5749ea0 genlist: Fix another issue with insert sorted
Fixes T5274

@fix
2017-03-20 22:25:32 +09:00
Marcel Hollerbach 12d01c1259 eina_debug: do not leak a spinlock when the path is not given 2017-03-18 22:10:43 +01:00
Mike Blumenkrantz d0e5564c18 efreet: CRI and fail after 10 attempts to connect to efreetd
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
2017-03-17 15:15:25 -04:00
Mike Blumenkrantz 9c4956082a ecore-evas: handle title_set and name_class_set for buffer engine 2017-03-17 15:15:25 -04:00
Mike Blumenkrantz b86362dd05 evas table: CRI when attempting to pack a table child into another table
@fix
2017-03-17 15:15:25 -04:00
Andy Williams f6434c0e0d elm_code: Update and demo status messages inline 2017-03-17 10:07:04 +00:00
Shinwoo Kim 85a27be447 elementary: enhance atspi accessible documentation 2017-03-17 16:53:23 +09:00
Vyacheslav Reutskiy 6723c3b1c3 gengrid: avoid call select callback twice in mode ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL
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
2017-03-17 09:10:13 +02:00
Ivan Furs 4d13273e3b eina_file: fixed T2244
Summary:
dirty fix for 'eet' problems with file deletion on WINDOWS
to work with the commit: D4698, D4699

Reviewers: cedric, NikaWhite, rimmed, vtorri, raster

Reviewed By: cedric

Subscribers: artem.popov, cedric, jpeg

Maniphest Tasks: T2244

Differential Revision: https://phab.enlightenment.org/D4701

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-03-15 10:49:55 -07:00
Bryce Harrington 24ed55539d evas: drop redundant pointer check
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>
2017-03-15 10:49:47 -07:00
Chris Michael 23eb88709b elementary: Fix minor typo in efl_ui_win.eo
Small patch to fix a minor typo in the "noblank" property of
efl_ui_win.eo

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-03-14 10:51:54 -04:00
Jean-Philippe Andre 83619af10a genlist: Fix a leak
Thanks @herdsman
2017-03-14 23:07:34 +09:00
Jean-Philippe Andre d14b6e3f84 ecore: Fix memory leak and logic
@cedric... how could this even happen??
2017-03-14 22:38:43 +09:00
Umesh Tanwar b938e2b5d8 ecore_animator: improve comparision check for stopping animator.
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>
2017-03-14 14:38:44 +05:30
Jean-Philippe Andre 0b5b5e44a5 evas: Fix crash with events on the canvas
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
2017-03-14 15:41:24 +09:00
Jean-Philippe Andre 3103c551f5 edje: Move prev_description out of ephysics ifdef
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.
2017-03-14 14:15:09 +09:00
Jean-Philippe Andre fbe72f6e4b genlist: Fix some more decorate mode issues
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
2017-03-14 14:04:39 +09:00
Jean-Philippe Andre 7072fbc2bf edje: Fix rare issue with map
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
2017-03-14 14:04:39 +09:00
Jean-Philippe Andre 635b4ad8f3 genlist: Make sure only one item is decorated
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
2017-03-14 11:04:16 +09:00
Jean-Philippe Andre ab735ada77 genlist: Make logic more readable 2017-03-14 11:04:16 +09:00
Jean-Philippe Andre f1974b7b1c genlist: Fix invalid call to stack above/below
Test process:
  elementary_test -to "Genlist Decorate Item Mode"

Slide any item to the right, observe error logs.

Ref T1551
2017-03-14 11:04:16 +09:00
Jean-Philippe Andre 5f3515542b evas: Add more debug info to an ERR message (stack)
Also use eina_safety as those are safety checks. Helps with GDB
(single breakpoint in eina_safety).
2017-03-14 11:04:16 +09:00
Cedric BAIL ee866ca599 Revert "ecore-evas reduce modifier modification on every event to cut cpu"
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)
2017-03-13 13:42:00 -07:00
Chris Michael 3fa7570bda eina: Fix more typo in doxygen
The eina_(rw)_slice_startswith functions both incorrectly describe how
the 'prefix' parameter is used, so fix those also

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-03-13 15:50:37 -04:00
Chris Michael 47f34bb7a3 eina: Fix typo in doxygen
eina_(rw)_slice_startswith functions both incorrectly describe the
return value as 'slice ends with', when clearly the function is used
to find if a slice 'starts with' a prefix

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-03-13 12:11:46 -04:00
Carsten Haitzler 3a9d54085b ecore-evas reduce modifier modification on every event to cut cpu
this only modifiers modifiers if the modifier mask changed. it stores
it per seat and matches up before deciding to actually modifier the
modifiers. this SHOULD fix T5252

@fix
2017-03-13 17:37:32 +09:00
Cedric Bail f06600fc29 elementary: refactor code to avoid duplication in elm_code_widget. 2017-03-12 15:36:17 -07:00
Cedric Bail 81c2c88e99 ecore_evas: keep VNC API BETA until multi evas output is in, just in case. 2017-03-12 11:20:40 -07:00
Andy Williams 54e6f3f012 elm_code: Don't leak rows when we resize down
Thanks Cedric :)
@fix
2017-03-12 13:35:41 +00:00
Cedric Bail 343d2e0d87 elementary: force elm_code line fill on object resize.
This fix elementary_test use of elm_code where the object needed
to get clicked to have their content displayed. The reason was that
the line where appended while the object size was 0 and once it was
resized the line where not displayed.
2017-03-11 16:55:05 -08:00
Mike Blumenkrantz a73a18b01d Revert "evas_table: abort when there is already the option struct"
This reverts commit 008711b3b0.

this breaks elm_table_pack_set() as well as other valid usage and is
not a valid change to the code
2017-03-10 15:54:22 -05:00
Andy Williams 53c9a06c2d elm_code: Fix position of cursor in selection
Make sure cursor is always at the left of our selection
@fix
2017-03-10 14:27:17 +00:00
Umesh Tanwar d4dd0b20df Gengrid: Correct double comparision.
Summary:
 Use the more accurate EINA_DBL_EQ for double comparision.

@fix

Signed-off-by: Umesh Tanwar <umesh.tanwar@samsung.com>

Reviewers: singh.amitesh, cedric, jpeg, raster

Reviewed By: singh.amitesh

Subscribers: atulfokk, cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4706

Signed-off-by: Amitesh Singh <amitesh.sh@samsung.com>
2017-03-10 12:00:42 +05:30
Umesh Tanwar 3b4cbc56bb ecore_animator: use EINA_DBL_EQ for comparing double values
Summary:
EINA_FLT_EQ was used to compare double values. replace it with EINA_DBL_EQ

@fix
Signed-off-by: Umesh Tanwar <umesh.tanwar@samsung.com>

Reviewers: raster, cedric, singh.amitesh

Reviewed By: singh.amitesh

Subscribers: atulfokk

Differential Revision: https://phab.enlightenment.org/D4712

Signed-off-by: Amitesh Singh <amitesh.sh@samsung.com>
2017-03-10 11:57:08 +05:30
Jean-Philippe Andre 6c62ae3e6e Revert "Genlist: Calculate the min size of content before item realize"
This reverts commit 60566ca34d.

This broke the layout in "Genlist Full Widget"
2017-03-10 15:20:22 +09:00
Jeeyong Um 60566ca34d Genlist: Calculate the min size of content before item realize
Summary:
Genlist item doesn't change its size when its content size is changed,
but its size is determined in realization.
Therefore, deferred calculations for content should be performed immediately
before swallowing it by genlist item.

Test Plan: make and run attached sample

Reviewers: cedric, SanghyeonLee, jpeg

Reviewed By: jpeg

Differential Revision: https://phab.enlightenment.org/D4705
2017-03-10 14:59:48 +09:00
Jean-Philippe Andre fc40d3d559 genlist: Fix invalid state of reused content
If an item is marked as disabled it should be re-enabled
before being put in the reusable contents cache. Otherwise
a following use of this object may result in a disabled
item being used, making the UI effectively disfunctional.

Also modify the test case to show and test this behaviour.

Add an efl_isa() to protect calls to elm_widget APIs.

Fixes T5236

@fix
2017-03-10 11:22:13 +09:00
Cedric BAIL 99142090b4 emotion: avoid crash during shutdown due to Ecore_Event queue. 2017-03-09 16:17:58 -08:00
Cedric BAIL 21ba61be73 elocation: avoid crash during shutdown due to Ecore_Event queue. 2017-03-09 16:17:58 -08:00
Cedric BAIL c91b4c7065 elput: avoid crash during shutdown due to Ecore_Event queue. 2017-03-09 16:17:58 -08:00