Commit Graph

792 Commits

Author SHA1 Message Date
Chris Michael b12b26d4c0 ecore-wl2: Add client-side event for Window Hide
Small patch to add and send a client-side event for when a window gets
hidden.

'#divergence'

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-27 09:47:43 -04:00
Chris Michael 873b917e9e ecore-wl2: Add client-side event for Window Show
Small patch to add and send a client-side event for when a window gets
shown.

'#divergence'

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-27 09:47:43 -04:00
Mike Blumenkrantz 3e2d62d408 ecore-wl2: use first seat to start move/resize op when none specified
don't do lookups by name, the default seat is the first one added
2017-06-26 10:32:44 -04:00
Mike Blumenkrantz 3d098097bf ecore-wl2: do not send exit event on disconnect if servers exist
this kills the compositor.

@fix
2017-06-23 17:43:44 -04:00
Chris Michael 52f35fde0c ecore-wl2: Fix issue(s) of setting wrong event device
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>
2017-06-20 11:59:36 -04:00
Chris Michael 632d6018d5 Revert "ecore-wl2: Add API to support setting window stack mode"
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.
2017-06-15 13:09:34 -04:00
Chris Michael 1359fc9e5f ecore-wl2: Add API to support setting window stack mode
Small patch to add support for setting stack mode on a given window

"#divergence"

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-15 11:34:50 -04:00
Chris Michael e3abac30f1 ecore-wl2: Add API to get/set if a window is in floating mode
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>
2017-06-15 11:07:48 -04:00
Chris Michael bdcf798dba ecore-wl2: Add API to set window role
Small patch to add support for setting a window role on a given window

"#divergence"

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-15 10:54:30 -04:00
Chris Michael 689d77daf6 ecore-wl2: Add API to get if a window should ignore focus events
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>
2017-06-15 10:35:45 -04:00
Chris Michael 9b76c284c9 ecore-wl2: Add API to set if a window should skip focus
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>
2017-06-15 10:32:25 -04:00
Chris Michael b13a73ae87 ecore-wl2: Group window functions together in header file
This patch just moves window related functions together in the
Ecore_Wl2_Window_Group

NB: No functional changes

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-13 13:23:54 -04:00
Chris Michael 1d453eece4 ecore-wl2: Free auxiliary window hints when we destroy a window
@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-13 12:57:24 -04:00
Chris Michael b678382b8a ecore-wl2: Add API to support deleting auxiliary window hints
@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-13 12:57:17 -04:00
Chris Michael 8b311aa27f ecore-wl2: Add API function to change auxiliary window hint
@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-13 12:57:17 -04:00
Chris Michael daddaac7ec ecore-wl2: Add API to support adding auxiliary window hints
@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-13 12:57:17 -04:00
Chris Michael e0454373f8 ecore-wl2: Add API function to get list of supported auxiliary hints
@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-13 12:57:17 -04:00
Chris Michael 3e1ad4d45a ecore-wl2: Add event and structure for auxiliary hints
@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-13 12:57:17 -04:00
Bryce Harrington 67295ed747 ecore_evas: Document ecore_evas Wayland operations
Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4954
2017-06-12 11:54:06 +09:00
Chris Michael d47538dc0e ecore-wl2: Fix window rotation event structure and various typos
As these events will be raised to ecore_evas_wl and the handlers there
do not pass along the Ecore_Evas as 'data', we need to change the type
of variable passed along in the event struture so that
ecore_event_window_match can be called to find the Ecore_Evas.

This patch also fixes some typos discovered during compile

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-09 12:30:42 -04:00
Chris Michael 498691d5a3 ecore-wl2: Add event type for window rotate events
@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-09 12:30:42 -04:00
Chris Michael b897780189 ecore-wl2: Add API and Event for window rotation change done
@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-09 12:30:42 -04:00
Chris Michael 1eaaab93b1 ecore-wl2: Add API and Event for window rotation change request
@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-09 12:30:42 -04:00
Chris Michael 3087f02ef2 ecore-wl2: Add API and Event for window rotation change prepare done
@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-09 12:30:42 -04:00
Chris Michael 92d214d8f9 ecore-wl2: Add API and event for window rotation change prepare
@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-09 12:30:42 -04:00
Chris Michael 9930929dbb ecore-wl2: Add API to return window available rotations
@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-09 12:30:41 -04:00
Chris Michael b1584c9054 ecore-wl2: Add API to set window available rotations
@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-09 12:30:41 -04:00
Chris Michael fa7f8d25b2 ecore-wl2: Add API to return a windows preferred rotation
@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-09 12:30:41 -04:00
Chris Michael 8b685a4d54 ecore-wl2: Add API to set window preferred rotation
@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-09 12:30:41 -04:00
Chris Michael 258c75e641 ecore-wl2: Add API to get if an application has set window rotation
@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-09 12:30:41 -04:00
Chris Michael c23a0d080d ecore-wl2: Add API to set if an application has rotation a window
@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-09 12:29:25 -04:00
Chris Michael e12077adfa ecore-wl2: Add API to get if window manager rotation is supported
This patch adds an API function which can be called to determine if
window manager rotation is supported.

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-09 12:29:25 -04:00
Chris Michael 8f9163aaa1 ecore-wl2: Add API function to set if wm rotation is supported
Small patch to add an API function which can be called to set if
window manager rotation is supported.

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-09 12:29:25 -04:00
Chris Michael c7da93c1de ecore-wl2: Use output height when calculating dpi
When calculating output dpi, we should also be considering output
height in the calculation.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-07 11:21:19 -04:00
Chris Michael 5ee913426d ecore-wl2: Add API function to set surface buffer transform
Small patch to add an API function which can be called to set a buffer
transformation on a given window.

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-07 11:09:58 -04:00
Chris Michael 5b84bf2c24 ecore-wl2: Add API function to return an output transformation
Small patch to add a new API function that can be used to retrieve the
current transform value for a given output.

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-07 11:09:58 -04:00
Chris Michael b69060ab88 ecore-wl2: Add missing doxygen groups for documentation
@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-07 11:09:58 -04:00
Chris Michael 70a345005b ecore-wl2: Add API function to find an output for given window
Small patch which adds an API function that can be used to find the
output where a given window resides.

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-07 11:09:58 -04:00
Chris Michael a9e0148c62 ecore-wl2: Add event for output transformation
Some servers may need to do special animations or other effects when
an output transformation happens, so raise an event in the output
geometry callback when this happens.

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-06-07 11:08:48 -04:00
Cedric BAIL 183c45d35a ecore_wl2: silence gcc warning.
Code is correct, but gcc can not follow the branch if and believe it
is worth triggering a warning.
2017-06-05 12:07:57 -07:00
Bryce Harrington e1fbde9e5b elput: fix sp. usefull
Reviewers: cedric

Reviewed By: cedric

Subscribers: cedric, jpeg

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-06-05 12:04:43 -07:00
Mike Blumenkrantz f61e2636a5 ecore-wl2: change safety null check to regular null check on surface create
this is a normal case during async init
2017-06-02 18:23:42 -04:00
Mike Blumenkrantz c60fbea89f ecore-wl2: add null checks for xkb compose pointers
somehow these can fail to be created
2017-06-02 18:23:42 -04:00
Mike Blumenkrantz d61453be22 ecore-wl2: do not unref non-matching input device upon removal
this is how you avoid crashing

@fix
2017-06-02 18:23:42 -04:00
Mike Blumenkrantz fbe5ff0104 ecore-wl2: implement compose keys
@feature

ref T5006
2017-05-26 16:27:42 -04:00
Mike Blumenkrantz d1c35171c1 ecore-wl2: add weston copyright notice to ecore_wl2_input.c
this file contains code copied from weston
2017-05-26 16:27:42 -04:00
Mike Blumenkrantz fb082484b0 ecore-wl2: permit null drag icon window in ecore_wl2_dnd_drag_start()
this is explicitly allowed in the spec

@fix
2017-05-19 15:53:52 -04:00
Mike Blumenkrantz 771d8803dd ecore-wl2: block key->string translation when appropriate
copied from libX11.

I don't understand what's going on here but this fixes input bugs such
as, e.g., holding ctrl and pressing shift affecting cursor position in
terminology

@fix
2017-05-19 13:17:31 -04:00
Mike Blumenkrantz 2b2367b6ff ecore-wl2: add copyright info to code copied from libX11
this code has been slightly modified, but it was originally taken without
attribution from libX11/src/KeyBind.c

ref 08c804f5bb

@fix
2017-05-19 13:17:30 -04:00
Mike Blumenkrantz f4ad162eef ecore-wl2: remove ecore_wl2_window_input_get()
this function does not make sense within the context of wayland and seats,
since a surface does not own and is not owned by a seat, nor is there a 1:1
association between surfaces and seats
2017-05-19 13:17:30 -04:00
Mike Blumenkrantz 13cf5a1d43 ecore-wl2: do not attempt to call zxdg_surface_v6.get_popup without a parent
this is a protocol error so ensure that it can never occur

@fix
2017-05-19 13:17:15 -04:00
Mike Blumenkrantz 7caf3b88ce ecore-wl2: add ecore_wl2_window_popup_input_set()
this is a function for explicitly setting the seat which will be used
for popup grabs

