Commit Graph

337 Commits

Author SHA1 Message Date
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