Commit Graph

87 Commits

Author SHA1 Message Date
Mike Blumenkrantz a347a47e75 ee-wayland: use frame callbacks exclusively to determine render timing
when running in a wayland compositor, the ideal mode of operation is to
only prepare/send frames when the compositor has finished with the previous
frame

to achieve this, manual rendering can be toggled upon creating and completing
a frame callback, ensuring that a canvas never has multiple pending buffers at
any given time

fix T2784
2015-10-20 16:57:05 -04:00
Chris Michael e7211c1517 ecore-evas-wayland: Don't use custom animators for frame callbacks
Summary: As we now have per-window timer-based animators in
ecore_wayland for frame callbacks, we no longer should be using Custom
animators to handle surface frame callbacks

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-10-14 14:56:17 -04:00
Chris Michael 6b943ffa70 ecore-evas-wayland: Don't resize ecore_wl window to include frame size
Summary: ecore_wl_window_resize adjusts the internal representation of
the window size so this should not include the "framespace" also. This
fixes an issue where xdg surface would be getting an incorrect window
geometry which included framespace.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-10-12 10:58:00 -04:00
Chris Michael 210c6b9b7c ecore-evas-wayland: Set ee->draw_ok appropriately based on visibility
Summary: A previous code change to the common code which processes
updates is relying on having the ecore_evas->draw_ok flag set in order
to process updates. This change makes sure that ee->draw_ok is in sync
with canvas visibility.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-10-08 16:10:53 -04:00
Chris Michael 65578034ef Add experimental implementation of custom animator ticks
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-08-20 14:21:02 -04:00
Chris Michael 5f8f87df3d ecore-evas-wayland: Set wl_display in the evas engine structure
Summary: This sets the wl_display field of the Evas engine info
structure so that the wl_display can later be used for dispatching
queue while we await a free buffer

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-07-30 14:42:14 -04:00
MinJeong Kim 2cf0ed49ce ecore_evas_wayland: prevent duplicated shutdown of ecore_wl
Summary:
When the ecore_evas of wayland_egl/shm is freed with ecore_evas_free(),
ecore_wl_shutdown() is called by _ecore_evas_wl_common_free().
so ecore_wl_shutdown() after ecore_evas_free() has to be skipped.
@fix

Reviewers: devilhorns, raster, zmike, gwanglim

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2503
2015-05-14 07:55:24 -04:00
Cedric BAIL ce5ccfb5be ecore: remove the need to order the header correctly for Windows. 2015-05-07 09:53:10 +02:00
MinJeong Kim f485d5ffdd ecore-evas-wayland: remove duplicated shutdown of ecore_evas_wl_common
Summary:
 After a creation for ecore_evas_wayland_shm or ecore_evas_wayland_egl is
failed, _ecore_evas_wl_common_shutdown() gets called 'twice'.

 First shutdown is from _ecore_evas_wl_common_free() which is set as fn_free()
of ecore_evas engine, and this fn_free() is called by ecore_evas_free().
 Second is from direct call inside ecore_evas_wayland_shm_new_internal()
(or ecore_evas_wayland_egl_new_internal()).
 This duplicated shutdown causes block of first next _ecore_evas_wl_common_init
because init count is not zero but -1.

 So second shutdown should be removed so that it makes enable fall back to
another wayland engine correctly when one is failed to create ecore_evas_wayland.

@fix

Reviewers: gwanglim, devilhorns

Reviewed By: devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2451
2015-04-30 11:31:19 -04:00
Tom Hacohen 5b5b7113b7 Ecore_evas wayland: remove double parenthesis around comparison.
Double praenthesis should be used around assignments, not comparisons.
Doing this correctly all aronud lets the compiler warn us about potential
mistakes.
2015-04-22 13:13:21 +01:00
Chris Michael b55a24727a ecore-evas-wayland: Remove frame callbacks from Ecore_Evas wayland
engine

Summary: Frame callbacks are now handled inside the engine itself and
are thus not needed here anymore

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-03-17 15:50:56 -04:00
Mike Blumenkrantz 7171135792 ecore evas should not crash when unsetting pointer
ref D812

disappointed.jpg
2015-02-06 17:54:08 -05:00
kabeer khan c1d805d2b4 ecore_evas/wayland_shm: Set alpha of ecore_evas object if parent alpha is set
Summary:
Resolved FIXME ecore_evas_wayland_shm_new_internal to set alpha if parent alpha is set

Signed-off-by: kabeer khan <kabeer.khan@samsung.com>

Reviewers: devilhorns

Reviewed By: devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D1842
2015-01-05 09:12:30 -05:00
Chris Michael 9cd2d614e9 ecore-evas-wayland: Fix issue with ELM_PROFILE=mobile and windows not
showing up correctly.

Summary: If elm config profile is set to Mobile, then the
auto_norender_withdrawn is set to 1, which was causing Elm windows to
not draw properly due to the ee->withdrawn property not being updated.
It was not getting updated due to these checks for override.

