Commit Graph

11295 Commits

Author SHA1 Message Date
Chris Michael 0d2b6b047c port enlightenment to use drm2
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-27 09:53:41 -04:00
Chris Michael c21bced4f8 change 'if' clause to make gcc-6 happy
Gcc 6 was spitting a nasty little compiler warning here:

src/bin/e_fm.c: In function ‘e_fm2_icon_geometry_get’:
src/bin/e_fm.c:2354:4: warning: this ‘if’ clause does not guard...
[-Wmisleading-indentation]
if (x) *x = 0; if (y) *y = 0; if (w) *w = 0; if (h) *h = 0;
^~
src/bin/e_fm.c:2354:19: note: ...this statement, but the
latter is misleadingly indented as if it is guarded by the ‘if’
if (x) *x = 0; if (y) *y = 0; if (w) *w = 0; if (h) *h = 0;

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-24 15:48:18 -04:00
Mike Blumenkrantz c58a3919e9 update client remember on opacity change
fix T3681
2016-05-24 11:52:31 -04:00
Davide Andreoli 107872af91 enlightenment_open: correctly return the exist status code of the executed command
@fix and close T3555
2016-05-20 19:25:42 +02:00
Derek Foreman e5e875ded8 Fix dmabuf breakage of non wayland builds.
#IWearTheHatOfShame
2016-05-19 10:23:22 -05:00
Chris Michael bd1847162e remove unused variables in _dmabuf_add function
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-19 08:57:43 -04:00
Mike Blumenkrantz c53a6efc8d add client util function for detecting popups, block popups in ibar/tasks
mainly a wayland issue where popup menus would cause the tasks gadget to
grow and shrink uncontrollably
2016-05-18 14:43:21 -04:00
Derek Foreman 402c56e1f2 clean up warnings in dmabuf code 2016-05-18 12:34:23 -05:00
Derek Foreman 2d1802375d Add DMABuf support for wayland
This adds compositor handling of DMABuf buffers.  DMAbuf capabilities
are advertised for the drm back-ends, and DMAbuf buffers are handled
as native surfaces.
2016-05-18 12:05:34 -05:00
Derek Foreman 6b0c55dd96 Track parent compositor dmabuf capabilities on wayland on wayland
When running as a wayland compositor connected to another wayland
compositor, we don't want to advertise dmabuf capabilities if the
parent compositor doesn't support them.

If it does, we'll want to proxy dmabuf requests to it instead of handling
them ourselves.

Expose this as new bools in e_comp_wl.
2016-05-18 12:05:34 -05:00
Derek Foreman f6d99980ba Remove GL presence test from native surface set on dirty objects
This test has been pushed into e_comp_object_native_surface_set() and
will be done as appropriate.

Upcoming wayland DMAbuf buffers need native surfaces even if GL isn't
present.
2016-05-18 12:05:34 -05:00
Derek Foreman 50a3f84191 Move the test for resetting no native surface to after caps checks
This is supposed to be functionally equivalent, but is a little tricky to
prove.

The benefit of this is a simplification to the callers, which no longer
have to consider gl capabilities in the call, as that is now tested for
internally.
2016-05-18 12:05:33 -05:00
Derek Foreman 57f0150b73 Break native surface test criteria into explicit wayland and X cases
Until now it's been reasonable to consider these together as the
criteria have been similar.  With the upcoming introduction of wayland
DMAbuf buffers, they diverge.

We don't need to test for GL in the wayland case because we don't
advertise GL capabilities to clients when we don't support it, so they
can't create GL buffers unless we can display them.
2016-05-18 12:05:33 -05:00
Derek Foreman 1774b59923 Add e_pixmap API for testing if a pixmap is a native surface
DMAbuf for wayland will complicate determining whether a pixmap can use
a native surface or not, so we add an API here to check this.

Note that this doesn't take compositor capabilities into account - for
example, X pixmaps need GL enabled to use native surfaces.  This is
already tested elsewhere.
2016-05-18 12:05:33 -05:00
Mike Blumenkrantz 91d16899b1 fix e_place_zone_region_smart_cleanup()
this function was adding the same client multiple times, failing to cleanup
windows effectively, and misusing the skiplist functionality of e_place functions