@feature
2017-05-19 12:41:17 -04:00
Mike Blumenkrantz 2fe7878235 wayland: move pointer-related functions to ecore_wl2_input namespace
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
2017-05-19 12:41:17 -04:00
Mike Blumenkrantz 55cfc97455 wayland: send focus in/out events when receiving/losing keyboard focus
since this is typically what efl defines as "focus"

@fix
2017-05-19 12:41:17 -04:00
Mike Blumenkrantz 5ebdf8f341 wayland: use shell activated state to indicate focus in csd
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
2017-05-19 12:41:16 -04:00
Mike Blumenkrantz 704a22d1c9 ecore-wl2: add ecore_wl2_window_activated_get()
this is specifically for returning the shell surface's activation state
which is NOT equivalent to the window having input focus

@feature
2017-05-19 12:41:16 -04:00
Mike Blumenkrantz 1bc837c3de ecore-wl2: redo ecore_wl2_window_move() to take a seat instead of coords
this triggers a move operation and is seat-dependent
2017-05-19 12:41:16 -04:00
Mike Blumenkrantz d7d3c9adab ecore-wl2: redo ecore_wl2_window_resize() to take a seat instead of size
this triggers a resize operation and is seat-dependent
2017-05-19 12:41:16 -04:00
Mike Blumenkrantz 871e0c8de8 ecore-wl2: add ecore_wl2_display_input_find_by_name()
@feature
2017-05-19 12:41:16 -04:00
Mike Blumenkrantz 0b10aa7f19 ecore-wl2: use nonblocking event flush when disconnecting a client
roundtrip will deadlock if called in a compositor process

@fix
2017-05-19 12:41:16 -04:00
Mike Blumenkrantz a08f8e7bbf ecore-wl2: add ecore_wl2_display_name_get()
@feature
2017-05-19 12:41:16 -04:00
Mike Blumenkrantz 047118c6e2 ecore-wl2: add ecore_wl2_display_input_find()
for finding seat using hw id

@feature
2017-05-19 12:41:16 -04:00
Mike Blumenkrantz 68a3f43d1e ecore-wl2: add functions for proxying a selection receive externally
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
2017-05-12 12:08:26 -04:00
Mike Blumenkrantz 8afdbaba48 ecore-wl2: add function for setting a drag source's actions without a drag
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
2017-05-12 12:08:25 -04:00
Mike Blumenkrantz f6964f50e3 ecore-wl2: add function for accepting a single mime type
@feature
2017-05-12 12:08:25 -04:00
Mike Blumenkrantz 9f69882211 ecore-wl2: do not offer a null mime first in ecore_wl2_offer_mimes_set()
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
2017-05-12 12:08:25 -04:00
Mike Blumenkrantz 2e5251b364 ecore-wl2: add events for changes in keymap, selection, and kbd repeat rate
@feature
2017-05-12 12:08:25 -04:00
Mike Blumenkrantz d119fdded9 ecore-wl2: add 'cancelled' to Ecore_Wl2_Event_Data_Source_End
it's impossible to know the result of a drag operation without this
member
2017-05-12 12:08:25 -04:00
Mike Blumenkrantz 05fd3771e7 ecore-wl2: add display object to all events
this is required in order to determine which connection an event originated
from
2017-05-12 12:08:25 -04:00
Mike Blumenkrantz 1a7279f72e ecore-wl2: add const to internal function param 2017-05-12 12:08:25 -04:00
Mike Blumenkrantz 4f2a8b8679 ecore-wl2: add seat id to most events
seat id is required in order to handle multiseat environments
2017-05-12 12:08:25 -04:00
Mike Blumenkrantz 37ff7b43f1 ecore-wl2: emit serials in selection-related events
these allow apps to match the serial of their selection to the related
event in order to avoid mangling selections from other components
2017-05-12 12:08:25 -04:00
Mike Blumenkrantz d51252a69e ecore-wl2: change selection setting apis to return the serial of the request
in the case where multiple places in an app may be handling selections, this
is necessary in order to manage the selections accurately

@feature
2017-05-12 12:08:25 -04:00
Mike Blumenkrantz 5869767355 ecore-wl2: remove ERR when trying to find the focused window id
this can trigger in the case where a selection transfer occurs and
no input resource has received an enter (e.g., the window is not focused)

@fix
2017-05-12 12:08:25 -04:00
Mike Blumenkrantz 00da1a771a ecore-wl2: correctly refcount display objects during events
ensure lifetime of display object is longer than events in which
the object is passed

@fix
2017-05-12 12:08:25 -04:00
Mike Blumenkrantz 8b6526eb7a ecore-wl2: add safety check in ecore_wl2_display_inputs_get()
ensure this is not called on server displays
2017-05-12 12:08:25 -04:00
Mike Blumenkrantz ba2a76d7ab ecore-wl2: handle case where session recovery listener triggers on dead surface
@fix
2017-05-12 12:08:25 -04:00
Mike Blumenkrantz f32cb9ea00 ecore-wl2: add function for checking if a client connection sync is done
@feature
2017-05-12 12:08:25 -04:00
Mike Blumenkrantz 7c9e3d2dbd ecore-wl2: add some accessors for useful Ecore_Wl2_Input struct members
@feature
2017-05-12 12:08:25 -04:00
Mike Blumenkrantz 44f22a250e ecore-wl2: split data offers into selection and drag
these are distinct objects and can coexist simultaneously; a drag
source should not overwrite an existing selection source

@fix
2017-05-12 12:08:25 -04:00
Mike Blumenkrantz 8afe0a7a6c ecore-wl2: store names for inputs and add api for retrieving name
@feature
2017-05-12 12:08:25 -04:00
Mike Blumenkrantz 6fc8ea3c4b ecore-wl2: add checks for a valid display object in ecore_wl2_input fns
no display = invalid object, so this needs checking
2017-05-12 12:08:25 -04:00
Mike Blumenkrantz eb9a5165f4 ecore-wl2: move ecore_wl2_display_inputs_get() into ecore_wl2_display.c 2017-04-21 16:16:12 -04:00
Jean-Philippe Andre a33815eeef ecore wl2: Fix compilation 2017-04-21 10:08:52 +09:00
Derek Foreman f45b63edbd ecore_wl2: Don't crash when drag and drop is unsupported by compositor
Check for presence of data device manager so we don't crash if it's not
there.
2017-04-20 14:41:54 -05: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
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
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 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 81adcf8107 ecore_wl2: avoid crash during shutdown due to Ecore_Event queue. 2017-03-09 16:17:58 -08:00
Derek Foreman 5e7456a315 ecore_wl2: Fix up xdgv6 ack_configures
We've been immediately acking configure with the correct serial number, then
later at commit time sending an incorrect serial (generating a new one).

Remove the extra ack, and save that serial for later, and don't overwrite
it with a current serial when we get a toplevel configure.

Oddly, compositors were letting us get away with this behaviour, so this
probably looks functionally the same as before.
2017-03-09 16:11:56 -06:00
Derek Foreman 4f1c858928 ecore_wl2: Fix initial maximized/fullscreen state
This defers the fullscreen/maximized states if we don't have a shell
surface, and sets them in the first shell surface commit.

ref T5044
2017-03-09 12:21:09 -06:00
Derek Foreman aedf55073a ecore_wl2: Rename badly named API
Oops, I broke naming convention with this, but it's unreleased and beta so
I hope nobody notices as long as I change it now...
2017-03-09 12:21:09 -06:00
Derek Foreman e1ffb46a0e ecore_wl2: Remove wl_shell client support
We're never going to encounter a compositor without at least xdg v5
support, so remove wl_shell support.
2017-03-09 12:21:08 -06:00
Bryce Harrington 8ed9aec49b ecore-wl2: Clarify post-condition for global lookup in _ecore_wl2_shell_bind
Summary:
The !global test is a post-condition that _ecore_wl2_global_find
provided valid data, so the code is clearer if this is kept separate
from the subsequent if chain for looking up the shell.  Since this
post-condition returns from the function on error, it can stand alone.

Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>

Reviewers: devilhorns, ManMower

Reviewed By: ManMower

Subscribers: jpeg, cedric

Differential Revision: https://phab.enlightenment.org/D4690
2017-03-08 14:13:01 -06:00
Chris Michael 927dc167ec ecore-wl2: Remove some debugging printouts
These prints were left over from
5b9374583e and should not have been pushed.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-03-07 08:19:26 -05:00
Derek Foreman 16a1f8f188 ecore_wl2: Fix a wayland session recovery breaker... again
We need to bind a shell on reconnect, but dfb2af697 made sure
we only bind a single shell per wayland display for the life of
the display object - which lives longer than the connection.

That means when session recovery tries to reconnect it never bothers
to bind a shell, so the client can never post buffers.

ref https://phab.enlightenment.org/T5226
ref https://phab.enlightenment.org/T5005

@fix
2017-03-01 13:49:02 -06:00
Chris Michael cb39bd158e Revert "ecore-wl2: Send surface_commit after ack_configure"
Reverting this as apparently one source says to send a commit after
ack_configure, and another source says its wrong...