NB: Tested this with all elm profiles, tested in weston, and tested in
Enlightenment (Wayland).

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-12-05 12:52:22 -05:00
Chris Michael ae00e44269 ecore-evas-wayland: Fix wayland windows not showing up after 5954289c6c
Summary: Wayland windows should follow X11 windows fairly closely,
thus only set withdrawn property if they are override windows. If not,
internal dialogs do not show up in Enlightenment (wayland-only).

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-29 14:55:17 -04:00
Carsten Haitzler 5954289c6c ecore_evas - ecore_evas's should start withdrawn then normal on show
this fixes initial state of an ee where you couldn't detect when the
window had been accepted by the wm (goes to normal state from
withdrawn).

@fix
2014-10-29 19:34:33 +09:00
Chris Michael e4fd7c5924 ecore-evas-wayland: Remove useless variable.
NB: Don't recall what the initial point was here, but I don't see one
now lol. No real usage for checking the ecore_wl_init count anymore so
remove the variable as we don't need to do that.

@fix

Signed-off-by: Chris Michael <devilhorns@comcast.net>
2014-06-18 21:08:48 -04:00
Gwanglim Lee cbf6f94c80 ecore_evas: Added support for window auxiliary hint
Summary:
The window auxiliary hint is the value which is used to decide
which actions should be made available to the user by the WM. If you
want to set specific hint to your window, then you should check whether
it exists in the supported auxiliary hints that are registered in the
root window by the window manager.

Once you've added an auxiliary hint, you can get a new ID which is used
to change value and delete hint. The window manager sends the response
message to the application on receiving auxiliary hint change event.

A list of auxiliary hint within the Ecore_Evas has this format:

  ID:HINT:VALUE,ID:HINT:VALUE,...

Reviewers: raster, cedric, seoz, Hermet

Reviewed By: raster

CC: cedric

Differential Revision: https://phab.enlightenment.org/D543
2014-02-28 07:20:01 +09:00
Gwanglim Lee 77092d94d4 ecore_evas: added window manager rotation to manage the rotation of windows by the WM.
Summary: The window manager rotation allows the WM to controls the rotation of application windows. It is designed to support synchronized rotation for the multiple application windows at same time.

Reviewers: raster, seoz, cedric, Hermet

Reviewed By: raster

CC: cedric

Differential Revision: https://phab.enlightenment.org/D529
2014-02-09 09:46:51 +09:00
ChunEon Park 892b1c5be3 ecore_evas - applied macro to check rotation state.
also, let the potrait compare on the higher priority.

if you can suggest better macro name, then please modify it.
2014-01-18 22:26:10 +09:00
ChunEon Park 8cd92c17e0 Revert "ecore_evas - use the macro orthogonal check."
This reverts commit 43acf1e82f.

some partial changes are incorrectly applied.
2014-01-18 22:04:25 +09:00
ChunEon Park 43acf1e82f ecore_evas - use the macro orthogonal check. 2014-01-18 21:53:56 +09:00
ChunEon Park fb59ac34a1 ecore_evas - use eina_bool instead of the char for interal data. 2014-01-13 14:26:36 +09:00
Chris Michael 13caf63420 Fix opaque windows becoming transparent after hide() then show().
This fixes Phab #T611. Previously, windows which were opaque would
become transparent after being hidden and then shown. We fix that by a
call to ecore_wl_window_alpha_set when the window gets shown. This
patch also brings the wayland_egl hide code more inline with the shm
hide code by testing if the surface does not match the existing one.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-12-09 07:35:16 +00:00
Chris Michael 8f21dfe06b Set engine aspect function pointer
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-12-05 11:52:37 +00:00
Chris Michael 231790c7cb Update the engine resize edge before we call ecore_wl_window_resize
Ecore_wl_window_resize essentially tells the shell to start the resize
process. We should have the evas engine info's resize_edge updated
Before we start that process so that Evas knows where the resize is
occuring from

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-12-04 11:32:45 +00:00
Rafael Antognolli 615d5ab634 ecore_evas/wayland: Add a function to cleanup the frame callback.
This callback must be manually destroyed and removed on
ecore_evas_hide(), because it won't be delivered anymore after the
surface is destroyed. If the callback still exists, the engine will find
it and avoid doing a new redraw until it is finally called.

Maybe the correct thing to do is to keep this callback in the
Ecore_Wl_Window struct, and have some functions to set/unset it, so it
gets destroyed when the window is hidden. Or when the surface is
destroyed.
2013-12-02 17:54:29 -02:00
Rafael Antognolli ff5533b4e1 ecore_evas/wayland: Implement ecore_evas_withdrawn_set.
Just call ecore_evas_show/hide inside the function.
2013-12-02 17:51:55 -02:00
Chris Michael e28d54d3e4 Unify ecore_evas resize code across both shm and egl engines.
This reduces code duplication for ecore_evas resize routines inside
wayland engines by using a common _ecore_evas_wl_common_resize
function as the resize code for both engines was the same anyway.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-11-15 08:11:09 +00:00
Rafael Antognolli 8b852ad21e ecore/wayland: Set win->resizing flag inside ecore_wl_resize(). 2013-11-01 15:51:14 -02:00
Rafael Antognolli 1c33a1a57b ecore/wayland: Add title_set and class_name_set APIs.
These two APIs will save the title and class_name inside
Ecore_Wl_Window, so if they are called before the shell surface is
created, the stored names will be used later when the window is finally
shown (shell surface is created).