fix T3654
2016-05-18 12:32:27 -04:00
Carsten Haitzler 62bcd72eef e - suspend.hibernat intelligently - dont account for ac power
this means only lid/screen status affects intelligent suspending. it's
not what people expect and doesnt rely on ecore getting mains power
stuff right too.
2016-05-17 00:33:47 +09:00
Chris Michael b5e47665bb stop filling logs with buffer transform/scale spam
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-15 10:47:53 -04:00
Carsten Haitzler 59e2eb40f8 warnings - silence some theoreitcal wranings in build
a bunch of "potentially uninitialized variable" warnings fixed.
2016-05-15 23:14:15 +09:00
Mike Blumenkrantz ec9a888fcf more tweaks for manual window placement in client eval 2016-05-13 11:38:17 -04:00
Mike Blumenkrantz 685aafcd41 prevent double emission of E_EVENT_CLIENT_SHOW 2016-05-13 11:28:27 -04:00
Mike Blumenkrantz 030d083c73 ensure that client eval correctly handles retries on visibility-pending clients
ref 2854352bc8
fix T3636
2016-05-13 11:24:08 -04:00
Marcel Hollerbach ce6d2285f1 e_xkb: split up e_xkb_update
before the function had the semantics that -1 flushes the set of layouts
back to the displayservice. Now its done with e_xkb_reconfig.
2016-05-12 20:54:22 +02:00
Mike Blumenkrantz 189dce81f9 force cursor placement to obey useful zone geometry 2016-05-12 12:10:48 -04:00
Mike Blumenkrantz 2854352bc8 adjust some client eval parts to make manual placement work again
activating the window_move action doesn't require the client to successfully
be shown, and failing this check would cause the window_move action to be
deleted until the next restart
2016-05-12 12:05:59 -04:00
Mike Blumenkrantz 55c83134c1 use parent windows for x11 binding grabs
ensure that internal windows do not receive mouse events before the compositor

fix T3347
2016-05-12 11:23:20 -04:00
Mike Blumenkrantz 60da58d8ad only check pixmap argb state for non-X11 clients
non-argb windows can have argb pixmaps.

ref 6d397e313b
2016-05-11 18:34:49 -04:00
Mike Blumenkrantz ada13539bf avoid infinitely looping when applying x11 window grouping
#ThatTimeKainXFoundABug
2016-05-11 18:29:38 -04:00
Mike Blumenkrantz d3ba524a62 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-11 15:40:10 -04:00
Mike Blumenkrantz 45e872ddf1 set E_Client->override flag for internal wins as needed 2016-05-11 15:40:10 -04:00
Mike Blumenkrantz 8d4a75575c remove some cruft from _e_comp_wl_client_cb_new() 2016-05-11 15:40:10 -04:00
Mike Blumenkrantz 2d85b8f111 ensure int64_t is used in all cases for wl pixmap ids 2016-05-11 15:40:10 -04:00
Mike Blumenkrantz 4a47f74b3a enforce setting alpha on comp objects only after image data has been set
setting alpha can trigger a render sync, crashing if the old data is no
longer valid
2016-05-11 15:40:10 -04:00
Mike Blumenkrantz 6d397e313b also check pixmap argb state when setting comp object alpha
more accurate for wayland
2016-05-11 15:40:09 -04:00
Mike Blumenkrantz f25b2ab434 toggle compositor canvas focus during init
this sets the toplevel focus flag in elm, allowing widgets on the compositor
canvas to receive focus in wayland compositors
2016-05-11 13:33:31 -04:00
Mike Blumenkrantz 89deb898ad change efm icon entry to only toggle focus in x11 compositors (runtime) 2016-05-11 13:32:52 -04:00
Mike Blumenkrantz f2ad686fc3 handle positioning of x11 overrides with csd accurately
when first applying the csd region to this type of window the coords must
be adjusted in order to account for the shadow

fix T2934, T2931
2016-05-10 16:04:57 -04:00
Mike Blumenkrantz e2390bebff only load wayland-specific modules on startup if they have been built 2016-05-10 14:18:09 -04:00
Mike Blumenkrantz e4f3179731 block keyboard sending for wl clients if a compositor grab is active
fix T3599
2016-05-10 13:00:01 -04:00
Mike Blumenkrantz f37590209d disable focus effects for windows with csd
fix T3408
2016-05-10 12:35:06 -04:00
Mike Blumenkrantz 16797009c0 ensure child windows are placed on screen
when centering a child over its parent, checks were not made to ensure that
by centering the child it had not gone offscreen
2016-05-10 12:13:12 -04:00
Mike Blumenkrantz 7ebaa1ffb3 make init fail if a dbus session connection cannot be created
typically this indicates a broken session manager or someone trying to run
a wayland session without using dbus-launch
2016-05-09 13:30:40 -04:00
Mike Blumenkrantz c286fe48c0 prune uuid remembers on clean startup
ensure that stale sessions are destroyed regularly
2016-05-06 14:35:16 -04:00
Mike Blumenkrantz 411f378998 flag wl surfaces as internal during create() based on pid matching
fix T3596
2016-05-06 13:52:10 -04:00
Mike Blumenkrantz ef1772b8cb implement wl client session recovery
another small feature patch brought to you by insomnia

 #SamsungFeatures
