this seems wrong since it's using smart object geometry to determine
event-based positioning within an edje object. considering it from a user pov,
it definitely is wrong because why would you deselect items based on mouse
movement?
ref D2622
ref da81eff897
@fix
This is a very simple proof of concept for using hardware planes for
evas image objects.
Right now only dmabuf objects will be dropped into planes, and they're
considered in the order they're in in the scene graph with no attention
paid to which objects will have the most benefit from being on a plane
at all. There's nothing to prevent your mouse cursor from consuming the
only hardware plane capable of UHD video. :)
This is mostly just to help test the low level functionality in the
engines and ecore_drm2 that enable hardware planes. Smarter plane usage
is coming.
Add functions for assigning hardware planes to evas image objects.
The unfortunate asymmetry of the code is due to plane assignment being
only fully verifiable by doing a test commit through ecore_drm2, so it's
simpler to have the "test" function also do the "assignment", and call
the release on failure to clean up after a failed test.
If an evas object is a wayland dmabuf, uses native surface 5 or higher,
and has a scanout handler set, then it meets the basic requirements for
placing on a hardware plane.
Functions to assign a plane for a native surface, and release a plane
that's been assigned to a native surface.
These are empty for now as they'll need to be overridden in any backend
that can handle planes.
When a native surface ends up on a hardware plane, the caller needs to
know about it so it can prevent the resource from being destroyed while
on scanout (which may cause an implicit page flip and a stall), and
so it knows that the content may have changed usage domains.
This adds stubs for dealing with this - only for wl dmabuf right now, but
it may be useful for other surface types later.
The same fb can be placed in multiple hardware planes, we need to keep
track of the number of planes it's on at any time so we can send events
to a compositor in a later commit.
The plane state struct needs the fb id for drm updates, and the plane
state can be updated even if it's pointed to by a dead plane.
Dead planes need to keep their fb so we can properly handle the fb
lifetime.
The old per output release handler is no longer complicated enough. In
the near future we'll need to be able to tell an engine that its fb has
been placed on scanout via hardware plane, or removed from a hardware
plane.
It's simpler to provide that information as well as release information
through a single callback.
This improves a rare error message when a function is called on an
efl_part() that does not implement it. Example: calling a swallow
function on a non-swallow part.
This isn't entirely fool-proof but should already help quite a bit.
This also changes how the efl_part proxies are stored: the variable
is not reset to NULL every time we use it, instead we check it in
the del intercept.
Note: _part_reuse_error() can not be enabled inside
_internal_proxy_get because there are valid use cases such as:
func1(efl_part(obj, part), func2(efl_part(obj, part), ...), ...)
Here we use two efl_part() at the same time, on the same object,
but we haven't entered "func1" yet when we are reaching the second
call to efl_part(). This is completely valid and there is pretty
much no way to detect this.
I think I will improve this later with a core function on
Efl.Object like "debug_string".
Ref T5584
This focus on the domain and ID bits is very confusing. Let's
keep it at the end of the message, and also try to guess whether
the object may have been deleted or simply doesn't belong to the
current thread.
Forgot to consider the edje object's offset when porting the code
to efl_part (see 98dad1a52b).
This fixes a few bugs, one of which is region_show for the scrollable
mode.
See 4e79dd0f02
That patch was absurd. Do not change the use of a legacy stable
API when you change an EO API. If you need to do that then there
is very clearly a problem in the patch.
This reverts the test case to use the legacy API (which in turn
calls the EO API anyway so both are tested).
Fixes T5587
As we may have both a pointer and touch device on a given system, we
need to accurately set event->device when sending mouse move, wheel,
down, and up events. Previous code here would always try to find a
mouse device first which could potentially end up setting the wrong
event->device (if a touch device also existed).
This patch fixes the issue by comparing the window used for the event
to our focused windows (either mouse or touch) and setting the proper
event->device based on that.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
The patch was created for EFL 1.18. But, it was merged for EFL 1.20.
@fix
Test Plan: N/A
Reviewers: herdsman, jpeg, cedric
Differential Revision: https://phab.enlightenment.org/D4968
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Need to handle this with special care as Efl.Text.Cursor is used in
some functions that are specific to Efl.Canvas.Text, was well as
functions in Efl.Text.Cursor interface.
Value-based alignment (e.g. 0.5, 0.3 etc) isn't very practical.
Horizontal and vertical alignments will be assigned with enums
"left", "center", "right", "auto", "locale", for horizontal alignment,
and "top", "center" and "bottom" for vertical alignment.
This changes the previously added "halign" and "valign" properties.
Summary:
The expand state changed callback has been called when layout property changed and other reason.
Even expand state is not changed.
So we need to check the current view state to call expand changed callback.
(We can't prevent calling the _shrink_mode_set() function. It needs to call the re-arrange internal items.)
Test Plan:
elemenatay_test - multibuttonentry.
Check the shrink, expand state.
Reviewers: jpeg, cedric, woohyun
Reviewed By: jpeg
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4970
Summary:
This completes the documentation for Ecore_Evas for all (non-deprecated)
APIs.
Note that ecore_evas_software_16_ddraw_new, ecore_evas_direct3d_new,
ecore_evas_gl_glew_new, and ecore_evas_sdl16_new are left undocumented
because while they're not declared as deprecated their implementations
are either missing or marked as obsolete or legacy. I suspect a few of
the remaining routines are likely also obsolete but I added
documentation anyway.
Reviewers: cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D4972
First steps toward explicit function pointer support in eolian.
To declare a function pointer type, use the following syntax, similar to
a regular eolian method declaration.
function FunctionName {
params {
...
}
return: Return type
}
Summary: Signed-off-by: Sanjeev BA <iamsanjeev@gmail.com>
Test Plan: Test with edi.
Reviewers: ajwillia.ms, jpeg, cedric
Reviewed By: ajwillia.ms
Differential Revision: https://phab.enlightenment.org/D4971
this was originally intended to allow some code to be moved out of the
compositor, but the idea turned out to be unfeasible since multiple
display backends need to be supported and not all related components
will provide similar functionality
with async device init, it's possible for mouse in/out/move events to be added
by an application before the pointer devices are created. these are independent
of devices, so store the state and apply when pointer devices are added
fix T5531
This commit reverts support for added API functions inside Ecore_Wl2
to support setting window stacking mode as per IRC discussion with
Cedric
This reverts commit 1359fc9e5f.
Small patch to add API functions which allow getting/setting if a
window is in floating mode
"#divergence"
@feature
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Small patch to add an API function which can be used to find out if a
given window is set to skip focus events.
"#divergence"
@feature
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Small patch to add an API function which can be called to set if a
window should skip focus.
"#divergence"
@feature
Signed-off-by: Chris Michael <cp.michael@samsung.com>
There is a mismatch between seat & pointer.
See @zmike's comments in T5515. Having both seat and pointer
devices as different devices leads to these kinds of issues.
Really annoying.
Ref T5515
This enables some insane debugging for input events inside evas.
Also, declutter the code by always providing the "spaces" variable.
Obviously this is not enabled :)
Example, without any running wayland compositor:
ELM_DISPLAY=wl runsomeapp
elm_win runs efl_constructor() during finalize() which is wrong
and leads to this kind of inconsistencies. Urgh.
Test scenario:
elementary_test -to "Window Inline"
Click on an entry, select some text (maybe with the keyboard)
There was a CRI message inside _ecore_evas_interface_get because
ecore_evas_wayland2_window_get() was called on an X11 ecore_evas
(not wayland).
The function was supposed to return NULL here.
This is, unlike what some of the documentation says, a public
API on elm_object. Let's place it along mirrored for consistency,
even if edje object will not implement it.
Ref T5363
Summary:
There are many requests to add a new feature for handling horizontal align
according to current locale. For example, in RTL locale setting,
users want to see right aligned text for every list's item.
Even if some of list's items only contain LTR characters!
It is useful for the needs.
@feature
Test Plan: N/A
Reviewers: herdsman, tasn, woohyun, raster, cedric
Reviewed By: herdsman, raster
Subscribers: z-wony, jpeg
Differential Revision: https://phab.enlightenment.org/D4664
After finalize, the type of an input device can not be changed.
So, deprecate the function and prevent anything from happening
unless we're inside efl_add().
Ref T5515
Summary:
efl_version will be used to figure out which version of EFL lib
is used to develop a edje file.
If there is no property of efl_version, it will be 1.19 as default.
This feature is needed to fix T5548.
Example:
efl_version: 1 20
@feature
Test Plan: N/A
Reviewers: cedric, jpeg, herdsman, zmike, raster
Reviewed By: cedric
Maniphest Tasks: T5548
Differential Revision: https://phab.enlightenment.org/D4961
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>