This reverts commit 1187035fe6.
2017-03-01 13:14:50 -05:00
Chris Michael 5ec4715b9d ecore-wl2: Fix efl apps crashing on close in wayland
Commit c6b59be1da ensured display cleanup after roundtrips, however we
cannot call the display_cleanup function After the display has been
disconnected ... oopsie. Essentially the call to the cleanup function
was in the wrong place here so fix.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-03-01 12:08:09 -05:00
Chris Michael 1187035fe6 ecore-wl2: Send surface_commit after ack_configure
Small patch to ensure we send a surface commit after sending the
ack_configure. This fixes an issue where E-WL internal windows would
not maximize.

Fixes T5192

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-03-01 10:25:35 -05:00
Chris Michael c6b59be1da ecore-wl2: Ensure display cleanup after roundtrips
Commit ee52a28d04 added a roundtrip to
ensure and pending wl events were handled before we disconnected the
display. While this ensures some things like session recovery destroy
work again, it lead to an issue where the _ecore_wl2_display_cleanup
function was called BEFORE we processed pending events. This (in turn)
causes crashes due to processing of pending events that relied on
things like Ecore_Wl2_Input existing. As the display cleanup function
clears inputs & outputs, we need to defer calling that until the
display_roundtrip has dispatched and handled pending events.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-03-01 08:32:18 -05:00
Chris Michael da22b6fc66 ecore-wl2: Cleanup function for finding global
As per Mike, the iterator macro already does the casting for us, so we
can cleanup the code here and not do casting, plus we can remove an
extra variable...bonus ;)

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-28 12:36:05 -05:00
Chris Michael b0bd191f7b ecore-wl2: Use EINA_ITERATOR_FOREACH macro
Small patch to change from while (iterator) to using the
EINA_ITERATOR_FOREACH macro...that I had forgotten about...thanks Mike
;)

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-28 12:28:02 -05:00
Chris Michael dfb2af6974 ecore-wl2: Ensure we only bind one wayland shell
This patch adds prioritizing to our wayland shell binding code so that
we only bind One shell that the compositor advertises. During the
global_add callback, the shells get added to the 'globals' hash, and
when sync is done, we will search for shells to bind based on priority
so that we can ensure we always bind to the latest supported shell.

ref T5226

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-28 12:17:02 -05:00
Chris Michael 3d81843a3b Revert "ecore-wl2: Only bind one shell"
Reverting this in favor of a better approach (using a priority list)
as discussed on IRC.

This reverts commit 0e93f03636.
2017-02-28 11:37:15 -05:00
Chris Michael 5b9374583e ecore-wl2: Actually update input/opaque regions
Previous commit f8f71d05cd to avoid resetting
opaque & input regions was not totally complete as it did not update
the actual values...small patch to fix that.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-28 10:12:31 -05:00
Chris Michael f8f71d05cd ecore-wl2: Avoid resetting opaque & input regions if they match
Small patch to avoid setting the same opaque/input regions if they
already match what is being requested.

ref T5226

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-28 08:51:21 -05:00
Chris Michael 0e93f03636 ecore-wl2: Only bind one shell
Since we only ever use One shell at a time, let's not bind all of them
as that is useless.

ref T5226

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-28 08:40:26 -05:00
Chris Michael 515c2d0374 ecore-wl2: Fix setting input region on a window
Previous code here would store incorrect values into the
window->input rectangle. These values should be what is actually
getting set in the wl_region. This code also fixes an issue when
setting input region for transparent/alpha windows by clearing out
any pending input region (wl_surface_set_input_region(surface, null)).

Reviewed-By: Derek Foreman <derekf@osg.samsung.com>

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-14 13:36:13 -05:00
Chris Michael 559490d756 ecore-wl2: Fix setting opaque region on a window
Previous code here would store incorrect values into the
window->opaque rectangle. These values should be what is actually
getting set in the wl_region. This code also fixes an issue when
setting opaque region for transparent/alpha windows by clearing out
any pending opaque region (wl_surface_set_opaque_region(surface, null)).

Reviewed-By: Derek Foreman <derekf@osg.samsung.com>

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-14 13:36:03 -05:00
Mike Blumenkrantz ee52a28d04 ecore-wl2: roundtrip during client disconnect
ensure all pending requests are processed by the compositor and fixes
session recovery destroy

@fix
2017-02-10 17:23:33 -05:00
Derek Foreman 3dd19f16cb ecore_wl2: Update compositor bind now that damage_buffer is released
We had to do some weird special case stuff when binding wl_compositor
because we implemented damage buffer before depending on a wayland
release that provided it.

Now our wayland dep is newer than damage buffer, so the test can be
more conventional.

Should have no functional change.
2017-02-10 10:25:53 -06:00
Chris Michael 4d62761759 ecore-wl2: Support sending focus for wl_shell
wl_shell does not use a surface state for activation, so we still need
to send the focus in/out for that based on keyboard enter/leave.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-08 12:30:10 -05:00
Chris Michael 4b2188103d ecore-wl2: Don't send focus in/out events based on keyboard enter/leave
We should not be sending focus events based on keyboard behaviour, but
rather send them according to xdg shell activate status. This makes
our focus behaviour more "standards" compliant.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-02-08 11:54:07 -05:00
Derek Foreman 5097ba893b ecore_wl2: Make www events opt-in
Now we must set EFL_WAYLAND_ENABLE_WWW to turn on www.  (Note:
this does NOT re-enable any visual effect, it merely controls
the event infrastructure that can be used to let a client
know when its window is mapped or moving)

This wasn't really disabled properly earlier, so disable it now
for a slight performance win when dragging windows (and a major
reduction in log chatter when debugging wayland)
2017-02-01 16:21:34 -06:00
Chris Michael a306cba6c3 ecore-wl2: Don't set opaque or input regions if already set
If the window opaque/input regions already match what is being
requested (to be set), then no need for the compositor to create
regions and set them.

@optimize
@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-01-25 12:02:35 -05:00
Derek Foreman 0669ca31ff wayland: Try not to draw into surfaces without roles
xdg v6 will barf if we attach a buffer to the surface before
we receive a configure - even if we attach before trying to
make a shell surface.

So we need to prevent any drawing into surfaces until we've
decided what kind of surface they'll ultimately be.

Fix T5090
2017-01-19 15:25:17 -06:00
Derek Foreman f162f47297 ecore_wl2: Auto generate www protocol
Needed to copy the protocol file from Enlightenment.
2017-01-18 13:04:48 -06:00
Derek Foreman 2aa8b5acad ecore_wl2: Auto generate teamwork protocol
The name was non-standard and we didn't have the xml in tree,
xml has been copied from Enlightenment.
2017-01-18 13:04:48 -06:00
Derek Foreman 5b25ff3281 ecore_wl2: Auto generate xdg v6 protocol
Mostly trivial, needed to update private header as we'd used a
non-standard name for our generated copy.
2017-01-18 13:04:47 -06:00
Derek Foreman 50883f7a6f ecore_wl2: Auto generate xdg v5 protocol
Remove our generated copies, also rename the XDG_VERSION macro
so it's not quite so confusing now that we support v5 and v6.
2017-01-18 13:04:47 -06:00
Derek Foreman dc84374d45 ecore_wl2: Remove private copy of subsurface protocol
This became core wayland functionality a long time ago, and we
now depend on wayland new enough to have it, so we should never
need the stale copy we had in tree.
2017-01-18 13:04:47 -06:00
Derek Foreman 163a7bb76c ecore_wl2: Auto generate dmabuf protocol
Remove the server protocol file as we don't need it here.

Generally a trivial change as we have a recent version in tree with
no weird changes.
2017-01-18 13:04:47 -06:00
Derek Foreman 26ec54c169 ecore_wl2: Auto generate session-recovery protocol
Check in the latest session-recovery xml and remove the checked
in generated files.
2017-01-18 13:04:47 -06:00
Chris Michael 2e0dc2a1f9 ecore-wl2: Add function to get touch device
When we are sending input events, if we have no pointer device then we
should be setting ev->dev to a touch device (as touch events are
treated as pointer events inside EFL).

NB: This allows EFL clients to get touch events in Enlightenment.
There are still some small hiccups here (can't close terminology by
pressing the 'x' in the corner, cannot scroll elm_test srollbar, etc).

Likely EFL needs to change wrt all this...perhaps adding events for
touch that are separate from pointer ?...

ref T5094

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-01-17 12:31:01 -05:00
Mike Blumenkrantz de1a6d6f42 ecore-wl2: make session recovery listener global
global proxies have a single instance and do not work with
multiple listeners

@fix
2017-01-13 11:33:59 -05:00
Chris Michael 83defff028 ecore-wl2: Use input serial for move and resize functions
This is a partial revert of 2bd880c6c7 which changed to use
wl_display_get_serial function. When can do that for most things,
however things like window move/resize need to use the input serial
which started the move/resize.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-01-13 09:53:52 -05:00
Chris Michael 755c50a84e ecore-wl2: Add event to raise when window configure is completed.
Small patch to create and raise a new event letting ecore_evas know
when the window has been configured. With the addition of xdg_shell v6
support, we cannot commit a surface with an existing buffer until the
surface has been configured. This patch allows us to raise an event to
ecore_evas when the surface has been configured, so we can then attach
a buffer to it.