2016-05-05 15:47:55 -04:00
Mike Blumenkrantz e0d1a572a1 bad copy/paste in _e_place_desk_region_smart_obstacle_add()
CID 1354988
2016-05-05 09:36:42 -04:00
Mike Blumenkrantz 4639062133 uninitialized vars in e_client_maximize_geometry_get()
CID 1354989, 1354990
2016-05-05 09:35:51 -04:00
Mike Blumenkrantz 32cf7162ed ensure lifetime for wl client focus timer
fixes some focus-out crashing
2016-05-03 20:27:02 -04:00
Mike Blumenkrantz 69370250d1 don't refocus deleted clients during wl compositor grab 2016-05-03 20:27:02 -04:00
Mike Blumenkrantz 53e0bf08bc further optimize window smart placement by reducing obstacle calcs
previously the obstacle list would build from the bottom up, skipping
fullscreen and maximized windows. this would lead to cases where windows
would be moved to avoid windows which were fully obscured, and also cases
where unnecessarily large amounts of looping would occur related to the
existence of maximized windows
2016-05-02 18:37:17 -04:00
Mike Blumenkrantz 049deb2c12 directly load extra wl modules during compositor init
speed++++++++
2016-04-28 17:58:45 -04:00
Mike Blumenkrantz 01ac84035f ensure that the startup apps cache handler has run before trying to start apps
fixes timing issues when running startup apps
2016-04-28 17:58:45 -04:00
Mike Blumenkrantz 20f1aa8727 feed mouse up events to internal wins before mouse out during action exec
ref 609276e12d

fix T3347
2016-04-28 12:00:17 -04:00
Mike Blumenkrantz 502662456f Revert "handle recursion more effectively in e_menu_hide_all()"
This reverts commit 5764bf680e.

this was a workaround for a behavior change in efl
2016-04-27 11:27:56 -04:00
Mike Blumenkrantz 5764bf680e handle recursion more effectively in e_menu_hide_all()
there were recent changes to evas object deletion mechanics which caused
this to begin crashing due to recent changes to evas object deletion mechanics
2016-04-26 10:43:07 -04:00
Mike Blumenkrantz 2c1e864fbc 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 08:58:50 -04:00
Eduardo Lima (Etrunko) 8acbf5d013 Fix warnings about uninitialized use of variables
src/bin/e_zone.c: In function ‘_e_zone_useful_geometry_calc’:
src/bin/e_zone.c:1272:14: warning: ‘geom.h’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    if (h) *h = geom.h;
              ^
src/bin/e_zone.c:1271:14: warning: ‘geom.w’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    if (w) *w = geom.w;
              ^
src/bin/e_zone.c:1270:23: warning: ‘geom.y’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    if (y) *y = geom.y + zy;
                       ^
src/bin/e_zone.c:1269:23: warning: ‘geom.x’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    if (x) *x = geom.x + zx;
                       ^
src/bin/e_client.c: In function ‘e_client_maximize_geometry_get’:
src/bin/e_client.c:3754:16: warning: ‘y’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    if (my) *my = y;
                ^
src/bin/e_client.c:3753:16: warning: ‘x’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    if (mx) *mx = x;
                ^
src/bin/e_client.c: In function ‘e_client_fullscreen’:
src/bin/e_client.c:4032:21: warning: ‘h’ may be used uninitialized in this function [-Wmaybe-uninitialized]
         ec->saved.h = h;
                     ^
src/bin/e_client.c:4031:21: warning: ‘w’ may be used uninitialized in this function [-Wmaybe-uninitialized]
         ec->saved.w = w;
                     ^
src/bin/e_client.c:4030:21: warning: ‘y’ may be used uninitialized in this function [-Wmaybe-uninitialized]
         ec->saved.y = y;
                     ^
src/bin/e_client.c:4029:21: warning: ‘x’ may be used uninitialized in this function [-Wmaybe-uninitialized]
         ec->saved.x = x;
                     ^
Signed-off-by: Eduardo Lima (Etrunko) <eblima@gmail.com>
2016-04-25 19:40:42 -03:00
Derek Foreman d9679f765f 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-25 16:40:32 -05:00
Mike Blumenkrantz c3700297d7 remove explicit edje_init/shutdown calls
elm already handles this
2016-04-25 12:55:21 -04:00
Mike Blumenkrantz fcc996545c always end drag operations on failure
fix T3507
2016-04-25 12:24:44 -04:00
Mike Blumenkrantz 05451aeb36 treat POPUP_MENU window type as an override window for comp theme matching
ensures that the menu theme gets picked for wayland popups; probably needs
a more comprehensive solution for xdgs v6
2016-04-22 15:28:54 -04:00
Mike Blumenkrantz 2014de2fe6 Revert "do not revert client focus except for normal and dialog windows"
This reverts commit 5b119d437a.

