Commit Graph

266 Commits

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