ref T5090

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-01-11 12:36:33 -05:00
Chris Michael 4bb9038b67 ecore-wl2: Minor formatting fixes
NB: No functional changes, just formatting

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-01-11 12:36:27 -05:00
Chris Michael 41ff3c9d94 ecore-wl2: Mark window as pending configure when showing popup
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-01-10 12:00:39 -05:00
Chris Michael 07433065aa ecore-wl2: Remove incorrect EINA_UNUSED
These parameters are actually used inside this function so remove the
EINA_UNUSED

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-01-10 11:49:10 -05:00
Chris Michael 2bd880c6c7 ecore-wl2: Use 'serial' directly from wayland call
As we cannot rely on window->display->serial to be accurate (it is
only set when there is input going on), we should be getting the
'serial' values here directly from a wayland function call.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-01-10 11:48:18 -05:00
Chris Michael 101c772412 ecore-wl2: Add flag to indicate pending configure
With the change to xdg_shell v6 we need to indicate that a window has
a pending configure event, and not show the window if a configure is
pending. In order to handle this, we add a flag to the window
structure and can check it inside ecore_evas.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-01-10 11:27:10 -05:00
Chris Michael 90ab99cba6 ecore-wl2: Use correct serial value
When we get a configure event, we should be using the current display
serial to set as the window configure serial value. Previous code
would always end up setting the window configure_serial to 0 as
win->display->serial was not getting updated.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-01-10 08:51:33 -05:00
Derek Foreman bc000f3ad2 ecore_wl2: Fix accidental re-use of tmp var
Oops, same tmp var for a nested inlist traverse.  That won't end well.
2017-01-05 13:40:31 -06:00
Derek Foreman df72ddf43c ecore_wl2: Don't request shell surfaces for all window types
Now that cursors are "windows", this results in a mess.  So skip at least
NONE and DND for now.
2017-01-05 13:40:31 -06:00
Derek Foreman 120063ad76 ecore_wl2: Prevent use after free on input deletion
Window structs keep inputs around, so we should sweep through them
and NULL out any stale ones on a delete.
2017-01-05 13:40:31 -06:00
Derek Foreman 8328d4db89 ecore_wl2: Remove the rest of the cursor frame callback
Oops, I made a clean spot, now I need to clean up the rest of this.

ref 641dfab516
2017-01-05 13:40:31 -06:00
Chris Michael d86b296813 ecore-wl2: Add support for xdg shell version 6
This patch adds support (client-side) for xdg_shell version 6.
Enlightenment is currently using this version as it's desktop shell,
so we need to support it client-side also.

fixes T4998

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-01-04 14:25:18 -05:00
Chris Michael 4ba4efb8fc ecore-wl2: Fix formatting
NB: No functional changes, just cleaning up formatting before the
serious work begins.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-01-04 11:08:49 -05:00
Derek Foreman 641dfab516 wayland: Fix cursor surface frame calls
The common code was skipping frame callback when no shell surface was
present - cursors aren't shell surfaces.

Add the frame callback to the common path and remove the bespoke callback
from the cursor code.
2017-01-03 16:40:21 -06:00
Guilherme Iscaro 133b4fa65b Ecore Wl2: Add ecore_wl2_window_pointer_device_xy_get() API.
This commit adds a Wayland specific function to fetch a mouse
position.
2016-12-20 18:34:39 -02:00
Mike Blumenkrantz b4740389f9 ecore-wl2: restore previous session recovery behavior on hide
ref 9492ee21df
2016-12-14 11:44:13 -05:00
Chris Michael b66324644c ecore-wl2: Minor formatting fix
NB: No functional changes

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-12-08 14:32:22 -05:00
Chris Michael 6dca94d8bf ecore-wl2: No need to call hide inside the free function
When we are freeing an Ecore_Wl2_Window, there is no need to call
ecore_wl2_window_hide anymore because inside the free function we are
destroying subsurfaces, surfaces, etc, etc so no need to even unmap
them.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-12-05 09:27:11 -05:00
Chris Michael 4c7ff57cb2 ecore-wl2: When we hide a window, attach a NULL buffer to the surface
This patch essentially makes sure that the surface gets a NULL buffer
attached to it when we are hiding.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-12-05 09:22:26 -05:00
Chris Michael 4c140180d1 ecore-wl2: Don't destroy surfaces on window hide
In order to hide a window (via wayland) we can actually assign a NULL
buffer to the surface, so there is no need to destroy the window's
wl_surface during a hide request.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-12-02 14:25:10 -05:00
Chris Michael 80df180157 ecore-wl2: Add warning if a wl_surface_frame callback failes to get created
There could be situations where wl_surface_frame fails to create a
callback. In those cases, we should not be trying to add a wl_callback
listener for a non-existant callback.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-11-30 12:12:38 -05:00
Guilherme Iscaro 6b95c4c2ec Ecore Wl2 Input: Canvas focus IN/OUT events should contain the seat.
This provides the information about which seat originated the event.
2016-11-28 13:57:55 -02:00
Guilherme Iscaro 9f8e2e0d9c Ecore Wayland: Remove ECORE_WL2_SEAT_CAPABILITIES_NO_SEAT.
Summary:
It's not possible to have an Ecore_Wl2_Input without a seat.

Ecore Evas Wayland: Remove seat existence check.

At this point every seat advertised is considered new, therefore
it will not be in the devices list.

Reviewers: barbieri, jpeg, cedric, bdilly

Reviewed By: bdilly

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4408
2016-11-16 17:50:32 -02:00
Bruno Dilly 6f66c6e676 ecore_wl2: ref / unref evas devices on ecore events
Summary:
It should avoid issues when device is removed after the ecore
event addition but before listeners are called (so pointer
would be invalid).

Reviewers: iscaro

Reviewed By: iscaro

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4407
2016-11-16 17:01:24 -02:00
Guilherme Iscaro 9ba11c5cd0 Ecore Evas Wayland: Create the devices during Ecore_Evas setup.
Summary:
When launching an Elementary App using Wayland the elm_config will
automatically connect to the Wayland's display server and all events
regarding seats are lost, since by the time that Ecore_Evas is created
the global events were already dispatched. To fix this problem,
everytime an Ecore_Evas is created, the code must check if there
are any seat capabilities available, if so, the devices will be created.

Reviewers: bdilly, barbieri, cedric, jpeg

Subscribers: devilhorns, cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4390
2016-11-16 18:26:25 +09:00
Chris Michael e3f02acc93 ecore-wl2: Update cursor regardless of cursor surface
If a NULL surface gets passed into ecore_wl2_window_pointer_set that
would mean we are unsetting the cursor surface, so we should still be
calling wl_pointer_set_cursor even with a NULL surface.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-11-02 12:13:09 -04:00
Bruno Dilly 8bf74da7bc ecore_wl2: associate evas devices to input ecore events
So users would be able to differentiate between source
seats.
2016-11-01 16:06:19 -02:00
Bruno Dilly 7aab35961f ecore_wl2: add ecore event for seat capabilities change
So when mouse / keyboard are present or not it will
generate events.

ecore_evas/wayland will handle that creating or
deleting evas devices for each one (seat device
will be used as parent).
2016-11-01 16:06:19 -02:00
Bruno Dilly d7b1a5dfeb ecore_wl2: add ecore event for seat name change
And handle it on ecore_evas/wayland, properly
setting the evas device names.
2016-11-01 16:06:19 -02:00
Chris Michael f3240f630b ecore-wl2: Unify surface creation code
As we call the same code during ecore_wl2_window_surface_get and
ecore_wl2_window_show functions that basically create the wl_surface
for a given window we can unify that code into one function that can
be called from various places. This also fixes an issue inside
ecore_wl2_window_show where the window surface_id may not have been
getting filled properly.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-31 14:05:13 -04:00
Chris Michael 72f2ac2c3a ecore-wl2: Only call pointer_update_stop once
As we already call _ecore_wl2_input_cursor_update_stop above, we
actually don't need to call it a second time.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-28 12:35:12 -04:00
Chris Michael d4a483c40b ecore-wl2: Disable pointer frame callback if no cursor surface
If we have no cursor surface, then we don't need the pointer frame
callback anymore so call cursor_update_stop which will delete the
pointer frame callback

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-28 09:55:27 -04:00
Chris Michael f39e0ad20d ecore-wl2: Don't create cursor frame callback if there is no cursor
surface