I give this solution a B- for working but also totally ruining everything
2016-04-22 14:47:35 -04:00
Mike Blumenkrantz 5b119d437a do not revert client focus except for normal and dialog windows
fix T3432
2016-04-22 13:15:33 -04:00
Mike Blumenkrantz 5c0729221e only set "dialog" border for transient clients if window type is unset
fix T3157

from https://specifications.freedesktop.org/wm-spec/wm-spec-latest.html :
_NET_WM_WINDOW_TYPE_DIALOG indicates that this is a dialog window.
If _NET_WM_WINDOW_TYPE is not set, then managed windows with
WM_TRANSIENT_FOR set MUST be taken as this type
2016-04-22 12:51:12 -04:00
Mike Blumenkrantz b94023c412 set NULL image data in _e_comp_object_pixels_get() on failure
ensure that nothing is rendered here
2016-04-22 12:45:26 -04:00
Mike Blumenkrantz 6f83ec7329 do not show unsized comp objects during theme apply 2016-04-22 12:45:04 -04:00
Mike Blumenkrantz d584c9a095 ensure resize is still deferred for changes.shape clients during failed resize
ref c212bb4e21
2016-04-22 12:13:11 -04:00
Mike Blumenkrantz 84cf7743b6 set NULL image pixel data during x11 render when no damages exist
fixes a weird corner case where shapeless clients try to sneak a fast one
by and you gotta be like http://i.imgur.com/irwmnCT.webm

ref T3157
2016-04-21 18:21:26 -04:00
Mike Blumenkrantz 881ccfc768 slightly simplify image data setting in e_comp_object_render() 2016-04-21 18:09:18 -04:00
Mike Blumenkrantz 77e8ab0926 remove unnecessary conditional in e_comp_object_render() 2016-04-21 18:06:58 -04:00
Mike Blumenkrantz 2a67b3a899 ensure damages do not get added for shapeless x11 clients
ref 32d4c2f2b9

ref T3157
2016-04-21 18:04:16 -04:00
Mike Blumenkrantz c212bb4e21 don't defer resizes+queue render updates for shapeless or pending shaped clients
this basically guarantees a misrender
2016-04-21 18:01:42 -04:00
Mike Blumenkrantz a97a50b306 don't force full damage on x11 override clients
reverts f6be761226

this didn't fix anything and can cause irregularities in rendering
2016-04-21 16:32:01 -04:00
Mike Blumenkrantz 019318b88f do not attempt to show x11 override windows
fix T3444, T1759, T2735
2016-04-21 15:28:55 -04:00
Mike Blumenkrantz f36f2d16bc unify client filtering checks from e_place_desk_region_smart() 2016-04-21 14:48:49 -04:00
Mike Blumenkrantz 08cb34f7ad ensure that wl clients do not run extra render on hide twice
fixes crash when applications crash
2016-04-21 13:55:23 -04:00
Mike Blumenkrantz 54e6da6576 only update wl dnd actions when applying focus 2016-04-21 13:55:23 -04:00
Mike Blumenkrantz aefa7d3795 always update wl dnd offer actions 2016-04-21 13:55:23 -04:00
Mike Blumenkrantz 42d67d51c3 do not perform input ungrab twice during dnd end in wayland
this was happening in both drag free and drag end: once is sufficient
2016-04-21 13:55:23 -04:00
Carsten Haitzler 76ed021006 e - e_start - update mtrack to use new debug mode for hunting bugs
this won't affect anyone who doesnt have a ~/.e-mtrack file ... this
is for debugging purposes and no others
2016-04-21 09:42:13 +09:00
Mike Blumenkrantz fc759b1f0c more accurately reject wl selection setting based on whether serial is invalid
copycopycopycopy
2016-04-20 12:38:08 -04:00
Mike Blumenkrantz 9dd36ff01c apply formatting rules to e_comp_wl_data.c 2016-04-19 17:38:22 -04:00
Mike Blumenkrantz bfd204be71 update wl dnd/clipboard support to v3 of protocol
this code is mostly copied from weston:
78d4bf9a3ec990dceee23fd53962a69891352a0e
9c93179023fe894e417ccd20533d72d672d976fc
b288988e831cee3deb7f8bb1a3f440c86230dd9f
4061e2b67e62d5d2a635f0b87098f331082e8145

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

ref T3455
2016-04-19 17:34:58 -04:00
Mike Blumenkrantz 33e23c7364 add copyright headers (MIT) from weston to e_comp_wl_data
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-19 17:27:17 -04:00
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 536a3a7ff6 make startup/restart app exec timing protocol-specific
this allows different display protocols to start their applications at
different times to ensure that any initialization has completed prior to
starting anything requiring a window