This way we are also hiding the shell surface from ecore_evas modules.
2013-11-01 15:07:48 -02:00
Rafael Antognolli 277a5915c1 ecore/wayland: Remove attributes that are not used anymore.
Some attributes might have been useful in the past, but not anymore.
Just remove since they are not been used anywhere.
2013-11-01 10:30:29 -02:00
Rafael Antognolli 1deb107d56 ecore/wayland: Do not store "edges" in Ecore_Wl_Window.
This is a configure event info, so put it in the right place. Some
places adding edges info were also removed, which means that they were
redundant.

Tested with <Meta> + middle click resize, and with window border resize,
on all the edges. Apparently, nothing breaks.
2013-10-31 21:35:13 -02:00
Rafael Antognolli dd18206d86 ecore/wayland: Do not use win->id directly.
Use a getter for it instead, so we don't need to expose the
Ecore_Wl_Window struct just because of it.
2013-10-31 21:35:13 -02:00
Rafael Antognolli ccdeae7ce4 ecore/wayland: Use sync callback to report end of ecore_wl_init().
At the end of the ecore_wl_init() function, send a sync request to the
server, and add a callback listener to the "done" event. When this event
is received, we are sure that all the registry bind requests done so
far were processed already, and that the registry and globals are
available and can be used.

Now, on the functions that request interfaces or registry, we call
_ecore_wl_init_wait(), which will check if the callback was received
already (that means that all requests inside the init were processed).
If it was not yet, then we wait until receiving that callback, before
returning the requested data.
2013-10-28 14:47:33 -02:00
Rafael Antognolli ad731e8b21 Revert "change init done bindings."
This reverts commit b87afd1b94.

Wrong branch, wrong commit.
2013-10-28 14:46:40 -02:00
Rafael Antognolli b87afd1b94 change init done bindings. 2013-10-28 14:07:25 -02:00
Chris Michael d8ec30d7cf Call common rotation code before setting engine info
NB: Part of Phab T359 fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-09-17 07:41:08 +01:00
Chris Michael ec76c76f74 Restore old functionality of ecore_evas_alpha_set.
NB: We will still create all new canvases as alpha by setting it in evas,
however this allows the 'state' of ecore_evas_alpha_set/get to retain
it's original functionality and thus accurately report what a client
application May have set alpha value too.

NB: Fixes Phab Ticket T350

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-09-10 14:37:17 +01:00
Chris Michael 609941e0fa Create any wayland canvases as Alpha by default now.
Remove calls to ecore_wl_window_update_size inside the alpha &
transparent_do functions (this call not needed here anymore).

NB: This is needed due to recent frame "fixes". Basically, even tho we
set the opaque region correctly on a surface now, if the canvas itself
is not alpha, then we will end up with a black "spacer" around the
window.

NNB: Tested Both engines with terminology (both translucent and not) and also the window state test in elementary.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-09-04 14:25:50 +01:00
Chris Michael 781b3844b1 Update ecore_evas wayland_shm routines for removal of
server_allocation member.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-08-29 09:06:53 +01:00
Chris Michael 5c2eadea98 Reduce duplicated code for setting engine resize edge
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-08-21 08:31:11 +01:00
Chris Michael d65c357b39 During a call to ecore_evas_show (using wayland_shm), we can avoid
erroneous calls to engine_setup code if we check surface validity.

NB: Short Version: Don't reassign surface if we don't need to.

NB: Prior to this, during a call to ecore_evas_show we would always
Reset the evas engine data (which was basically triggering code to
tear down and reconstruct all the engine internals including the
buffers and the swapper). By checking surface validity first, we can
potentially avoid all that teardown and reconstruction Thus resulting
in faster "show" speed.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-07-25 15:48:40 +01:00
Chris Michael cc596a3588 If the init count is >= 1, then we want to iterate (ecore_imf wayland
module adds an extra init).

Fix some formatting

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-07-23 07:15:19 +01:00
Chris Michael f0e47a2219 Add pointer_xy_get function to engine functions
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-07-08 10:59:20 +01:00
Chris Michael c2a2b36083 During shm engine creation, we can create the ecore_wl_window first
AND get the surface for it...so that we can pass the surface directly
to the evas engine.

NB: Works. nothing broken.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-06-07 15:42:53 +01:00
Chris Michael a4dea5a0cb Bunch of minor "consistency" changes to bring egl and shm code in-sync.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-06-07 15:42:52 +01:00
Chris Michael a4e30e597c Add missing NULL fields.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-05-16 13:22:35 +01:00
Chris Michael 9325929df3 Revert "ecore evas wayland: if(()) are used for assignments, add missing NULL fields"
This reverts commit ab505d5d23.
2013-05-16 13:20:21 +01:00
Jérémy Zurcher ab505d5d23 ecore evas wayland: if(()) are used for assignments, add missing NULL fields 2013-05-16 13:17:11 +02:00