In the event that we have no cursor surface, then we should not be
creating a cursor frame callback.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-28 09:55:27 -04:00
Mike Blumenkrantz 1cdeff1c42 ecore-wl2: only update pointer frame if there is a pointer surface
fix T4777, T4776
2016-10-28 09:53:29 -04:00
Chris Michael f5da8d2068 ecore-wl2: Remove erroneous cursor structure from Ecore_Wl2_Pointer
These fields in Ecore_Wl2_Pointer were never used, so remove them.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-26 11:01:13 -04:00
Chris Michael 59bf99eda2 ecore-wl2: Ensure we remove the proper pointer frame callback
During the pointer frame callback, if we had a 'callback' but did not
have an input->cursor.frame_cb then we would have ended up deleting
the callback here anyway. Let's add a comparison of the callback to
the pointer frame callback to ensure we are removing the proper
callback.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-26 11:01:13 -04:00
Chris Michael eeb4ce879d ecore-wl2: Remove usage of pointer update timer
As we are no longer using X pointer images, we no longer have the need
for an Ecore_Timer to update any animated X images so remove.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-26 11:01:13 -04:00
Chris Michael 2166ae6377 ecore-wl2: Remove cursor field from window structure
Remove the const char *cursor field from the window structure as this
is useless. It was never used for any real functional purpose.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-26 11:01:12 -04:00
Derek Foreman 09378052e7 ecore_wl2: Add API to disable session recovery
Enlightenment needs a way to avoid using session recovery functionality
when connecting to itself for internal windows.
2016-10-25 14:07:09 -05:00
Chris Michael a80d4ef5a5 ecore-wl2: Remove usage of libwayland-cursor
This commit removes usage of libwayland-cursor inside Ecore_Wl2
library. This is done so that EFL Wayland applications can use EFL
mouse pointers and not look ugly :)

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-25 14:22:07 -04:00
Chris Michael db63eff588 ecore-wl2: Don't call cursor_update_stop function twice.
When setting a cursor by name, the _ecore_wl2_input_cursor_set
function already makes a call to stop updating the cursor, so no need
to run that twice.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-25 14:22:07 -04:00
Chris Michael 3a44b0fd17 Revert "ecore-wl2: Remove all references to wl_cursor usage"
This reverts commit 173fda5c11.

Reverting this as we need to handle mouse pointers a different way.
2016-10-25 11:07:32 -04:00
Chris Michael 173fda5c11 ecore-wl2: Remove all references to wl_cursor usage
This commit essentially removes the ability to use wl_cursor for EFL
Wayland Client Applications. This is a request from "some old man" ;)
for efl wayland applications to use EFL pointers, not X/FDO pointers.

@feature

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-21 15:32:47 -04:00
Chris Michael 79815ea851 ecore-wl2: Fix typo in API function name
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-10-17 10:43:27 -04:00
Derek Foreman 35995be7b0 ecore_wl2: add API for testing if a window has a shell surface 2016-10-14 16:07:08 -05:00
Derek Foreman 9efd12a278 ecore-wl2: Fix input and opaque region setting
Bad y co-ordinate resulted in broken shadows after session recovery.

@fix
2016-10-13 17:40:38 -05:00
Mike Blumenkrantz ed743dddf0 ecore-wl2: add internal window flag for determining if opaque/input have been set 2016-10-07 11:00:08 -04:00
Mike Blumenkrantz ea7d6e11d3 ecore-wl2: apply input+opaque regions after creating window surface
@fix
2016-10-07 10:51:39 -04:00
Mike Blumenkrantz 463549e343 ecore-wl2: avoid crashes when setting window attrs before surface creation
this is async anyway

@fix
2016-10-07 10:51:39 -04:00
Marcel Hollerbach 174f355446 ecore_wl2: fix array overflow
fixes CID 1363215
2016-09-26 13:17:24 +02:00
Marcel Hollerbach 203b7a8fc6 ecore_wl2: support parallel receiving of different mimetypes
The mimetypes are now populated with the event and the data.

This also fixes CID 1363217
2016-09-26 13:17:24 +02:00
Marcel Hollerbach 296446b878 ecore_wl2: fix null dereference issue
if we dont get the userdata of a offer something in the protocol went
very very bad, we should not emit there a error, just return.

Also if we are getting a null offer we should dereference the nulled out
offer object.

This fixes CID 1363214
2016-09-26 13:17:24 +02:00
Marcel Hollerbach d8e6fb7820 ecore_wl2: utilize the event window_ids
if a dnd operation enters a surface the window_id is clear, so a offer
is always specific to a window. If we have a source we try to fetch the
id from the focus/prevfocus or keyboardfocus.

This fixes dropping into a efl app which never got focus before.
2016-09-24 19:18:21 +02:00
Marcel Hollerbach b05f6dc1d7 ecore_wl2: add more documentation on ecore_wl2 cnp/dnd api 2016-09-23 11:15:14 +02:00
Marcel Hollerbach 5884bba096 ecore_wl2: introduce offer api
This commits adds api to deal with wayland offers.
It also ports elm_cnp to use the new api.

The selection_get and dnd_drag_get calls are replaced by simply receive
data from the offer.

The Offer object is now also emitted in every Enter,Motion,Drop and
Leave event, so a potential user can prefetch data and display it.
To finish a dnd operation positiv, the user has to call the finish call
before the offer is destroyed
2016-09-23 11:15:14 +02:00
Marcel Hollerbach 7d6fd10523 ecore_wl2: save action of data source in seperated field
the drag.source is only available if the drag is happing inside the same
client.

So for the case there are two efl apps (A,B) , where A started the dnd and
the B is currently entered by the dnd, then A has the data source, and B
has the offer, if B sets a action on the offer A tried to set it on a
field which does not exist there, this fixes that. It saves the action
to a undepended field.
2016-09-23 11:14:41 +02:00
Jean-Philippe Andre b29847e0da wayland_egl: Fix double free in case of failure
When trying to create a window, the WL EGL engine creates
an ecore_evas and connects to the wayland display. But if
EGL is not supported (in weston with nvidia for instance),
the egl initialization fails and the window must be detroyed
in order to fallback to wayland_shm.

This led to a double disconnect from the wayland display
as both the ecore_evas del and the error handling code
were trying to disconnect.

Also, use ref == 0 in two places rather than ref <= 0, as
it can prevent double frees in bad situations (ref < 0).
And reset a global variable to NULL on shutdown.
2016-08-11 11:37:41 +09:00
Stefan Schmidt 063c31cb24 ecore_wl2: mark new events with since tag 2016-08-05 23:14:57 +02:00
Chris Michael ed55b1f733 ecore-wl2: Add safety check for valid compositor
As we cannot create a new wl_region without a valid compositor, add a
safety check.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-07-26 12:43:24 -04:00
Chris Michael acbba9b03b ecore-wl2: Remove error message during connect/reconnect
Since session recovery can cause apps to constantly try and reconnect
to the display server, we probably should not be filling logs here. On
the other hand, any failures on first connect are now not going to
display any error messages.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-07-26 10:55:31 -04:00
Chris Michael b32e1ace46 ecore-wl2: Reduce debug noise on key events
This is annoying to see key events flooding a terminal ... so comment
out this debug statement. If a developer really needs this, then
enable it locally.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-07-25 12:18:48 -04:00
Marcel Hollerbach f94d349f52 ecore_wl2: also add the del control code
otherwise we are sending the controlcode for delete, which is wrong.

This fixes the backspace on delete problem.
2016-07-25 17:45:13 +02:00
Marcel Hollerbach 348f6b428a ecore_wl2: be compatible with x input
This commit introduces a new state per input, this state is just for the
keymap and no modifieres, the state is used to get the keysym from a
keycode. This is done to stay compatible with x since keyname in efl is
the characters which are describing the key which is pressed, without
the transformation of shift etc.

This also escapes keycodes from beeing a utf8 character, and passes out
a keyname instead of the utf8 symbol.

fix T3976
fix T4184
2016-07-21 22:10:54 +02:00
Stefan Schmidt 7d443f30e2 ecore_wl2: dnd: fix leak of event resource when not used
In the else branch the allocated event is never used. Make sure we free the
resource before returning.

CID: 1357753
2016-07-19 14:52:28 +02:00
Marcel Hollerbach 67917c27fe ecore_wl2: clear out read_data and len
they are passed to the event struct, and later freed in there.
2016-07-13 17:52:46 +02:00
Chris Michael 5fc4b971dc ecore-wl2: Fix issue of misleading 'if' statement
Gcc reports that this 'if' statement is misleading due to indentation.
We should only be sending the 'finish' call if the dnd version
supports it, however we should always be sending 'destroy'

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-07-11 11:56:17 -04:00
Marcel Hollerbach f0325fc190 ecore_wl2: Make offer destroy more secure
Check if it is NULL and NULL after each destroy call
2016-07-11 11:02:52 +02:00
Marcel Hollerbach 75bb8060b3 ecore_wl2: split of cnp_selection_data_ready and
dnd_selection_data_ready

before there was the case that both handlers are called even if just dnd
data arrived.
2016-07-11 11:02:52 +02:00
Marcel Hollerbach 63e88bdcfa ecore_wl2: only destroy source when not needed anymore.
Otherwise we are destroying the source before getting dnd_finished or
cancled events, which is a problem.
2016-07-11 11:02:52 +02:00
Marcel Hollerbach c300678391 ecore_wl2: buffer reading of the data
Otherwise callbacks can go out even if the selection data is not ready
to read.
2016-07-11 11:02:52 +02:00
Marcel Hollerbach cf5a79ea60 ecore_wl2: delay the destruction of the offer or do it in the read 2016-07-11 11:02:52 +02:00
Chris Michael 7496df08aa ecore-wl2: Fix error handling for bad fd
If we end up failing to get the fd from ecore_main_fd_handler_fd_get,
then we should just bail out of this function and try again later.

Fixes Coverity CID1357213

@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-07-03 18:23:45 -04:00
Chris Michael 183a611cde ecore-wl2: Fix uninitialized variable
Coverity reports that len is used un-init here, so let's give it a
value at declaration time

Fixes Coverity CID1357214