fix T3475
2016-04-18 15:27:47 -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 a1d0f97968 do not perform x11 mouse/wheel grabs for ANY binding contexts
these are traditionally compositor-only actions which may filter through
many different objects but are not meant to activate on window contents

resolves issues where some related mouse bindings were blocking input on windows
under x11

 #thingsthatneeddocs
2016-04-18 12:55:30 -04:00
Mike Blumenkrantz fefdca1f00 redo e_place_desk_region_smart() to handle multiple screens
this code is unbelievably bad.

fix T3404
2016-04-12 13:33:54 -04:00
Carsten Haitzler 1db14b547a e intel - fix number 2
so the crazieness in e+intl was because of eina_str_tolower()
silliness... so work with it and another patch to follow on from
01e53356f8 ...

@fix
2016-04-12 16:31:32 +09:00
Carsten Haitzler 01e53356f8 e intl - fix string buffer length size
this intl code was broken using sizeof a pointer (sizef char *) vs
size of the actual buffer used.

@fix
2016-04-12 14:22:20 +09:00
Mike Blumenkrantz 48fbfa2908 reduce efl version req to 1.17.0, make new gadget stuff 1.7.99+ at runtime 2016-04-11 15:15:51 -04:00
Mike Blumenkrantz 7db999dec1 xkb compiler warns--
ref 53636dd87c
2016-04-11 15:05:32 -04:00
Mike Blumenkrantz c9e168460e ensure that wl keymap is initialized, even if no configuration exists
fixes no-config crash

ref 62440eb5fe
2016-04-11 14:53:52 -04:00
Mike Blumenkrantz 3df1e04ded bump modapi 2016-04-11 14:28:52 -04:00
Mike Blumenkrantz 4cbf81b1e8 add E_Client->saved.frame to handle mismatched csd states
if csd exists in only one of (before || after) a maximize/fullscreen,
this provides info so that the right size can be used when restoring
geometry

...again
2016-04-11 14:28:31 -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 1facf33ddf ignore maximized+fullscreen windows when placing new clients
this should improve perf and placement

ref T3404
2016-04-11 12:02:00 -04:00
Marcel Hollerbach 53636dd87c e_xkb: use new_keyboard event to restore known layout
Summary:
the new_keyboard event is now used to restore the known layouts out of
the config, if the state is changedthe new group is safed in the config
which will be safed later.

Reviewers: zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D3877
2016-04-08 23:30:22 +02:00
Mike Blumenkrantz 6df8f5a806 Revert "do not update client saved states during maximize if client is animating"
This reverts commit 227776985e.

impossible case, too much wayland
2016-04-08 17:23:06 -04:00
Mike Blumenkrantz 2cecb9369e bump modapi 2016-04-08 16:53:08 -04:00
Mike Blumenkrantz 4c6a4ea4ce track client maximize animation agents, delete upon beginning new animation
fixes an issue where unmaximize+maximize chaining would break client sizing
2016-04-08 16:45:56 -04:00
Mike Blumenkrantz cfca88bc95 simplify maximize animation re:maximize_override unsetting on no-animate 2016-04-08 16:43:46 -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 98934fb0e9 make (un)maximize_pre callbacks capable of rejecting the maximize operation
this is useful when subsystems need to know that a client wants to maximize
but need to delay that maximize for a later point
2016-04-08 16:07:40 -04:00
Mike Blumenkrantz a3da199685 disable maximize anims for www-compatible wl surfaces
due to www modifying the csd region, animating resizes will trigger
unsolvable race conditions which break windows
2016-04-08 16:06:19 -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 a7adf21c88 add E_Client->maximize_anims_disabled to selectively disable maximize anims
for some clients it's impossible to animate resizing due to various race conditions
being created which will break the client
2016-04-08 16:01:55 -04:00
Mike Blumenkrantz b4b682cd6a make a number of client functions take const E_Client* 2016-04-08 15:57:21 -04:00
Mike Blumenkrantz 8d56ff3eec break out client maximize/unmaximize calc functions into preview functions
these enable "previewing" a client's size after toggling the maximize state,
not accounting for any csd or ssd sizing changes
2016-04-08 15:55:27 -04:00
Mike Blumenkrantz 227776985e do not update client saved states during maximize if client is animating 2016-04-08 12:23:19 -04:00
Mike Blumenkrantz 71c1669036 change client un/maximize_pre callback location to occur after safety checks 2016-04-08 12:22:47 -04:00
Mike Blumenkrantz 4cc66119c5 make e_client_has_xwindow() more wayland-only friendly 2016-04-08 11:51:18 -04:00
Mike Blumenkrantz dea3ae21ad directly include e.h in efm device backends
fixes some compile errors related to include ordering

