Commit Graph

535 Commits

Author SHA1 Message Date
Mike Blumenkrantz 6aee63d1dc redo wl (xdg)shell surface ping
- remove (wrong) global variables which tracked client-specific resources
- start ping upon creating a shell surface
- track client-specific shell resources on a per-client basis
2016-04-18 15:37:22 -04:00
Mike Blumenkrantz 40af8d5193 reject xwayland clients in wl client resize handlers
fix T3461
2016-04-18 13:15:09 -04:00
Mike Blumenkrantz 005ad4e986 fake client-side geometry during wl (un)maximize interception
fixes internal window maximize
2016-04-11 13:41:19 -04:00
Mike Blumenkrantz 63af4ea865 buffer server-side (un)maximize commands to ensure synchronization in wayland
maximize is client-initiated and compositor-enforced in wayland, meaning that a
maximize should only be acted upon in the compositor after the client has
acknowledged that it has transitioned into the maximized state (likely removing
part of its csd region) and has resized itself to match the expected maximize
size

fix T3297
2016-04-08 16:08:32 -04:00
Mike Blumenkrantz b0f2443042 improve behavior of wl client buffered state changes during commits
apply e_config maximize policy for buffered (un)maximize, unset buffered states
after applying them
2016-04-08 16:05:00 -04:00
Mike Blumenkrantz 9578ae615f do not force wl client state update (configure) on (un)maximize done cb
this is spurious
2016-04-08 16:04:19 -04:00
Mike Blumenkrantz b17999de8d do not sent wl *shell configures from resize callback during maximize
this is spurious
2016-04-08 16:03:28 -04:00
Mike Blumenkrantz 9516031e93 only apply buffered wl client maximize during configure if client is not maximized
fixes directional maximize
2016-04-07 14:00:25 -04:00
Mike Blumenkrantz 657bc713c7 don't send duplicate configure to wayland clients during unfullscreen
this causes unnecessary client-side resizing
2016-04-07 13:56:03 -04:00
Derek Foreman b8ab7b0738 Remove unwanted debug detritus from last commit
#Oops

Reviewed-by: Mike Blumenkrantz <zmike@osg.samsung.com>
2016-04-07 13:29:58 -04:00
Derek Foreman 68587276cf Clean up some header inclusion
Including certain headers in the wrong order can cause problems if
we're configured to use beta api (right now wayland forces this).

In most cases we should just be including e.h and not the individual
EFL headers anyway.  This fixes some of that.

fix T3426, T3428
2016-04-07 13:14:43 -04:00
Mike Blumenkrantz 7e3c2b08ec move buffered maximize/fullscreen for wl clients to occur before csd update
this ensures that all such operations calculate based on the correct csd state
2016-04-06 16:42:10 -04:00
Mike Blumenkrantz 992e04feb2 wayland client maximize/fullscreen cleanups
ref da74e690f0
2016-04-05 16:54:04 -04:00
Mike Blumenkrantz da74e690f0 redo xdg shell to enforce double buffering of client-side configure serials
xdg shell configure states (maximize, fullscreen) return a client ack when the
client has applied the state. the ack, followed by the next surface commit,
indicates that the surface is ready to be transitioned into the configured state
2016-04-05 15:05:10 -04:00
Mike Blumenkrantz d50a20f812 do not send shell configures for deleted wl clients 2016-04-05 15:04:35 -04:00
Mike Blumenkrantz a99d505771 set WAYLAND_DEBUG=0 during wl compositor init
ensures that debug logs won't get both compositor and client output,
making the log impossible to read
2016-04-05 15:03:26 -04:00
Mike Blumenkrantz e4960ad652 set ELM_ACCEL=gl upon successfully creating a gl wayland compositor
...successfully

ref 4aecb7ad14
2016-04-04 16:06:52 -04:00
Mike Blumenkrantz ed6448eb21 send fake www data during maximize 2016-04-04 14:03:17 -04:00
Mike Blumenkrantz 687b5fb6b6 set maximizing flag during maximize resizing for wl clients
a helpful indicator for when to avoid potentially leaking positioning info
2016-04-04 14:02:39 -04:00
Mike Blumenkrantz 3f7e6dc359 wl popup surfaces should not receive focus on show if parent is not focused
fix T3339 harder
2016-04-04 12:51:29 -04:00
Mike Blumenkrantz b9b9ed68b0 remove video child references from wl compositor
this is an x11-only thing
2016-04-04 12:51:20 -04:00
Mike Blumenkrantz dead7646d4 delete internal wayland elm windows in wl client delete request callback
fix T2874
2016-04-01 16:48:50 -04:00
Mike Blumenkrantz 4aecb7ad14 set ELM_ACCEL=gl upon successfully creating a gl wayland compositor 2016-04-01 15:14:46 -04:00
Mike Blumenkrantz c70054174e implement www wayland extension handling for clients
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
2016-04-01 06:29:49 -04:00
Mike Blumenkrantz 607975ccc0 enforce wl xdg popup stacking relative to parent stacking 2016-03-31 14:05:47 -04:00
Mike Blumenkrantz 772163fe3e force keyboard modifier update on wl client focus-in
ensure that clients always receive up-to-date modifiers when they get focus
2016-03-31 11:21:23 -04:00
Mike Blumenkrantz d7f7eb9448 redo wayland client unignore mechanism
wayland clients were previously set as ignored until they obtained
a shell surface in order to avoid early execution of things like placement.

this had no effect.