@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-07-02 07:17:23 -04:00
Chris Michael ff7a5e4f1b ecore-wl2: Fix issue where hash would not get destroyed on error
Coverity reports that we could not reach the eina_hash_free here on
erorr condition. This was due to an erroneous return NULL above the if
(hash_create) check.

Fixes Coverity CID1357171

@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-06-30 11:14:40 -04:00
Chris Michael 79277d1cb4 ecore-wl2: Fix issue of passing negative number to close() and read()
We should be checking the return value of ecore_main_fd_handler_fd_get
calls as they can return a negative number...which cannot be passed to
the close() or read() functions.

Fixes Coverity CID1357152 and CID1357153

@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-06-30 11:09:11 -04:00
Chris Michael 35f76fe8a8 ecore-wl2: Check the return value of ecore_main_fd_handler_fd_get
This patch fixes an issue where ecore_main_fd_handler_fd_get could be
returning a negative number and passing that to close() which cannot
accept negative numbers.

Fixes Coverity CID1357152

@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-06-30 11:05:14 -04:00
Chris Michael 0eac1e4372 ecore-wl2: Fix derefence after null check
'window' here could potentially be null so we should be checking that
it is valid before trying to assign event window

Fixes Coverity CID1357148

@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-06-30 11:01:22 -04:00
Chris Michael bbdb4e5a53 ecore-wl2: Fix formatting
NB: No functional changes

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-06-29 13:08:26 -04:00
Chris Michael df65a16620 ecore-wl2: Prevent duplicated mouse up events
If you touch downs and ups about all of fingers,
that is sufficient condition to call ecore_wl_input_ungrab().
And then one mouse up event is generated from that function.
So if you set a callback about ECORE_EVENT_MOUSE_BUTTON_UP,
you can watch two mouse up events are occurred.

This is a port of the patch for Ecore_Wayland library (deprecated) to
the newer Ecore_Wl2 library.

ref D4112

@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-06-28 09:01:38 -04:00
Marcel Hollerbach 5ce3c4a049 ecore_wl2: Fix dnd breakage when focus leaves window
Summary:
If dnd in the same window is activated, the focus goes away from the
ecore_wl2 window to the dnd window, after that focus.pointer is NULL.
After focus.pointer is NULL ev->win of all the events will be 0 which
breaks dnd-motions, drop and end.

With prev_pointer beeing the last focused window, we can simply set this
window as event window. After that dnd with jesus works perfectly.

@fix

Reviewers: devilhorns

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4093
2016-06-27 11:32:18 -04:00
Marcel Hollerbach 9f2055de34 ecore_wl2_input: Fix key keyname pairs
before key and keyname could have been filled invalid, for example the
character "ö" from the german layout produced "Odiaeresis" instead of ö.

This commit also documents and refactors _ecore_wl2_input_key_translate.
I added the documentation for later use, it was hard to find out why
this was done.
The function also drops the input now if invalid control codes would
have been generated, this is equivalent to the behaviour in x. So
applications cannot get confused by codes which dont exist.
It also doesnt check if there is actual output by checking the highest
bytes anymore, it just tries to create a utf8 character. This fixes
arabic greek and korean keyboard input on wl.

If this breaks the input for some user, feel free to contact me.

This fixes T3073.
2016-06-24 13:52:09 +02:00
Derek Foreman a4f64d6fcb ecore_wl2: Fix keyboard repeat handling
Recent timer changes broke keyboard repeat under wayland - while that
will probably be fixed shortly, this should be more robust and
more accurate anyway.
2016-06-09 12:43:50 -05:00
Chris Michael 0a93ff051f ecore-wl2: Support wl_seat_listener version 4
This patch adds support for wl_seat_listener version 4 (which is used
in wayland 1.11). We do not actually make use of the seat callback for
name yet, but when the rest of multi-seat issues are sorted, we may
need this.

@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-06-07 13:36:18 -04:00
Jean-Philippe Andre a6fe58364a ecore_wl2: Fix uninitialized fields in function array
Ping @devilhorns
2016-06-07 16:15:41 +09:00
Mike Blumenkrantz 7510e42c1b elm_win: implement v2 of teamwork api using window-based display protocol
this adds support for wayland and makes teamwork integration trivial for any
application

@feature
2016-05-20 14:54:06 -04:00
Chris Michael ac4ac88a72 ecore-wl2: Minor formatting fix
NB: No functional changes, just making this readable for me

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-19 09:12:29 -04:00
Chris Michael 08d286fdaf ecore-wl2: Minor formatting fixes
NB: No function changes, just formatting

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-18 16:08:46 -04:00
Carsten Haitzler 9e04c6824f ecore wl2 - remove warning with unused goto label 2016-05-18 02:02:45 +09:00
Chris Michael f7796faa59 ecore-wl2: Remove erroneous check for wayland display
NB: No real major changes, just removal of an extra 'if' block. If
getenv of wayland display fails, we hard-code the default wayland
display name so subsequent check for 'if (n)' is erroneous

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-16 06:53:27 -04:00
Marcel Hollerbach ca55a920d9 ecore_wl2: connect to default display
Summary: if there is no env var AND no name, connection to wayland-0

Reviewers: raster, jpeg, devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D3945
2016-05-16 19:14:40 +09:00
Chris Michael fb76fe55a5 ecore-wl2: Add environment variable to optionally disable wobbly windows
As not everyone needs/wants extra eye-candy, add a check for
EFL_WAYLAND_DISABLE_WWW environment variable to be able to disable
wobbly windows support

@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-14 05:26:27 -04:00
Chris Michael 05a3cd6219 ecore-wl2: Remove need for including <sys/param.h>
As we already have MIN & MAX defined in Eina, we no longer need to
include sys/param.h header to get those defines

ref d00643fcc4

@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-10 14:26:01 -04:00
Mike Blumenkrantz 37ed59474e Revert "elm cnp/Wl: Remove duplicated data receive callback"
This reverts commit f5d10f1961.

this breaks pasting into efl applications on wayland

fix T3455
2016-05-10 13:23:05 -04:00
Mike Blumenkrantz 037a3916bc ecore-wl2: only print socket ERR messages when not attempting to reconnect
reduces spamming in logs
2016-05-06 15:43:01 -04:00
Mike Blumenkrantz 9d5caf00b6 wayland: implement session recovery
add support for reconnecting wayland applications if the compositor dies

disconnect -> destroy gl ctx + image textures -> block rendering ->
reconnect -> create gl ctx -> create image textures -> unblock rendering ->
sprinkle special seasoning on top -> just like ma used to make

 #SamsungFeatures

@feature
2016-05-05 10:49:31 -04:00
Mike Blumenkrantz fa66ce28ec ecore-wl2: null out subsurface pointers after destroying them 2016-05-05 10:49:30 -04:00
Derek Foreman 74283f076e ecore_wl2: Check return of wl_display_dispatch()
If the compositor crashes at just the right time this dispatch can fail
and result in a stuck app spinning in a tight loop.  Fix it so we do a
proper shutdown in this case.

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-03 14:24:45 -05:00
Chris Michael ebf26f2017 ecore-wl2: Formatting
Minor formatting fix. No functional changes

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-03 12:33:26 -04:00
Thiep Ha f5d10f1961 elm cnp/Wl: Remove duplicated data receive callback
If we do drag & drop and then do copy & paste, both _wl_selection_receive
and _wl_dnd_receive are called for one action (dnd or cnp). It is reduntdant.
We only need one data received callback to handle two cases dnd and cnp.
2016-05-03 17:13:47 +00:00
Thiep Ha aa0ace21d7 ecore wayland: add selection type
We have copy & paste and drag & drop selection types, but we cannot
distinguish between these two types when requesters receive data
from data ready event.
This patch adds a new enum to help selection requesters distinguish
between two selection types and have suitable actions for each type.
2016-05-03 17:13:47 +00:00
Mike Blumenkrantz 49302010f4 ecore-wl2: preserve data selection source after receiving the selection
this is copied from weston, except all the code which is supposed to be of
struct type "offer" has been renamed "source" and then reused in the same way
that weston uses "offer" in order to maximize reader confusion

deleting the source here is invalid since the selection only changes in the
corresponding callback from the wayland interface
2016-04-25 16:15:59 -04:00
Mike Blumenkrantz 7da4d8a4ae ecore-wl2: isolate regular selection requests from dnd-specific code
fix T3455
2016-04-22 11:32:08 -04:00
Chris Michael 262ac55287 ecore-wl2: Fix formatting
NB: No functional changes

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-04-22 09:36:54 -04:00
Chris Michael 98e8183b1b ecore-wl2: Port session recovery protocol to work with Ecore_Wl2
This patch ports the existing session recovery protocol from
Ecore_Wayland so that it is used inside Ecore_Wl2.

@feature

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-04-22 09:32:45 -04:00
Mike Blumenkrantz d36c931fac ecore-wl2: more dnd v3 updates
ref d34b5958051c87fe491e358b24e9f25238fda10f

 #gladthiswasabetaapi