ref 68587276cf
2016-04-08 11:50:27 -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 14721bc116 do not unconditionally update position+size when changing wl client csd geometry
this breaks...everything
2016-04-06 16:40:42 -04:00
Mike Blumenkrantz e9bca1abaa Revert "add E_Client->saved.frame to handle mismatched csd states"
This reverts commit ae7af6b8ef.

this was a workaround for an entirely different issue, and it didn't even
solve that issue
2016-04-06 16:39:55 -04:00
Mike Blumenkrantz 992e04feb2 wayland client maximize/fullscreen cleanups
ref da74e690f0
2016-04-05 16:54:04 -04:00
Mike Blumenkrantz ae7af6b8ef add E_Client->saved.frame to handle mismatched csd states
if csd exists in only one of (before || after) a maximize/fullscreen,
this provides info so that the right size can be used when restoring
geometry
2016-04-05 16:52:50 -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 f8bca98f35 reject client maximize attempts using identical maximize params 2016-04-05 15:00:54 -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 6617a8440c always set ec->maximize_override on unmaximize if maximize anims are enabled
this ensures that all cases of animation have the flag set
2016-04-04 14:01:30 -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 7541a51599 use zone geometry for shelf zone obstacles
shelves use relative coords, so zone obstacles must have adjusted coords
passed in order to calc correctly

fix T3404
2016-04-04 11:29:01 -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 8b8abb436d restrict shelf border_fix to only affect clients affected by the shelf
fixes random other clients changing sizes based on irrelevant shelf hiding
2016-04-01 16:26:41 -04:00
Mike Blumenkrantz 37c5063200 do not incrementally remaximize clients during shelf hide animation
this looks really bad and forces unnecessary spinning
2016-04-01 16:26:06 -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 3cb11abb25 move x11 client icon caching to private functions in comp_x
ref 57ce6419e5
2016-04-01 14:16:21 -04:00
Derek Foreman 8f0f9ce4f7 wayland: Fix xdg-popup crash
We need to remove the destroy listener when we delete a pixmap or it
leaves an invalid node on the signal list.
2016-04-01 14:07:45 -04:00
Carsten Haitzler 57ce6419e5 e icons: reduce mem usage (in x11) by a fair bit by de-duplicating
so i was profiling today .. leak hunting .. and i noticed. if you have
enough appss open - eg terminology, e uses a huge amount of memory...
for icons. terminology is 128x128 ...  thats 64k per icon. open up a
lot of terminology windows and we duplicate that 64k per every window
on the wm sside because we get the data. it would apply for any app
that sets a netwm icon. this can be come rather silly if you have like
100 terminals. it's worse with larger icons (eg 256x256 - 256k per
icon).

this puts in a simply list for shared icons and a lookup on fetch to
de-duplicate and share icon data. this should drop memory usage
nicely.

@improvement
2016-04-01 20:33:52 +09:00
Mike Blumenkrantz 7f20ff52c9 reapply client focus after input grab, only handle focus for wayland compositors
this was looking too weird

ref 4a73e9f29a
2016-04-01 06:56:47 -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
Derek Foreman 79a770b638 wayland: Stop E from consuming all CPU as soon as a selection is made
Clipboard fds from clients are regular files, which shouldn't be passed
to fd_handler_add.  Using the wrong add function causes epoll to return
immediately and we end up running idle handlers and burning cpu.

Reviewed-by: Mike Blumenkrantz <zmike@osg.samsung.com>
2016-03-31 14:26:02 -04:00
Derek Foreman 6007a51f17 wayland: Don't leak a clipboard source if adding fd handler fails
Reviewed-by: Mike Blumenkrantz <zmike@osg.samsung.com>
2016-03-31 14:25:35 -04:00
Mike Blumenkrantz 607975ccc0 enforce wl xdg popup stacking relative to parent stacking 2016-03-31 14:05:47 -04:00
Mike Blumenkrantz c529764660 do not reset previously-set ec->placed state when attempting early client moves 2016-03-31 14:03:56 -04:00
Mike Blumenkrantz 53c6b3ca19 apply compositor keybinds if an action client that is not focus exists 2016-03-31 14:03:29 -04:00
Mike Blumenkrantz a352a6d197 only attempt to rescue offscreen clients if they are completely offscreen 2016-03-31 14:03:02 -04:00
Mike Blumenkrantz a9415f696b allow some client zone/desk move actions to occur on action client 2016-03-31 14:02:25 -04:00
Mike Blumenkrantz 9c3d8aa9ca optimize case where an x11 client is focused/unfocused in same loop iteration 2016-03-31 11:21:38 -04:00
Mike Blumenkrantz 4a73e9f29a explicitly manage client focus when setting/unsetting input grabs
clients cannot retain focus during a compositor grab, so ensure that
they do not think they have focus in such cases

