Commit Graph

529 Commits

Author SHA1 Message Date
Derek Foreman cba292d9a9 Don't send keyboard leaves to unmapped wayland surfaces
There are actually toolkits that create surfaces, do nothing with them,
and destroy them.  Sending keyboard leave events for this causes problems.

Fixes a bug in handling of some GTK popups.
2016-07-15 09:59:55 -04:00
Mike Blumenkrantz 7871d58ce3 add separate mouse in/out handlers for internal wins
internal wayland windows are windows with ssd, meaning they can only receive
pointer events on the contents of the window and not the entire window including
decoration regions

ref T3819
2016-07-15 09:59:54 -04:00
Mike Blumenkrantz 4c64703f74 only block mouse-out callback for wl action clients if the mouse is grabbed 2016-06-03 11:33:03 -04:00
Chris Michael 1d5a19a54c stop filling logs with buffer transform/scale spam
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-06-03 11:31:16 -04:00
Mike Blumenkrantz 93a2233f28 use window id for internal window pixmaps again on wayland
this was breaking internal windows when more than one was open, and
especially if any were open which had a parent-child relationship, by
using the same id for all internal window pixmaps
2016-05-12 12:43:32 -04:00
Mike Blumenkrantz 1629ea5c63 set E_Client->override flag for internal wins as needed 2016-05-12 12:43:28 -04:00
Mike Blumenkrantz 68f4a7b75e remove some cruft from _e_comp_wl_client_cb_new() 2016-05-12 12:43:21 -04:00
Mike Blumenkrantz d54f51af57 ensure int64_t is used in all cases for wl pixmap ids 2016-05-12 12:43:18 -04:00
Mike Blumenkrantz c5c115c530 only load wayland-specific modules on startup if they have been built 2016-05-12 12:42:39 -04:00
Mike Blumenkrantz 961d3177da block keyboard sending for wl clients if a compositor grab is active
fix T3599
2016-05-12 12:42:35 -04:00
Mike Blumenkrantz b1e4f3d1da flag wl surfaces as internal during create() based on pid matching
fix T3596
2016-05-12 12:41:40 -04:00
Mike Blumenkrantz d21b44b019 ensure lifetime for wl client focus timer
fixes some focus-out crashing
2016-05-12 12:34:22 -04:00
Mike Blumenkrantz d525ba8589 directly load extra wl modules during compositor init
speed++++++++
2016-05-12 12:34:09 -04:00
Mike Blumenkrantz 4750aa6d77 move wayland surface E_Client del check to a place where it's more useful
completely breaks wayland on first commit? off to an auspicious start!

ref d9679f765f
2016-04-26 10:57:00 -04:00
Derek Foreman 5d1dfdf33e wayland: Fix crash when attempting to create surfaces for deleted clients
Internal clients can be deleted by keybind before the surface create
callback fires resulting in a NULL pointer dereference.
2016-04-26 10:57:00 -04:00
Mike Blumenkrantz 2e52e59f4a ensure that wl clients do not run extra render on hide twice
fixes crash when applications crash
2016-04-26 10:56:59 -04:00
Mike Blumenkrantz 0565f5aa5b 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-26 10:56:58 -04:00
Mike Blumenkrantz 46cbc02939 reject xwayland clients in wl client resize handlers
fix T3461
2016-04-26 10:56:58 -04:00
Mike Blumenkrantz 6f1c09689d don't send duplicate configure to wayland clients during unfullscreen
this causes unnecessary client-side resizing
2016-04-26 09:59:16 -04:00
Derek Foreman adaea026a8 Remove unwanted debug detritus from last commit
#Oops

Reviewed-by: Mike Blumenkrantz <zmike@osg.samsung.com>
2016-04-26 09:59:16 -04:00
Derek Foreman 7060ce6567 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-26 09:59:16 -04:00
Mike Blumenkrantz eef14b3619 do not send shell configures for deleted wl clients 2016-04-26 09:56:39 -04:00
Mike Blumenkrantz 5ed82b8e38 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-26 09:56:35 -04:00
Mike Blumenkrantz f65a5bb3bb wl popup surfaces should not receive focus on show if parent is not focused
fix T3339 harder
2016-04-26 09:55:37 -04:00
Mike Blumenkrantz 350dcf13f0 remove video child references from wl compositor
this is an x11-only thing
2016-04-26 09:55:25 -04:00
Mike Blumenkrantz add8af06a9 delete internal wayland elm windows in wl client delete request callback
fix T2874
2016-04-26 09:55:06 -04:00
Mike Blumenkrantz bf6ba1b003 enforce wl xdg popup stacking relative to parent stacking 2016-04-26 09:50:46 -04:00
Mike Blumenkrantz 165f470d7c force keyboard modifier update on wl client focus-in
ensure that clients always receive up-to-date modifiers when they get focus
2016-04-26 09:49:38 -04:00
Mike Blumenkrantz d1568b832f 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-04-26 09:48:29 -04:00
Mike Blumenkrantz 845cabf732 send resize edges to wl clients on resize start and end 2016-04-26 09:47:41 -04:00
Mike Blumenkrantz 5e27e5f302 ignore xwayland clients in wl client delete request callback
this breaks the compositor!
2016-04-26 09:46:12 -04:00
Mike Blumenkrantz d6e31b30fe 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-04-26 09:45:33 -04:00
Mike Blumenkrantz 695a3a8d17 adjust wayland client coords by window_geometry during first surface commit
fixes first window positioning
2016-04-26 09:44:20 -04:00
Mike Blumenkrantz d10a03fcb2 unify client post_updates management code into single function 2016-04-26 09:44:00 -04:00
Mike Blumenkrantz 5bfcd6dd98 always send wl key releases if surface still exists
fixes stuck keys for wl_clients with multiple surfaces
2016-04-26 09:43:29 -04:00
Mike Blumenkrantz 589c159831 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-04-26 09:43:25 -04:00
Derek Foreman f6c71b781d Free pixel data after taking a wayland screen shot 2016-04-26 09:42:52 -04:00
Mike Blumenkrantz 67153a06a2 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-04-26 09:42:51 -04:00
Mike Blumenkrantz 5d64676bd0 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-04-26 09:42:51 -04:00
Derek Foreman ba88768344 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-04-26 09:42:51 -04:00
Derek Foreman 20303989de Re-enable window close animations for wayland
These should work properly with the new buffer management code.
2016-03-09 12:14:34 -05:00
Derek Foreman ee43c83c7d 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-09 12:14:29 -05:00
Derek Foreman 7aef5e74fd 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-09 12:14:23 -05:00
Derek Foreman 74ce8dd7be 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-09 12:14:08 -05:00
Mike Blumenkrantz b1a5eeeb0c remove some unused variables 2016-03-09 12:09:50 -05:00
Mike Blumenkrantz 2e692ace58 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-03-09 12:09:46 -05:00
Derek Foreman 5143ed69de 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-03-09 12:09:15 -05:00
Derek Foreman c7027d4f44 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-03-09 12:08:37 -05:00
Derek Foreman c9b720cccd 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-03-09 12:08:33 -05:00
Derek Foreman f8be94f19e 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-03-09 12:08:21 -05:00