2016-04-21 13:58:45 -04:00
Mike Blumenkrantz 74ed3fbe74 ecore-wl2: use fd handler for receiving selection data
not sure what trac ticket was referenced here, but probably the issue was
not using ecore_main_fd_handler_file_add()
2016-04-21 13:58:45 -04:00
Mike Blumenkrantz 46666de75d ecore-wl2: return some copied code back to its original state
this will make future rebases easier
2016-04-21 13:58:45 -04:00
Mike Blumenkrantz 19239b9251 ecore-wl2: update wl dnd/clipboard support to v3 of protocol
this code is mostly copied from weston:
78d4bf9a3ec990dceee23fd53962a69891352a0e
9c93179023fe894e417ccd20533d72d672d976fc

credit to Carlos Garnacho <carlosg@gnome.org> as original author

fix T3455

@feature
2016-04-21 13:58:45 -04:00
Mike Blumenkrantz 1f6746cedb ecore-wl2: correct the name and type of some function params 2016-04-21 13:58:45 -04:00
Mike Blumenkrantz ad9ae67e46 ecore-wl(2): add copyright headers (MIT) from weston
these files were created containing code which was very obviously copied from
weston. when copying code, copyright headers must also be copied in order to
comply with licenses.
2016-04-20 08:47:01 -04:00
Derek Foreman f7cbb12fd4 ecore_wl2: Add API to get dmabuf protocol object 2016-04-19 15:11:09 -04:00
Derek Foreman d6e5bdf428 ecore_wl2: Bind dmabuf global if available
Bind the dmabuf global so we can make use of it later.
2016-04-19 15:11:09 -04:00
Derek Foreman 7514d08ae6 ecore_wl2: Add generated dmabuf files
This adds the framework for the dmabuf protocol for wayland - the files
are generated with wayland-scanner.
2016-04-19 15:11:09 -04:00
Mike Blumenkrantz 5292b3de05 ecore-wl2: redo Ecore_Wl2_Event_Window_Configure entirely
this is an event representing the "new" state of the surface after a
configure event. it must contain the exact states which could potentially
have changed in the configure in order to ensure synchronization between
csd states and window size.

ecore events for xdg-shell configures must be sent only upon receiving a
configure event since states are set by the compositor and not by the client

@fix

 #hoorayforbeta
2016-04-07 14:19:25 -04:00
Mike Blumenkrantz af1c7d3407 ecore-wl2: remove maximized/fullscreen/transient from window types enum
these aren't real window types and only complicate internals/api

 #hoorayforbeta
2016-04-07 14:19:25 -04:00
Chris Michael 5713463ff3 ecore-wl2: Enable releasing keyboard, pointer, and touch if supported
This removes a fixme where we were not using wl_(pointer, keyboard,
touch)_release functions as they rely on newer versions of the wayland
protocol. As we now rely on 1.10 of wayland, these can be enabled now.

@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-04-01 12:22:02 -04:00
Chris Michael 2035931ba7 ecore-wl2: Move structures above functions
NB: This is just a cosmetic issue, no functional changes

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-04-01 07:34:43 -04:00
Mike Blumenkrantz eb1a422d63 ecore_wl2: implement www extension for client-side use
handling for global binding and signal prop

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
2016-04-01 06:49:49 -04:00
Mike Blumenkrantz f70649a13d wayland: ignore resize from no-op surface configure events, send events always
this fixes the case where a configure event with the current window geometry
would cause (inaccurate) resizes

@fix
2016-03-30 15:42:21 -04:00
Derek Foreman 9646f8e9ec ecore_wl2: Don't treat EINVAL as a recoverable condition
EINVAL is bad, we can't go on.  If we treat it like it's not a fatal
error we'll end up spinning on the fd and constantly retrying sends
on the dead wayland connection.

@fix
2016-03-10 15:55:04 -05:00
Mike Blumenkrantz 358a204491 ecore-wl2: set fd handler active flags correctly for connect/create
@fix
2016-03-10 14:23:43 -05:00
Mike Blumenkrantz f85504cd6c ecore-wl2: do not send double mouse up events during input ungrab
if the ungrab is triggered from a mouse up event, this ensures that a
mouse up will be sent from the ungrab function. continuing to send a
mouse up event in addition to this will guarantee multiple mouse events
are emitted

@fix
2016-02-17 13:16:04 -05:00
Derek Foreman 943f2df006 ecore_drm/ecore_wl2: logging: remove errant usage of %m
Summary:
printf %m stringifies and prints errno.  I've tried to remove its use
anywhere that the immediately preceding function might not set errno
or is a complicated function for which knowing errno doesn't really
give any useful information.

I've left a few of the drmMode calls because they're just wrappers
around ioctl, which legitimately sets errno.

@fix

Reviewers: zmike, devilhorns

Reviewed By: zmike, devilhorns

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3572
2016-01-14 13:06:02 -05:00
Marcel Hollerbach 63a410667a ecore_wl2: fix key down event called to often
if many events are coming in, a release event can be skipped. if this happens
the timer continues with the new keycode. so if a new key pressed event
enter checks for the old timer and delete the timer if there is one.

If the timer kicks in and emits additional key down events dont call the
callback which gets called by wl, and emit the signal directly.
2016-01-13 19:40:44 +01:00
Chris Michael 5499a53c75 ecore-wl2: API expose ecore_wl2_input_grab function
This input_grab function should have been exposed via EAPI for use in
enlightenment, but was missed before the push

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-01-07 11:57:07 -05:00
Chris Michael 67044ae214 ecore-wl2: Mark API as Beta before 1.17 gets released
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-01-06 12:16:33 -05:00
Stefan Schmidt 6451c174db ecore_wl2: add since tag to all new symbols in 1.17 missing it 2016-01-06 15:08:13 +01:00
Chris Michael 6967aa1457 ecore-wl2: Fix support for nested compositors
When trying to create nested compositors, we were failing here due to
trying to read the WAYLAND_DISPLAY env variable and find an existing
server display to match. In order for nested compositors to function,
we cannot reuse that environment variable for server display hash.

@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-01-05 13:49:51 -05:00
Chris Michael 6afbd272bd ecore-wl2: Remove blank line
NB: No functional changes

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-01-05 13:49:51 -05:00
Chris Michael e4dd691432 ecore-wl2: Remove extra blank line
NB: No functional changes

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-01-04 11:06:21 -05:00
Chris Michael d91e403a98 ecore-wl2: Fix MIN() macro comparing int vs unsigned int
@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2015-12-28 09:15:01 -05:00
Derek Foreman ddae80af1d wayland: use wl_surface.damage_buffer if available
Summary:
wl_surface.damage_buffer() takes surface damage in buffer co-ordinates.

Right now since we don't use wayland's scaling, transforms, or viewports
it's exactly the same as wl_surface.damage().  In the future if we start
using those features it's much easier to do so with damage_buffer().

Reviewers: zmike, devilhorns

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3457
2015-12-28 09:09:04 -05:00
Tom Hacohen 374b795683 Ecore wl2: Limit scope of variable (fix shadow warning). 2015-12-21 11:15:24 +00:00
Mike Blumenkrantz a3dcf7a0ba ecore-wl2: do not flush wl_display during cleanup
this serves no functional purpose and deadlocks compositors
2015-12-17 13:11:46 -05:00
Chris Michael 8c85a89303 ecore-wl2: Add new event for sync done
This removes the usage of ecore_main_loop_iterate inside of the
display_connect function. It creates a new event type for when display
sync is done, this was we can defer surface creation and EE showing
until the compositor has had a chance to synchronize globals. We need
this for Enlightenment so that it does not try to create error dialogs
too early and thus crash due to not having sync'd globals yet

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-11 11:24:32 -05:00
Mike Blumenkrantz 0d1179abe3 ecore-wl2: ensure client display hash is freed and set NULL on connect failure 2015-12-10 11:19:08 -05:00
Chris Michael e50d228882 ecore-wl2: rewrite iconified set function for consistency
* santize boolean params
* enforce window state flag setting

@fix

ref T2919

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-08 12:00:13 -05:00
Chris Michael 880a76a75b ecore-wl2: rewrite maximize/fullscreen set functions for consistency
* sanitize boolean params
* enforce window state flag setting
* use window flag instead of window type for state

@fix

ref T2919

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-07 15:36:42 -05:00
Chris Michael 7469261d2f ecore-wl2: Fix issue of cleanup function always removing from client
display hash

As the cleanup function is a generic helper to cleanup things in the
Ecore_Wl2_Display structure, we cannot always just explicitly the
display from the client_displays hash.

The removal from the appropriate hashes should be done by the calling
function(s) (ecore_wl2_display_disconnect for clients, and
ecore_wl2_display_destroy for servers)

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-07 15:36:42 -05:00
Chris Michael 33d0c8cdcf ecore-wl2: Fix formatting and remove extra blank line
NB: no functional changes

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-07 15:36:42 -05:00
Chris Michael 8287202c43 ecore-wl2: Don't free display structure during display cleanup function
Due to reference caching, we cannot free the display structure here
yet. During calls to ecore_wl2_display_destroy (or others), if the
number of references reaches zero, then we end up calling
wl_display_destroy (or equivelant). If we free our display structure
during cleanup function, then calls to wl_display_destroy will cause a
segfault as our display->wayland_display has already been freed from
the structure

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-07 10:00:23 -05:00
Mike Blumenkrantz d2a7882b73 ecore-wl2: fix use after free and leak when deleting display object
ref T2919
2015-12-05 13:06:03 -05:00
Mike Blumenkrantz 8fb4840479 ecore-wl2: add function for getting display from window 2015-12-05 13:05:15 -05:00
Mike Blumenkrantz f50a434bd1 ecore-wl2: apply same deferred shell surface creation as ecore-wayland
new wheel meets old wheel.