fix T3338
2016-03-31 11:21:31 -04:00
Mike Blumenkrantz 0cb7013cda block wl keyboard modifier updating during input grabs 2016-03-31 11:21:23 -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 46d2469d22 don't show some x11-specific compositor settings under wayland 2016-03-30 17:48:25 -04:00
Mike Blumenkrantz d229d26ef4 remove old compositor reset code 2016-03-30 17:48:03 -04:00
Mike Blumenkrantz 7ae25149c7 move notification text escaping into dbus notify method callback
this ensures that notification text reaching the module can be considered
"usable" without forcing multiple escape passes onto the same notification

fix T2757
2016-03-30 16:09:25 -04:00
Mike Blumenkrantz ee16177660 selectively reject comp object signal emissions based on action_client state
in the case where a mouse binding is active and a signal binding is triggered
by the same mouse-up event which also ends the mouse binding, the deferred
nature of edje emissions will result in the signal being received by the
corresponding callback some time after the mouse-up event has been handled by
the client and the mouse binding has ended

to accurately handle these cases, signal bindings triggered in the same event
loop in which a mouse binding has ended after a mouse-up must be rejected in
order to enforce the compositor's mouse grab

fix T3347
2016-03-30 10:42:11 -04:00
Mike Blumenkrantz 609276e12d feed mouse out to internal clients upon activating a mouse binding
this prevents internal windows from effectively processing pending
mouse-up events

ref T3347
2016-03-30 10:25:55 -04:00
Mike Blumenkrantz 286fb40428 add even more systray/dbusmenu hacks
mrw Qt systray devs take working (4.X) and then break it in 5.X to
be worse than steam: http://gfycat.com/CloudyPinkEmperorshrimp

fix T3139
2016-03-28 15:35:42 -04:00
Mike Blumenkrantz d02679383f ignore x11 ConfigureRequest events when maximize_override is set 2016-03-28 13:37:40 -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
Mike Blumenkrantz 0d45b63a84 do not set initial changed state for new clients if they are ignored
this loops the client idler for no reason
2016-03-24 16:43:32 -04:00
Marcel Hollerbach 19db5f256c e_xkb: init before e_comp_wl init
for the case e_xkb gets initialized, we need to init it before ecore_drm
is called, otherwise ecore_drm will create his own context and keymap,
which will be overriden a few moment later when e_xkb is initializied.
So by calling e_comp_wl_input_keymap_set before ecore_drm_init the
correct context and keymap is set and no useless elements are created.

The mainproblem is that the comp_type is set when the compositor is
already running, so we have to pass the type at the init to the e_xkb
to tell for which kind of compositor we are running.
2016-03-24 20:54:03 +01:00
Marcel Hollerbach 62440eb5fe e_comp_wl: let keymaps be set when compositor is not running
if someone tries to set a new file to the wl compositor and it is not
running the values are cached now and setted when the compositor is
running.
2016-03-24 20:54:03 +01:00
Marcel Hollerbach 7cfb6f3d3f e_comp_wl: remove useless params from keymap_set 2016-03-24 20:54:03 +01: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 ce9339a4ac e_xkb: configure model and a list of layouts variants and options to use
the e_comp_wl function takes a list of layouts variants and options
which should be generated from the configured.
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
Marcel Hollerbach 3677ff12f9 e_xkb: refactor command creation code
-model was set to default if e_config->xkb.default_model was default.
Fix this and always set e_config->xkb.default_model.
2016-03-24 20:54:03 +01:00
Mike Blumenkrantz 893f3b1669 feed mouse-up events for all buttons on internal wins when activating a binding
bindings enforce compositor grabs, which will result in stuck canvas buttons and
break internal windows which have already received button presses

fix T3347
2016-03-24 14:03:36 -04:00
Chris Michael 18a9c2d97d add #else to #if 0'd block in order to avoid compiler warning about
unused variable.

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-03-24 10:33:47 -04:00
Chris Michael 83a9e4a404 Reverting this commit to handle a better way
Revert "add EINA_UNUSED for unused function parameter"

This reverts commit 59c0e7f586.
2016-03-24 10:32:52 -04:00
Chris Michael 59c0e7f586 add EINA_UNUSED for unused function parameter
As the block which uses this parameter is #if 0'd out, we end up not
using this param, which generates a compiler warning

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-03-24 10:14:33 -04:00
JengHyun Kang 3cdc11a107 Add functionality for setting left handed mode in drm
Summary:
 - Change mouse button mapping for left handed mode
 - Change a mouse_hand config and save
 Currently e_mouse had e_mouse_update() API for support left_handed mode.
 But that API only for Xorg not support wayland and only for update mapping not change mapping.
 So I added new support for change mouse mapping for left handed mode and support wayland backend system.

