Commit Graph

9643 Commits

Author SHA1 Message Date
Mike Blumenkrantz 626a4944e6 re-swallow bg_object after wallpaper transition has completed
fixes eventing/stacking on bg object
2015-11-25 12:38:28 -05:00
Mike Blumenkrantz 28a40d359f allow more client hooks to bypass delete check
failing to propagate these signals can result in a broken compositor
when a client is deleted before/during an operation
2015-11-24 21:44:58 -05:00
Mike Blumenkrantz 3732a233e2 do not apply max client geometry restriction if max geometry is not set
default values for these is set to a very high value, but it's possible
(and guaranteed) for some clients to set them to a value <= 0, which results
in a broken window
2015-11-24 21:44:50 -05:00
Mike Blumenkrantz 1ae6f76d7d use CSD geometry during move/resize display
this should provide more user-relevant information
2015-11-24 21:44:45 -05:00
Mike Blumenkrantz c685d799c1 avoid setting incorrect geometry during new_client frame calc
in the case where a client has no geometry set, attempting to update
the client's geometry during frame recalc will guarantee that wrong
geometry is set, resulting in a bad first frame
2015-11-24 21:44:38 -05:00
Stafford Horne 38411a8624 e/core: Fix minor mem leak when reading module paths
Summary:
Found this with a quick valgrind session.  For paths that are not directories, if we fail the `ecore_file_is_dir` condition memory will not be freed.

The change is to use the default e_path freeing function.

Test Plan:
Run enlightenment in valgrind.  It should no longer show a mem leak like below.

```
==6912== 8 bytes in 1 blocks are definitely lost in loss record 186 of 5,940
==6912==    at 0x4C28C50: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==6912==    by 0x4D8574: e_path_dir_list_get (e_path.c:326)
==6912==    by 0x4D1BA4: e_module_init.part.0 (e_module.c:183)
==6912==    by 0x4D1DA8: e_module_init (e_module.c:153)
==6912==    by 0x4371ED: main (e_main.c:868)
```

Reviewers: zmike

Subscribers: cedric, seoz

Differential Revision: https://phab.enlightenment.org/D3356
2015-11-19 20:45:39 -05:00
Mike Blumenkrantz 9d426dc1e7 ensure that a deskmirror object does not orphan child objects
ref T2846, T2830
2015-11-19 16:20:33 -05:00
Mike Blumenkrantz 468757c8c1 Revert "e deskmirror - fix loss of mirror object from deskmirror"
This reverts commit bd0c590489.

the m->mirror object can never be deleted except in the case of a client
being removed from the owner desk. removing it at any point will break any
users of the deskmirror api and create other issues

ref T2846
2015-11-19 16:20:27 -05:00
Mike Blumenkrantz 92fd6db69f always create compositor mirror objects, ignore pixmap image state
checking pixmap image state in this case resulted in mirrors failing to
be created in some cases when there was no reason to fail

ref T2846
2015-11-19 16:20:05 -05:00
Mike Blumenkrantz 979d4724b9 further improve csd calculations for x11 clients
there was previously a frame in which maximized x11 csd clients would
reposition themselves offscreen before rendering

this is now fixed by adjusting the client geometries either upon
unsetting the csd or re-setting it, allowing the client to retain its
expected positioning without jitters
2015-11-19 16:13:42 -05:00
Mike Blumenkrantz 9539e36707 update E_Client->desk member upon focusing a sticky client
a sticky window previously would always have the desk set for where
it was set as sticky, meaning that anything which tries to access it
will be reading wrong data here.
more useful information to provide is the last desk which the sticky
client was focused on, so update that upon focusing it
2015-11-19 16:07:33 -05:00
Mike Blumenkrantz 5d4d03ca11 do not add new deskmirror clients on desk_set event if client already exists 2015-11-19 16:03:59 -05:00
Mike Blumenkrantz 7bdbc9c9e4 improve x11 client focusing with mouse-based focus policies on mouse move
in the case that a mouse move event occurs, the compositor should validate
the event to ensure that the mouse cursor is actually over the window that
the event claims to be from

fix T2594
2015-11-12 17:24:46 -05:00
Mike Blumenkrantz 26ccdd3907 null efm icon eio handle in error callback
ref T2829
2015-11-11 13:18:00 -05:00
Mike Blumenkrantz bc2d090572 use unsigned int for client focus tracking freeze state
there's no reason why this should ever be negative
2015-11-10 14:50:34 -05:00
Carsten Haitzler 87edcc861b e deskmirror - fix loss of mirror object from deskmirror
this fixes T2830