ref 265ad8b5d0
2015-12-04 19:06:51 -05:00
Mike Blumenkrantz 022dda2f68 ecore-wl2: handle null global has in ecore_wl2_display_globals_get() 2015-12-04 19:06:48 -05:00
Chris Michael 298d66377e ecore-wl2: Implement function pointer for configure acknowledge
We need a way to store the configure serial, and make the
xdg_surface_ack_configure callback be callable by Ecore_Evas at the
appropriate time. This fixes an issue where previously we were
(potentially) sending a configure acknowledgment while not applying
the configure due to deferred rendering.

@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2015-12-04 14:12:06 -05:00
Chris Michael b566360de2 ecore-wl2: Always create cursor surface for pointer
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:07:45 -05:00
Chris Michael f0342a5ffe ecore-wl2: Add start of code to support wl_keyboards
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:05:49 -05:00
Chris Michael 5869b4afa1 ecore-wl2: Add private Ecore_Wl2_Keyboard structure
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:05:49 -05:00
Chris Michael 2e00a5ebbd ecore-wl2: Remove unnecessary use of MIN macro
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:05:49 -05:00
Chris Michael ba10e3547c ecore-wl2: Start on implementing support for multi-seat
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:05:01 -05:00
Chris Michael 2aecd1ec48 ecore-wl2: Cancel data callback if we have a fatal error
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:05:01 -05:00
Chris Michael e9fab75178 ecore-wl2: Remove setting custom wl_log handler
Seems EINA_LOG_DOM has a problem printing out wayland protocol logs,
so allow wayland to handle that itself.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:05:01 -05:00
Chris Michael 3201d67183 ecore-wl2: Fix maximized & fullscreen functions to use window flag
Rather than rely on window->type for maximized & fullscreen, use the
cooresponding window flag

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:05:01 -05:00
Chris Michael 14229e0709 ecore-wl2: Add missing @since for all existing doxygen
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:03:35 -05:00
Chris Michael 684429099e ecore-wl2: Change name of ecore_wl2_window_class_name_set function
It makes more sense to have this function be called
ecore_wl2_window_class_set.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:03:35 -05:00
Chris Michael de08c10253 ecore-wl2: Add missing EINA_UNUSED for function parameters
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:03:35 -05:00
Chris Michael 93afb3ed07 ecore-wl2: Add function to get a windows rotation
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:03:35 -05:00
Chris Michael 9aaada21c3 ecore-wl2: Fix issue of not unsetting move mouse pointer
Summary: When we finish moving a window, previously the mouse cursor
would never get unset from the hand cursor. This is due to the way
that grabs work in wayland, and not ever getting an event notification
for the move being completed. This patch works around that issue

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:03:35 -05:00
Chris Michael 31dac90f9d ecore-wl2: Fix maximized and fullscreen functions to restore geometry
Previously, when we maximized or fullscreen a window, we were sending
the improper geometry to the window_configure callback

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:03:35 -05:00
Chris Michael 0d7305ae95 ecore-wl2: Add doxygen for more ecore_wl2_window functions
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:03:35 -05:00
Chris Michael cb04220ca3 ecore-wl2: Add support for handling Fatal Errors
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:03:35 -05:00
Chris Michael e839035bfa ecore-wl2: Fix formatting
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:03:35 -05:00
Chris Michael d30e9c6f97 ecore-wl2: Add note about calling ecore_wl2_display_globals_get
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:03:35 -05:00
Chris Michael 8196913b15 ecore-wl2: Add caching of server displays and fix issue of client
connecting to same server pid

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:03:35 -05:00
Chris Michael ad5f93b521 ecore-wl2: Client connections do not need to listen for a write event
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:03:35 -05:00
Chris Michael be32567dfb ecore-wl2: Also listen for write events when creating a compositor
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:03:35 -05:00
Chris Michael 59d1491929 ecore-wl2: Fix event processing for client connections
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:03:35 -05:00
Chris Michael 5a13b093b5 ecore-wl2: Connect to proper name during ecore_wl2_display_connect
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:03:35 -05:00
Chris Michael 482668451d ecore-wl2: Add safety trap for null compositor
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:03:35 -05:00
Chris Michael ede679b7bd ecore-wl2: Don't re-add existing globals
If we already have seen this global, and it is in the globals hash,
then don't re-add it and just jump straight to sending the event

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:03:35 -05:00
Chris Michael 8f338af511 ecore-wl2: Remove all code relating to custom window animators
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:03:35 -05:00
Chris Michael 02afb0dc28 ecore-wl2: Rename anim_listener to avoid confusion with ecore_wayland
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 652fa87169 ecore-wl2: Remove duplicate window_find API function
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael dbb862299b ecore-wl2: Re-order window API function to be with window group
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 0272154007 ecore-wl2: Add doxygen group for Subsurface functions
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 9a871106db ecore-wl2: Fix typo in doxy group definition for Dnd Group
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 57e19e1fd8 ecore-wl2: Re-order API functions for input to be located next to the
group definition

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 7fb55f5789 ecore-wl2: Add doxy group for output functions
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 24aa08ede7 ecore-wl2: Add API function to get the DPI of a given output
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 47cd4d4168 ecore-wl2: Fix issue of compositors not flushing clients properly
Summary: When we use ecore_wl2 for creating compositors (E), we need
to flush clients before we dispatch events on the wl loop, so add a
prepare_callback for the fd handlers and flush clients there.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 6d78355ccc ecore-wl2: Add API function to return a wl_seat from an Ecore_Wl2_Input
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 055b398e8d ecore-wl2: Implement ecore_animators for windows instead of using a
custom animator

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 0f49297c18 ecore-wl2: Fix dnd to function when source window and target window
are same

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 8683c6ecf6 ecore-wl2: Implement reference counting for client connected displays
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 3dc45d4945 ecore-wl2: Cache client displays and reuse them to reduce memory usage
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael acf97100db ecore-wl2: Reset Ecore_Wl2 events to 0 on shutdown
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael fbfe60751d ecore-wl2: Set WAYLAND_DISPLAY env variable when we create a display
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 68527379e2 ecore-wl2: Don't reset window->input on keyboard or pointer leave events
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael b7804b6877 ecore-wl2: Don't check twice if a key repeats and also fix issue of
repeating keys getting delayed

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 89c973eba8 ecore-wl2: Adjust keyboard repeat delay and rate
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Derek Foreman 497b9c045e ecore-wl2: cache the registry
wl_get_registry() returns a new object that we must destroy, so
we should cache one at connect and never call that again.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael b89c45dbf9 ecore-wl2: Add support for idle_enterer
Summary: This fixes an issue where scrolling mouse wheel would not
actually perform any scroll until another event was received.

NB: Unsure if we need this for "server" connections yet

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael c5dba8cd32 ecore-wl2: Free internal mouse down info when we delete an input
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 3e1b71b3d8 ecore-wl2: Add API function to set opaque region of a subsurface
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 475ade8bf8 ecore-wl2: Add API function to set sync/desync on a subsurface
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael d50af2db70 ecore-wl2: Add API function to place a subsurface below a surface
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 44b2153a42 ecore-wl2: Add API function to place a subsurface above a surface
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 25505626ad ecore-wl2: Add API function to get the position of a subsurface
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 0b8d2f1f24 ecore-wl2: Add API function to set the position of a subsurface
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 32bb1237c6 ecore-wl2: Add API function to return the wl_surface of a subsurface
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael ed8287bdba ecore-wl2: Add API function to delete a subsurface
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 6c16d7967b ecore-wl2: Use proper wayland function to get display registry
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 434fbd6fb9 ecore-wl2: Start on preliminary subsurface support
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael d4c312ecce ecore-wl2: Cleanup wayland objects on display cleanup
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 9a9d120c44 ecore-wl2: Cleanup inputs on display disconnect/destroy
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 10efbbd416 ecore-wl2: Add subsurface structure type
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 98f0a245ce ecore-wl2: Add subsurface protocol files to support subsurfaces
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 76da2e3063 ecore-wl2: Add doxygen for ecore_wl2_window functions
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael d22b6c581c ecore-wl2: Add support for input region setting for an Ecore_Wl2_Window
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 35710fa919 ecore-wl2: Add API function to return the registry of a display
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 206914aa32 ecore-wl2: Add API funtion declarations need for Elementary
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 518b97cc1c ecore-wl2: Add API function to find a window given a window id
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael f3e5800d58 ecore-wl2: Add API function to issue an ungrab on an input
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 8df60cef9e ecore-wl2: Check if a window is transparent or alpha when setting
opaque region

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael a084891013 ecore-wl2: Cleanup dnd drag and selection sources when we delete an
input

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael a4b28e0375 ecore-wl2: Send window configure event when we un-maximize/fullscreen
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 63004b492c ecore-wl2: Add a LAST member for enum of window type
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 1a38e1a9f4 ecore-wl2: Don't use bitfields for public structure
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00
Chris Michael 41f6e1f505 ecore-wl2: Add display to global event structure
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-03 12:02:40 -05:00