Test Plan:
After set left handed mode,
           mouse button mapping is changed for left handed people.

Reviewers: raster, devilhorns, zmike

Subscribers: ohduna, input.hacker, cedric

Differential Revision: https://phab.enlightenment.org/D3433
2016-03-23 17:58:41 -04: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 5e3fb38f86 optimize compositor canvas updating when zone geometry is marked dirty
in many cases where a zone's useful geometry is marked dirty, the resulting
recalc ends up having the same useful geometry as before: this is the case
for things like tasks gadgets, which continually expand and contract along
a single axis and thus will never affect useful geometry while still forcing
a recalc

by ignoring these cases, a huge amount of compositor thrashing is avoided and
a number of related bugs can also be fixed
2016-03-23 15:43:34 -04:00
Mike Blumenkrantz 41f98b96bb use eina_streq for e_util_binding_match() comparisons
optimizes what is likely a stringshare comparison as well as avoiding
null derefs

CID 1191998
2016-03-22 12:01:04 -04:00
Mike Blumenkrantz 4237832b3c unset opaque region during comp object render if none exists
fixes case where opaque region has been unset after previously being set
2016-03-22 11:52:56 -04:00
Mike Blumenkrantz 3e15daabd1 cast eina_list_count() in flowlayout, not entire expression
CID 1267211
2016-03-22 11:51:09 -04:00
Mike Blumenkrantz e919734df7 extend wl extension macros to store globals into extension data 2016-03-21 17:24:24 -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
Marcel Hollerbach f01b8d76e7 add skip event counter for xkb events
if we are setting the group or the set of groups in e we will receive a
XkbNotifyState Event from x, which will result in a
ECORE_X_EVENT_XKB_STATE_NOTIFY event. We are setting there again our
settings, since we need to reset the settings from a potential external
application. So we should only reset our settings when the event is not
expected by e.
2016-03-21 11:33:15 -04:00
Marcel Hollerbach 24487c5233 re-apply xkb layout groups whenever an xkb event occurs
If someone plugs in a external monitor, the notify event is set AND the
group is changed externally. This means enlightenment cannot configure a
new keyboard anymore. So we are flushing in our new config all the time,
setting the old group-index again.
2016-03-21 11:31:58 -04:00
Mike Blumenkrantz 7ce5f68b51 store (internal) elm win geometry when set prior to showing the win
this fixes the case where attempts to manipulate a window would fail
prior to showing the window
2016-03-18 13:53:28 -04:00
Mike Blumenkrantz 510d05d8d3 remove wl selection hacks from f0ba92d39e
https://gfycat.com/ChiefDeafeningGull
2016-03-17 15:18:48 -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 0d6f019bc6 ignore deleted clients when reapplying zone geometry policy in canvas update
this breaks the compositor!
2016-03-17 14:08:23 -04:00
Mike Blumenkrantz b366d8bfb1 use agent objects for maximize effects
this fixes maximize effects on csd windows by providing an object which
will return usable geometry with evas_object_geometry_get()
2016-03-17 13:40:17 -04:00
Mike Blumenkrantz 80595756b7 add e_comp_object_agent_add()
an agent object can be used when a client should be represented on the
canvas solely by its window geometry and not including any csd

this creates and manages a mutable object which maintains the same geom
as ec->x/y/w/h and can be operated upon to modify those values
2016-03-17 13:40:17 -04:00
Mike Blumenkrantz bd0f2595b3 do not update client coords on csd geom update if it would change the zone
in the case where a client is at 0,0 relative to a zone, changing the coords
in this case will result in the client moving out of the zone by the size of the
csd
2016-03-17 13:40:17 -04:00
Mike Blumenkrantz 959366076c always update saved coords for maximized/fullscreen clients on csd geom update
this was causing clients to position themselves wrongly in some cases after
removing the related states
2016-03-17 13:40:17 -04:00
Mike Blumenkrantz 39ce6e2d49 unify maximize animation checks+code 2016-03-17 13:40:17 -04:00
Chris Michael ccd867e6ff destroy seat resource when we get a release request
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-03-16 08:40:41 -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 04e3c383c4 unset solid drawing of opaque regions during comp object animations
this makes animations with transparency not look like giant black rectangles
2016-03-14 14:46:37 -04:00
Mike Blumenkrantz 5494ddd424 enforce bryce zone setting and clip setting
resolves issues where non-primary screens would have differing behaviors
2016-03-14 14:27:15 -04:00
Mike Blumenkrantz 1b9d152eeb do not attempt to resize clients to 0x0 during res restore
ACK--
2016-03-14 14:27:15 -04:00
Mike Blumenkrantz 885d24eeab unify client post_updates management code into single function 2016-03-14 14:27:15 -04:00