with deferred surface creation the first canvas change of hints may not
be able to trigger protocol methods for size hints, so ensure that hints are
set
If we're not ticking already when a new animator is started then we have
to wait for a vblank to get a tick. That's not great.
If we can, use the time of the last vblank to generate an immediate tick
to avoid this latency.
Since the engines can call the flip functions, we need to protect the
ticker from missing those flips. Thus, we let ecore_drm2, which obviously
sees all flips, track them.
Intended to simplify the upcoming commit that merges device find and
device open into a single function that returns a device.
The fd is something callers shouldn't really need to get their hands on,
right now there are still a few places where it's needed, but those will
be gone soon too.
Small patch to add a handler for catching Window Iconify State Change
events
'#divergence'
@feature
Signed-off-by: Chris Michael <cp.michael@samsung.com>
So vmware's graphics driver reports the MONOTONIC drm cap, yet uses
CLOCK_REALTIME instead. This leaves us with a gigantic offset between the
gpu timestamp and the times ecore_time_get() gets from CLOCK_MONOTONIC.
Since ticking screws directly with loop time this results in some long
distance clock jumping.
This commit fixes drm/gl_drm operation under vmware.
This lets us do a blocking wait for a vsync. Something we should try to
do as infrequently as possible, but in some cases we need it one time at
startup to catch graphics driver bugs.
usecase:
show -> rotation -> hide -> show
ecore_evas_wayland didn't check the rotation.
when ee is landscapemode, it cannot update the right area of evas.
Engines that provide their own tickers may need to be able to provide the
time of the last tick even if they weren't sending ticks to EFL at the
time.
This is a feature added during freeze as it's necessary to resolve a bug.
ref T5462
BAILing here can break animators permanently, so best to just log the
issue and move on (and potentially allow the ticker to wake us from DPMS).
ref T5462
Partially reverts a795629e8c
With atomic mode setting this has the hilarious side effect of waking
up the display from dpms.
Attempting to tick when manual render is set is likely a bug, so
log an ERR.
fix T5462
If the framespace size has changed and by accident (or in fact, by
design) the evas size + framespace size is equal to the size sent
by the X server, ecore_evas_x was skipping the resize event. This
patch adds a tracking of the framespace size so that we redraw the
canvas if it changed.
This will fix issues with the main menu (since it's in the framespace,
23 pixels tall with the default theme & scale).
Note that all this is partly because the ecore evas size is the size
without the framespace, so weird calculations are made during resize...
Ref T5482
This patch adds support for updating ecore_wl2_window stack mode when
the ecore_evas_layer_set is called.
"#divergence"
@feature
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This patch adds support for ecore_evas_focus_skip_set in the wayland
engine.
"#divergence"
@feature
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This patch adds function pointers to the Wayland Interface that can be
used for supporting auxiliary hints on a given window
@feature
Signed-off-by: Chris Michael <cp.michael@samsung.com>
1. The word "class" is a pain point with many languages where
it's a keyword. Type is a little better. Also, the property
was already named "device_type" and not "device_class".
2. Remove Efl.Input.Device.Sub_Class
It's not used inside EFL upstream codebase, and unlikely to
be used anywhere else (even in Tizen).
Hopefully no one used the Efl_ enum types. So far only the Evas_
types should be in used.
Ref T5540
As we will now use static_libs/libdrm for building ecore_evas_drm, we
no longer need to include this bit of borrowed four_cc code from libdrm
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This patch adds support to Ecore_Evas_Wayland for Window Manager
Rotations so that window managers which do support rotations are able
to rotate an EFL wayland application.
@feature
Signed-off-by: Chris Michael <cp.michael@samsung.com>
As we won't get a request from a server to raise a window which is not
visible anyway, this check is useless.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
_ecore_evas_wl_common_new_internal() creates both wayland_egl and
wayland_shm backed windows, so reporting that the failure was in looking
up "Wayland_Shm" could be misleading.
Also, this routine can be called with any arbitrary string as
engine_name, so including what was received in the error message might
be helpful for diagnosing bugs.
Reviewers: cedric
Reviewed By: cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D4897
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This is a quick and harmless hack to make sure we don't come back to a
dead compositor on a vc switch.
A proper fix will follow eventually, I promise.
Really. Would I lie?
this is still semi-broken if a seat has many pointer-ish type devices since
pointer devices in ecore-evas were never correctly implemented to be 1:1 with
seat:cursor relationships
@feature
windows do not have pointers or cursors under wayland, seats do. due to
lack of multiseat support, most components simply use the "default" seat
with these functions, but this should make the corresponding code more
easily adaptable
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
This fixes fullscreen feature in Elm on Windows as the geometry of the desktop
was not known.
In case of multiple displays, the desktop, where the window is displayed, is used for fullscreen.
@fix
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
the code added by minkyoung has a definite security flaw here trusting
e->response to be within a small range when all it is is an int -
range is not limited other than that... so fix the code to check for
range like further code below does.
this commit went in 2 days ago... so not an existing bug fix.
Summary:
This prevent invalid shared memory access.
Invalid access occur when server is resized sequentially from now to A-size
to B-size, and client receive A resize message after resizing B.
Then client try to render plug image with A-size, but shared memory is B-size
buffer. Size are mismatch. This makes segmentation fault when uploading texture(gl)
or rendering image(sw).
Test Plan: Indicator rendering on Tizen3.0 platform.
Reviewers: jypark, wonsik, dkdk, scholb.kim, jiin.moon, jpeg, cedric
Reviewed By: cedric
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4711
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This reverts commit dfb1877500.
This did fix the problem of "rage -f" not starting properly, but it
broke toggling between fullscreen and !fullscreen for other apps.
They'd resize to a large, but not quite fullscreen, size, then render with decor
present, and big black bars on the right/bottom edges (which were offscreen due
to the client size and position)
This isn't really the right place to fix this - it's a protocol usage bug, not
a canvas bug.
Currently, ecore_evas_extn only use exclusive lock.
so if there are many ecore_extn_plugs , there is competition among the ecore_extn_plugs.
since the ecore_extn_plugs dont need to use exclusive lock, add the shred lock mode.
We need a display unset path for software render to prevent an async
render completing after a disconnect from posting a frame and crashing
us.
As of this commit both software and gl session recovery work for me.
fix T5005
#SessionRecoveryWorksHere
Calling ecore_wl2_window_surface_get() has the side effect of creating
a new wayland surface if we don't already have one. If we do that
during a session recovery, we can try to create a new surface while
we have no connection to a compositor - that's Bad.
So we just use the one we already have stored - which we NULL out on
disconnect.