@fix
2015-11-10 14:50:25 -05:00
Mike Blumenkrantz 014d700f91 check client comp data existence in x11 mirror visibility callbacks 2015-11-09 14:35:22 -05:00
Mike Blumenkrantz 245bb97922 enforce fullscreen client stacking during nocomp end IFF client is fullscreen
previous behavior would result in the nocomp window becoming stuck at a fullscreen
layer when ending nocomp, even if the client was no longer fullscreen

fix T2827
2015-11-09 14:34:09 -05:00
Mike Blumenkrantz eefba09456 disable client menu stacking functions for unstackable windows
any client stacked higher than E_LAYER_CLIENT_ABOVE should never be
user-stacked
2015-11-09 14:32:50 -05:00
Mike Blumenkrantz 755073b5fc Revert "force a software render in all cases when finalizing x11 client iconify"
This reverts commit 280e7e959d.
2015-11-09 14:32:50 -05:00
Mike Blumenkrantz 3e5d970c2f toggle x11 client iconic/mapped state based on mirror visibility
in order to continue rendering an iconic client without breaking icccm,
it's necessary to map the client's window again and unset iconic state
whenever rendering is needed, then re-set states when rendering
stops

ref T2788
2015-11-09 14:32:47 -05:00
Mike Blumenkrantz e8c7f5686c add e_comp_object_mirror_visibility_check()
can be used to check whether visible mirrors exist for a comp object
2015-11-09 14:25:25 -05:00
Mike Blumenkrantz a372c31b84 add counter and smart callbacks for comp object visible mirrors
ref T2788
2015-11-09 14:25:16 -05:00
Mike Blumenkrantz c31824c2ef move client iconic hint setting into x11 hide function
e_hints should probably be merged into the x11 compositor entirely
at some point
2015-11-09 14:23:23 -05:00
Mike Blumenkrantz 3a16a86ea3 break out x11 client visibility setting into util functions 2015-11-09 14:23:11 -05:00
Stafford Horne cd2ebfe532 e/ilist: Fix issue with multiselect returning wrong index
Summary:
I noticed this because the description dialog in "Apps > Startup Application"
was never getting properly populated.

Test Plan:
When selecting items in the "Apps > Startup Applications" config the
description should update if a "Comment" field is available in the
.desktop file.

Reviewers: zmike

Subscribers: cedric, seoz

Differential Revision: https://phab.enlightenment.org/D3297
2015-11-09 14:23:11 -05:00
Mike Blumenkrantz 88726e8df3 adjust efm multi-icon drag positioning by the current pan coords
fixes positioning when dragging multiple icons after scrolling
2015-11-09 14:23:11 -05:00
Mike Blumenkrantz 8589289ff5 add native surface (gl) clients to post render list
forgot to add this when I was redoing it for sw

ref 4d30674ab8
2015-11-09 14:23:08 -05:00
Carsten Haitzler 82e2e93fd2 e exec tracker - fix tracking to update desktop files on efreet change
efreet will send change events meaning out desktop file icons are
invalid now. we have refs but content is junk. update these to new
desktop ptr handles by using the exec key to look up new ones on the
change event. this fixes ibar gainign a bunch of blank unknown icons
when any desktop files are touched on the system or user dirs