the ignore must last until the first commit, at which point surfaces have been
sized and can be placed accurately without needing to move the surface around
a lot of times due to resize/frame adjust/birthdays
2016-03-24 16:43:32 -04:00
Marcel Hollerbach a7c659e258 wl: remove useless calls to e_comp_wl_input_keymap_set
those calls are not needed anymore since they will be overriden by e_xkb
init which takes place a few calls later
2016-03-24 20:54:03 +01:00
Marcel Hollerbach ab4e4e17cb e_comp_wl: allow variants and options for keyboard settings
Also set options and variants to the rule names struct.
There is no need to use strdup here the values are just freed in the
end.
2016-03-24 20:54:03 +01:00
Mike Blumenkrantz 5d27befe44 send resize edges to wl clients on resize start and end 2016-03-23 16:03:33 -04:00
Mike Blumenkrantz a658c785c3 ignore xwayland clients in wl client delete request callback
this breaks the compositor!
2016-03-21 12:13:27 -04:00
Mike Blumenkrantz 952d2c1d25 hide wl clients before deleting them when surface is destroyed
clients without hide animations will fail to run cleanup operations during
hide if they are not marked as deleted
2016-03-17 14:09:08 -04:00
Mike Blumenkrantz d08abd43fd adjust wayland client coords by window_geometry during first surface commit
fixes first window positioning
2016-03-15 16:12:05 -04:00
Mike Blumenkrantz 885d24eeab unify client post_updates management code into single function 2016-03-14 14:27:15 -04:00
Mike Blumenkrantz 1a91486083 always send wl key releases if surface still exists
fixes stuck keys for wl_clients with multiple surfaces
2016-03-12 12:40:39 -05:00
Mike Blumenkrantz b2107ae2b0 remove maximize_pre flag from wl client comp_data
this breaks modification of maximized size for surfaces as well as animations

fix T3297

partially reverts 0321fd690e
2016-03-12 11:18:10 -05:00
Mike Blumenkrantz 57f62675cc make wayland client keyboard focus list pruning more robust
this should handle all possible cases where focused keyboard resources
need to be removed from the global list
2016-03-10 15:18:47 -05:00
Mike Blumenkrantz f91ed81cd1 run focus-out and mouse-out wayland client callbacks for deleted clients
this fixes a number of issues caused by clients not cleaning up on deletion

ref 3e9029ea08

 #YouAlwaysRememberTheFirstTimeYouBorkedTheCompositor
2016-03-10 14:47:41 -05:00
Derek Foreman ff70943f76 Fix wayland hide for internal windows
We need to make sure we drop reference on all exit paths through the
hide callback - somehow this only seemed to break internal windows.

ref 65166c5a36
2016-03-10 12:19:32 -05:00
Derek Foreman e4490c4bf6 Re-enable window close animations for wayland
These should work properly with the new buffer management code.
2016-03-08 12:46:32 -05:00
Derek Foreman 36586fbf9c Remove wayland buffer reference
This code is similar to code in weston, but doesn't really work properly
for us in E, since this can blow up buffers behind the async renderer's
back.

The rest of the reference code has been pushed into e_pixmap, so we can
kill this all now.
2016-03-08 12:46:32 -05:00
Derek Foreman dfc7c26ce4 Rework wayland buffer handling
We need to keep wayland buffers around even if they'll never be written
to again.  This is part of Buffer_Reference's task in weston, but we
already have our pixmap abstraction which can serve mostly the same
purpose.

Remove the "buffer reference" stuff from e_pixmap and replace it with a
kept buffer for the last commit.

Add shared memory pool references to keep pools from going away on us.
2016-03-08 12:46:32 -05:00
Derek Foreman 65166c5a36 Take an extra reference on wayland clients
We need to make sure wayland clients aren't deleted while the scene
graph has their data pointers, so we take an extra reference when creating
them.

We drop that reference by clearing the client's image data and putting it
in the render post_updates list.
2016-03-08 12:46:32 -05:00
Mike Blumenkrantz 8c969b5f5f remove some unused variables 2016-02-25 13:37:52 -05:00
Mike Blumenkrantz 6fe6fba44e redo wayland pixmap ids to use monotonic decreasing ints with no collisions
using pointers for this turned out to have some corner case collisions, so
now just use something totally unrelated to the surface to ensure uniqueness
2016-02-25 11:16:09 -05:00
Derek Foreman 625e417bb2 Remove wayland focus timer in delete callback
If we don't remove it now it could fire later when the structures
it depends on are already freed.
2016-02-18 12:40:52 -06:00
Derek Foreman b30c96e142 Use eina_list_merge instead of eina_list_move for wayland lists
We should use eina_list_merge for concatenating lists instead of
eina_list_move.
2016-02-18 12:31:31 -06:00
Derek Foreman 6a65d2a546 Protect the wayland frame callback list from corruption
The resource destroy callback for frame callbacks will walk the frame list
to remove itself.  When freeing that list we need to make sure the
resource destroy callback doesn't see the same list we're walking and
corrupt it.
2016-02-18 12:31:31 -06:00
Derek Foreman c373331f94 Remove wayland frame callbacks from subsurface cache on destruction
There are 3 places a frame callback could be hiding.  frames list,
pending.frames list, or subsurface cached.frames list.  We weren't
clearing it from the subsurface cache on destruction.
2016-02-18 11:51:10 -06:00
Derek Foreman 3e9029ea08 Ensure wayland clients haven't been deleted when processing callbacks
Summary:
It's apparently possible to trigger at least some of these by interacting
with a client as it's closing, so add a bunch of checks.

Reviewers: zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D3699
2016-02-16 16:41:03 -05:00