the current (v6) xdg-shell spec reads as follows:
Client window decorations should be painted as if the window is
active. Do not assume this means that the window actually has
keyboard or pointer focus.
so this is not equivalent to receiving/losing input focus and should not
be propagated as such
@fix
When calling ecore_drm2_output_enabled_set, we cannot initiate a
pageflip until the output has been enabled, so remove call to fb_flip
here. The dpms_set function will handle issueing the pageflip anyway.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
If we are using atomic, we don't need to set the crtc active values
here as they will be set in output_dpms_set function anyway.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
As it turns out, we still need to enable/disable the output crtc when
we enable/disable dpms in order for the screen itself to turn off, so
this patch "should" finally fix atomic dpms setting.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This includes 4 events:
- render,flush,pre
- render,flush,post
- axis,update
- viewport,resize
Those were not accessible from the EO API since Evas.Canvas
isn't part of the public EO API.
If we successfully set dpms via atomic state, we should also update
the connector state dpms value
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
The property we need to change during an atomic dpms change is
actually from the output connector state (not crtc state). This fix
should make dpms work when using atomic
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
If the buffer being flipped to is the one already on screen then
releasing it on flip failure will leave it on scanout with no
references. The next time a buffer is queued it will be removed
from scanout and deleted.
Not good.
Fix T5462
We need to release the buffer we couldn't flip to when a flip fails.
This makes whatever bug is causing a page flip to happen right after
dpms blanks the screen, which was leading to a failure to ever wake
from dpms because the flip left a pending buffer that never completed.
Fix T5462
replace elm_photocam_image_size_get with Efl.Gfx.View.view_size.get
and mark elm_photocam_image_size_get as legacy API.
Signed-off-by: Amitesh Singh <amitesh.sh@samsung.com>
Summary:
Some of latest touchscreen devices can report if the tool in contact
is the palm of your hand and there is no axis label for this palm flag.
This adds ECORE_AXIS_LABEL_TOUCH_PALM enum as Ecore_Axis_Label type.
Test Plan: N/A
Reviewers: raster, cedric, jpeg, jypark, devilhorns, ManMower
Reviewed By: jpeg
Subscribers: JHyun
Differential Revision: https://phab.enlightenment.org/D4848
All windows should be standard, really. Except when using legacy
elm_win_add() or if type_set() was called with a specific type.
I dislike type_set...
Ref T5322
This removes Evas.Modifier_Mask from EO.
This introduces two new types instead:
- Efl.Input.Modifier
- Efl.Input.Lock
Those are enums, not strings, containing all the known and
currently supported lock and modifier keys. The enums are
bit masks.
This effectively removes the ability for an application to
create and handle specific modifier or lock keys - with EO
API (legacy compatibility is unchanged, of course). I wonder
who ever required this?
Such an ugly API. This is an API to match a string to a number,
build a bitmask from it, and then use that. The supported
strings are well known (should be enum) and would need a
recompilation (ABI update) to support anything new anyway.
Fixes a race that's either really hard to hit if you're a developer
or really easy to hit if you're a user.
Thanks to ApB for the debug assistance.
Fix T5484
Summary:
These routines all already have a @return line that states the return
values appropriately; it's unnecessary to restate the return values in
the documentation text.
Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4878
This may be a bit more controversial...
But Evas_Coord really is just an int and all the internals
of EFL assume that the base coordinate type is a 32-bit int.
So this type is a bit redondant and can't easily be changed
to, say, a float or int64.
Ref T5312
We only need it in elm_config.
This removes the type Evas_Font_Hinting_Flags from EO,
as well as the functions font_hinting_set/get and
font_hinting_can_hint.
Ref T5312
Note: it seems the EAPI evas_touch_point_list_xy_get() was
lst at some point, as it doesn't appear in the headers anymore.
It looks like we fail to catch an ABI break! abi_checker didn't
catch this!?
Ref T5312
This makes photocam implement Efl.Flipable and Efl.Orientation
in order to use the proper API.
image_orient is now split into two function calls.
Ref T5312
In trying to clean up some code and fix a hypothetical buffer leak, I added
a use after free error that can break rendering on the drm and gl_drm
evas engines.
Coverity did the heavy lifting for me on this one.
Fix Coverity CID 1375047
Fix T5484
Removes the previous "busy" flag, as now we might have an fb attached to
multiple outputs at once, and need to be careful to destroy them only
after they've been removed from all outputs.
Removed the old "busy_set" API which nothing used, and renames fb_destroy
to fb_discard to make it more clear that it's not immediately destroyed.
It's all beta api, so I can do this.
in some cases (e.g,, x11 bridged selections) it is necessary to use
alternate means when transferring a selection, and so performing the
entire piped receive is not necessary. instead, extend the lifetime
of the data offer until the proxied receive has completed
@feature
in some cases it may be desired to have a drag data source without ever
initiating a drag, so ensure that it's possible to set the actions of the
source which will be passed for drag operations in this case
@feature
this seems to have been done to account for the case where no mimes were
passed, but sending null in this way is bad behavior for a client. the
spec indicates that null should be sent only when no mimes are accepted
@fix
in some cases (e.g., the mouse-out emission from the ee wl engine),
this was calculating wrong coordinates, which would lead to a broken
chain of events like:
object mouse out -> object mouse in -> object mouse out
which would severely break some apps
@fix
it's possible to set flags to 0 with another function, so allowing
creation with 0 makes the api more consistent without breaking the
documented behavior
we haven't gotten replies yet on what our position or size should be,
so we should store them so centering works before show but after
resizing is evaluated (that also fixed by forcing an eval).
@fix
Summary:
Issue: Selection cannot happen on an empty entry, if selection functions
are called on empty entry, cursor is hidden, even if entry is focused.
Soln: Check for whether entry is empty or not before proceeding with selection.
Test Plan:
1. Call select_all, select_region_set on a focused entry
2. You can observe cursor cannot be seen.
Reviewers: jpeg
Reviewed By: jpeg
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4862
Summary:
After hiding animation is finished, "dismissed" callback will be called.
It means popup's visible state is FALSE.
But if evas_object_show(popup) is called in it's custom dimssed callback function,
popup's visible state is TRUE, so evas_object_show is canceled.
So visible_set(FALSE) is must done before call dimissed callback.
@fix
Reviewers: Hermet, herb, jpeg, cedric, singh.amitesh, raster
Reviewed By: jpeg
Subscribers: woohyun
Differential Revision: https://phab.enlightenment.org/D4869
Summary:
If last added button is removed, any statements to set last_button_number in for loop doesn't be executed.
So last button number has previous value, not 0.
Because of that, action area is not removed, but that area has zero height, so it doesn't be shown.
@fix
Reviewers: herb, jpeg, cedric, singh.amitesh, raster
Reviewed By: jpeg
Subscribers: woohyun
Differential Revision: https://phab.enlightenment.org/D4870
Summary:
Straightens up grammar and simplifies phrasing to make the functions
purposes clearer.
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4874
Summary:
Removes extraneous newline, and fixes the indentation of the while
statement's sub-clause (which looked like a code error at first
glance).
Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4875
Summary:
_layout_ellipsis_item_new() function deallocates "ellip_ti" and
allocates memory for new one. The local "ellip_ti" pointer should be
updated.
@fix
Test Plan: N/A
Reviewers: raster, cedric, herdsman, jpeg, woohyun
Differential Revision: https://phab.enlightenment.org/D4854
I've done this by translating "Flip Page" to this new set of
EO APIs. In particular, absolute coordinates need to be used
in some calls, and the map needs to be calculated between
get and set operations.
This required an adjustment of the raw_coord API as the flip_page
code does some math after reading and then writing to the map.
Same for color. Those two properties now act like commands (ie.
like the other gfx map functions).
This also introduces a duplicate set of APIs to handle absolute
coordinates. Other solutions included:
- Use an enum to specify the type of coordinates (but then the
unit of cx,cy varies between non-unit relative position and
pixel position. Also this adds an extra argument to all those
function calls.
- Pass a special value (an empty eo object) as the argument for
pivot. Same remark about the unit as above. This way was
deemed too confusing because of the weird object.
Those two options have been discarded after asking the opinion
of a few developers I could reach.
@feature
This implements an entirely new API model for Evas Map by relying
on high-level transformations on the object rather than an external
Evas_Map structure that needs to be constantly updated manually.
The implementation relies on Evas_Map.
To rotate an object all you need to do now is
efl_gfx_map_rotate(obj, 45.0, NULL, 0.5, 0.5);
Or with a C++ syntax:
obj.rotate(45.0, NULL, 0.5, 0.5);
Or even simply (with default arguments):
obj.rotate(45.0);
The map transformation functions are:
- rotate
- rotate_3d
- rotate_quat
- zoom
- translate (new!)
- perspective_3d
- lightning_3d
@feature
Manual points population will eventually be useless as the
map API will become more like a transformation API, where
the current object geometry doesn't matter as much as which
transformation is applied to it.
Summary:
Adds a line between each function so it's more obvious what doc goes
with what API routine. Reorganize the doxygen elements so they're
consistently ordered and spaced.
No code or documentation changes; mostly just whitespace.
Reviewers: cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D4866
With the wayland backend, it is posible to have no seat connected
until later. This would lead to calling evas_object_pointer_mode_set
and fail without returning a boolean it was impossible to detect it
did fail. This patch correct it.
696ed3e2e8 introduced a build failure on
macOS. _ecore_evas_subregister is being used in a foreign code module,
but it was not exported. Enforcing EAPI gives this symbol enough
visibility to be used outside of ecore_evas.
Summary:
Escaping is not happening whenever any escapable characters is coming after
'\t' or '\n'. It will also fix invalid read of 1 byte which happens for string where
last charachter is '\t' or '\n' like "eina\t".
Test Plan:
Take a string like "eina\t ". Observe space which is followed by tab is not getting
escaped.
Signed-off-by: Prasoon Singh <prasoon.16@samsung.com>
Reviewers: shilpasingh, rajeshps, govi, cedric
Reviewed By: shilpasingh
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4847
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Small patch which starts to implement refcounting on framebuffer
objects. This will be needed so that we do not free FB objects while
they are on the screen.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
In Issue scenario when _elm_theme_set was called,object was already deleted by app causing
unnecessary addition of the style in style_not_found list.
Check for object validity, if object is NULL return theme apply failed.
Test Plan: Make object pointer NULL before _elm_theme_set is called.
Reviewers: cedric, shilpasingh
Subscribers: rajeshps, govi, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4840
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
The return value of the function eina_mempool_malloc was dereferenced without checking. I added the checking code similar to the other codes.
@fix
Reviewers: raster, cedric, jpeg, herdsman, woohyun, stefan_schmidt
Subscribers: stefan_schmidt
Differential Revision: https://phab.enlightenment.org/D4855
On touch devices there is the normal gesture to touch on the screen and
hold until the drag operation started.
For users of a mouse there is the gesture of just click and drag the
mouse away.
This commit changes the behaviour of the start based on the device that
sent the event
We keep planes on the plane list to ensure a released plane is removed
from display - however this means that if a caller starts messing with
a plane after release, that it could potentially reposition a plane it
doesn't own anymore.
Use EINA_SAFETY macros to prevent this.
The release flag is actually less useful than the existing in_use flag
for determining if a plane is unused. If a new plane is assigned before
the next flip cleans up released planes, then it can point to a released
plane state, and both it and the previous user will be freed on the next
commit, leaking a plane.
Putting the flag in the plane structure fixes this while still allowing us
to keep released planes around to ensure a recently released plane is
cleared from atomic state.
If we don't do a flip test, the atomic state isn't updated. This fixes
a potential problem where the last operation in state preparation is
a release - the following commit wouldn't include state from the release.
This patch fixes plane_state values during atomic flip test for any
planes marked for release. When the fb_flip actually completes, we
will remove the marked plane(s) from the output.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
As we cannot immediately remove a plane from an output, due to needing
an atomic commit to actually remove the plane from screen, we can use
a 'release' flag to indicate that a given plane needs removal from the
screen during our next atomic commit.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
As we need to be able to commit a new plane state for any released
planes, we should not be removing them from the output list just yet.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Unfortunately the plane sized returned from the cursor plane query isn't
a limit, it's an exact size. Sometimes you can use a different size,
but that's completely hardware dependent - so stick to the advertised
size.
I think we're now at the point where the two paths are merged.
Still no atomic functionality because nothing assigned the primary plane,
so we have no atomic state to commit. The machinery should be in place
though.
We'll be doing tests as we build up plane state assignment. it's too late
to do anything about it if we fail here - failed tests will block plane
assignment in the first place so the scene graph knows it still has to
render those visual elements.
This will simplify a bunch of API that would otherwise have to pass in
both output and plane - and in some cases we might not have the output
handy anyway.
In cases where output monitors have different frequencies, we need to
be doing atomic commits on a per-output basis. This patch modifies the
ecore_drm2_fb_flip function to support doing atomic commits per output.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
As we need to do atomic commits on a per-output basis, these 2 newly
added API functions can go because these functions did one atomic
commit for all outputs
Signed-off-by: Chris Michael <cp.michael@samsung.com>
As there is nothing inside this function which requires any Atomic API
calls, this #ifdef can be removed and the function can then still be
used to assign Primary planes for non-atomic use cases.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This commit fills in various output 'state' structures during creation
so that those state structures can be reused for pageflip handling
even if Atomic support is not enabled.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This commit enables the ability to fill our state structures even if
atomic support is not enabled. This will allow us to reuse those state
structures for dealing with pageflip in both the atomic & non-atomic
use cases.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
As there is nothing 'atomic' specific in these structures, we can move
them outside the atomic ifdef and make use of them for handling
pageflip for both atomic and non-atomic use cases.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
There have been cases where the logic of _event_callback_call break'ed
too early in the event submission.
Reason for that was the line ((const unsigned char *) desc -
(const unsigned char *) it->desc) producing a overflow.
This means the if statement
if (!legacy_compare &&
((const unsigned char *) desc - (const unsigned char *) it->desc) < 0)
was true while the pointer desc was smaller than it->desc, which means
the event subscription got aborted, even if it should not.
This turned out on two 32 bit maschines. And led to not rendering apps
anymore.
It was introduced by commit in 605fec91ee.
@fix
Summary:
Cleans up grammar, simplifies wording, and elaborates on some details
for better clarity. Assume the reader will already have a basic
understanding of reference counting and 3D graphics in order to avoid
overexplaining these concepts.
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4837
widget operations use NULL terminated strings, backend does not.
Refactor some selection code so all selection deletions trigger
undo events (except where they should not).
Summary: Added a new api to send the prediction hint string to IME.
Test Plan: Tested in Tizen device
Reviewers: woohyun, id213sin, jihoon
Reviewed By: jihoon
Subscribers: cedric, jsuya, z-wony, jpeg
Differential Revision: https://phab.enlightenment.org/D4805
This is needed by dmabuf engine fallback when it realizes it locally
allocated a buffer, has been rendering to it, but the compositor can't use
it.
So the engine copies its buffer contents into a new wl_shm buffer and
continues from there - however we need to make sure the async renderer
has finished first, so we don't copy a partial buffer.
This allows us to block for all previously submit actions in the render
queue to complete.
Summary:
when collecting the objects under a mouse pointer,
evas uses the geometry of an object to decide
whether the mouse pointer is inside the area of the object,
which is inappropriate for a mapped object.
so mapped objects don't receive mouse events when they should.
this patch fixes the issue.
Test Plan: A sample code will be added as comments
Reviewers: jpeg, raster
Subscribers: cedric, eunue
Differential Revision: https://phab.enlightenment.org/D4826
Previously the progressbar in fileselector use hardcoded style name
"wheel", that made unpossible to create different style for
fileselector. This commit made it possible.
@fix
Missing style name for sub cursor call the next error output:
ERR<24193>:elementary lib/elementary/els_cursor.c:734 elm_cursor_theme()
Could not apply the theme to the cursor style=(null)
Also this error call extra recalc for cursor hot spots.
Fixes T5408
@fix