@fix
2015-11-09 14:14:42 -05:00
Mike Blumenkrantz ff1ef7281b simplify client SMART/EXPAND maximize
calling e_client_resize_limit() here was misleading since the values
were never used
2015-11-09 14:05:17 -05:00
Mike Blumenkrantz 9324313948 reject frame theme changes for clients which have CSD 2015-11-09 14:04:29 -05:00
Mike Blumenkrantz dfa3b4060c only apply frame geometry deltas for CSD if the CSD region exists
ref e931e86161
2015-11-09 14:04:24 -05:00
Mike Blumenkrantz 90b0708fb1 remove dead modules from whitelist 2015-11-09 14:04:03 -05:00
Mike Blumenkrantz ffc1f2604a make comp config unresizable...again
ref 5178197f60
2015-11-09 14:03:51 -05:00
Mike Blumenkrantz 1529bebcb0 update csd using deltas of previous values
when applying new csd to a window which already has csd, the previous
csd must be removed in order to apply any new csd offsets in order to
avoid unwanted moving/resizing
2015-11-09 14:03:35 -05:00
Thierry bc09dfeefe mouse_config: fix accel threshold and numerator limits.
man xset =>  If the `threshold' parameter is provided and 0, the
`acceleration' parameter will be used in the exponent of a more
natural and continuous formula, giving precise control for slow motion
but big reach for fast motion, and a progressive transition for motions
in between.  Recommended `acceleration' value in this case is 3/2 to 3,
but not limited to that range.
2015-10-17 12:00:40 -04:00
Mike Blumenkrantz 280e7e959d force a software render in all cases when finalizing x11 client iconify
since ICCCM requires that clients be unmapped while iconified, it's necessary
for the compositor to perform one last render prior to the unmap in order to
ensure that mirror objects will still appear as expected. this render must use
the pixmap buffer data in order to avoid timing issues due to async/deferred
rendering, and it is only necessary for the case of clients rendering with a
native surface

fix T2788
2015-10-15 17:05:15 -04:00
Mike Blumenkrantz 979937cc20 clear x11 client pixmap when returning from iconic
ensure pixmap remains usable during the entire hide process
2015-10-15 17:04:02 -04:00
Mike Blumenkrantz 988df882ea reject deleted clients from x11 sync alarm event callback
E_Client->comp_data is null after a client has been deleted, so
attempting to handle events which require the dereferencing of this
pointer after a client has been deleted will result in a crash

these events should be rejected after delete regardless, since at this
time the compositor has stopped handling events for the client

ref f42c6aa187
2015-10-15 14:02:17 -04:00
Mike Blumenkrantz 72b7860cf6 trap shaped x11 clients and prevent compositor blocking with high rect count
in the case where a shaped window with many rects exists, there is a high
probability of the damage rect count being huge, leading to massive blocking for
each frame as the compositor attempts to fetch all of these rects from the xserver.

instead, the compositor can shortcut this by forcing a full-window damage any time
the rect count is sufficiently high, trading a blocking socket operation for some
amount of (potential) overdraw.

testing in affected scenarios has shown huge improvements: where previously the entire
compositor would lock up, things work as expected now

see https://bugzilla.mozilla.org/show_bug.cgi?id=1214746 for a sample case
2015-10-14 13:05:53 -04:00
Mike Blumenkrantz 8c95402fd9 do not return when x11 damage event returns no rects
ensure first_damage flag is set in all cases
2015-10-14 13:03:49 -04:00
Mike Blumenkrantz 0cec30df72 fix typo in previous damage rect commit 2015-10-14 13:03:49 -04:00
Mike Blumenkrantz 61d51eda56 subtract x11 client damage region even when forcing full override damage
fix T2785
2015-10-13 22:40:55 -04:00
Mike Blumenkrantz 21d2a84c2e force full damage for first frame of x11 override clients
it seems that damages for popup windows in some applications,
namely blink-based browsers, are reported incorrectly, resulting
in sometimes having a blank window
2015-10-13 17:11:53 -04:00
Mike Blumenkrantz f53e85e44c make wake-on-urgent apply for all cases of window urgency
in the case that an urgent window is set as urgent again, wakeup should
still occur
2015-10-09 15:24:37 -04:00
Mike Blumenkrantz 24c2d5fb95 when removing VERTICAL maximize state, also remove LEFT and RIGHT states
LEFT and RIGHT are supersets of VERTICAL which serve no purpose on their own,
so remove them when removing VERTICAL

fix T2770
2015-10-07 15:47:41 -04:00
Mike Blumenkrantz 16f20ff336 only use fast-path pixmap size updating after a resize for x11 clients
updating these values after other operations will result in the pixmap size
being set inaccurately, leading to rendering inconsistencies
2015-10-05 17:30:54 -04:00
Mike Blumenkrantz 3733cb039b attempt to load default e_bindings if initial load fails 2015-10-05 16:02:43 -04:00
Mike Blumenkrantz 89387f8cb8 clear menu cache when saving a menu file
force regeneration of menus after editing them

ref T2271
2015-10-05 16:02:37 -04:00
Mike Blumenkrantz c6e79c0ddc make icon selection dialog resizable in .desktop editor
ref T2271
2015-10-05 16:02:32 -04:00