Commit Graph

55 Commits

Author SHA1 Message Date
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 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 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 8ca293423a always run client res changes in e_comp_canvas_update()
this function is only called when screen geometry (or useful geometry) has
changed, and so all clients should have their geometries checked at this point
to ensure that they update for any new zone obstacle changes which have occurred
2016-03-08 15:59:57 -05:00
Derek Foreman b98e78d464 Track whether a render is in progress or not
We'll need this to protect certain wayland operations.
2016-03-08 12:46:32 -05:00
Derek Foreman a35c7637a2 Track whether objects are on the post_updates list or not
Will use this to prevent accidentally adding objects to the list twice
2016-03-08 12:46:32 -05:00
Mike Blumenkrantz c86aa21e90 remove comp canvas key handler shortcuts for passing keys to wayland clients
now handled normally by disabling bindings
2016-01-22 13:13:08 -05:00
Mike Blumenkrantz fc6458bccd re-add MANAGER context bindings
these bindings activate before any other handler can process the
corresponding event and will block all propagation of the event upon
activation

as an example, the alt+wheel default binding for flipping desks currently
passes through a number of event handlers prior to activating the binding,
meaning that it's possible for the wheel action to have unwanted effects
when these handlers cause actions before the binding stops the propagation.
using a MANAGER context instead ensures that this is not possible
2016-01-22 12:59:19 -05:00
Carsten Haitzler e1369a24bd per-desk profiles - move to per screen and use elm derived profiles
this removes the per desktop profile config and replaces it with a
per-screen one that is tied to a specific display so it is far more
logical than per desktop. this allows e to set up different scaling
per screen for apps that use elementary for example via this derived
profile.

this of course is slightly problematic for e itself since it now uses
elm - as this will cause e to go kind-of-crazy with differing profiles
as it fights with itself and elm if 2 screens have different profiles.
this requires elm to be fixed to allow custom profiles per window.

this also currently won't switch profile of a window when you
reconfigure screens.

@feature

xx
2016-01-08 21:54:31 +09:00
Mike Blumenkrantz c1c1f341ac use canvas RENDER_PRE callback to trigger compositor pre-render callbacks
this should probably be removed entirely...
2015-12-10 16:02:13 -05:00
Mike Blumenkrantz 982a4d249b move comp canvas resize callback to monitor elm win geometry
elm win intercepts this callback in order to maintain internal sizing
for use with elm widgets on the compositor canvas, so it's necessary to
get the callback from this object in order to accurately update the canvas
during resizes
2015-12-10 11:53:56 -05:00
Carsten Haitzler 251daa7515 e - fix compositor fade out ghosting
due to enabling manual rendering (and als animator frametiem to 10
secons) in e_comp_canvas.c when screensaver is active (blanking is
finished totallly - eg the fade to black) evas weill nto render the
last frame of the animation - skipping it and not rendering another
update until screensaver is disabled. this leaves a subtle ghost of
pixel data which is 1 step before black on the screen (until dpms
turns the monitor off).

this fixes that. this delays enabling manual render for 1 more second
after we have been told the screensaver is active. this is plenty of
time to update all the way to black.

@fix
2015-11-23 11:42:38 +09:00
Carsten Haitzler b018ac1abc e screens/zones/randr - store randr2 id in xinerama and zones for lookup
so e has a bit of a problem. we mostly deal with zones, BUt these
zones come from our old xinerama code (this likely should just die
some time) and THIS code gets fed info from e's randr code. we
re-fill/modify as randr finds new screens or things get reconfigured.
thus zones adapt. the problem is now all our zone code really has a
hard time reverse mapping the zone back to where it came from -eg the
randr screen data. you literally can't do a whole bunch of things like
know if that zone was an internal laptop lid or an external screen, or
if it was rotated or even what the dpi is... as you ave no deasy way
to map it back other than by guessing geometry matches.

this fixes that by storing the randr screen id (which should be
unique) fromt he original src randr screen in the xinerama screen and
then in the zone. with this you can do a quick lookup in the e randr
data should you ever need to find the info. this should pave the way
for some other fixes/improvements, but without this they cannot be done.

@fix
2015-11-11 21:22:30 +09:00
Mike Blumenkrantz bff9ae5feb add pre-render callback list for compositor canvas
someone doing fancy effects might want to add a callback to do various
tasks only when a render is about to occur
2015-09-17 16:54:00 -04:00
Mike Blumenkrantz a08a1434c1 move x11 ee resize callback to comp_canvas, simplify x11 randr event handler
this should ensure that all compositors accurately perform resize-related
canvas operations
2015-08-12 19:26:19 -04:00
Mike Blumenkrantz f2f4b65ead move menu mouse-up feed util function to E_API in comp canvas 2015-08-05 17:26:50 -04:00
Mike Blumenkrantz 7f638d98bf add functioning wayland screensaver support
block xscreensaver events, manage input<->activation eventing

fix T2525
2015-07-27 15:46:57 -04:00
Mike Blumenkrantz a951b88305 don't block keybind activation while grabs are active 2015-07-21 15:33:50 -04:00
Mike Blumenkrantz 5c00c1009b redo wl compositor key eventing
* break out key callbacks into EINTERNs
* remove extraneous/unused mouse event handlers
* enforce wl modifier updating in all cases
* ensure keybinds are activated before wl clients receive input
  - block wl client input during grabs

fixes T2565
2015-07-21 14:27:29 -04:00
Mike Blumenkrantz 4d76741533 only perform keybind grabs on root window for x11 compositors 2015-07-20 13:32:06 -04:00
Mike Blumenkrantz f2d71ad903 block compositor keybinds using more accurate x11 detection
blocking based on event window here is only valid for true x11 compositors
and not just compositors with root windows

fixes keybind activation when running xwayland clients
2015-07-20 13:29:13 -04:00
Carsten Haitzler 6b64e40122 e - e client, comp win etc. reffing fix ... part 2
this follows 56cabf59c6 then
4e5521b4d8 where i have been trying to
fix a crash with e client and comp win references etc. i have gone
over all referencing with a fine tooth comb and found all the nigglies
i can., no leaks now, no crashes, no valgrind complaints etc. so i
call this fixed now. as best i know this is new in e20, so not a
backport fix
2015-06-15 20:27:25 +09:00
Derek Foreman 6ba90335e2 Resize the canvas at the end of canvas init
Summary:
wl_drm sets up a resize callback, so if the resize occurs before zone setup
wl_drm's call to e_comp_canvas_update will setup extra zones (breaking the
wizard).

Reviewers: zmike, devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2567

 #butts
2015-05-22 12:25:25 -04:00
Chris Michael 0a94e8ba71 enlightenment: Make E build again with EFL from git
sed -i 's/EAPI/E_API/g'

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-05-07 15:13:10 -04:00
Mike Blumenkrantz ff5b06b79d fix MANAGER context keybinds to work with rootless compositors 2015-04-27 14:11:05 -04:00
Mike Blumenkrantz 3e50235e5b fix comp fake layer init for wl compositors
fix T2363
2015-04-24 14:12:44 -04:00
Mike Blumenkrantz e64998b042 resize comp canvas on e_comp_canvas_init()
remove unnecessary call in wl drm output module
2015-04-22 21:20:57 -04:00
Mike Blumenkrantz 24887ddccc move comp fake layer init into canvas init for non-X compositors 2015-03-20 15:12:59 -04:00
Mike Blumenkrantz 58447e9508 completely remove E_Manager
the final step in flattening all the canvas/screen apis
2015-03-19 16:53:32 -04:00
Mike Blumenkrantz 8f15e7c89f remove E_Comp usage from e_comp_canvas 2015-03-18 17:24:00 -04:00
Mike Blumenkrantz ba7c1ac49c remove E_Zone->comp member 2015-03-13 17:44:24 -04:00
Mike Blumenkrantz 34d906fa42 e_zone functions no longer require E_Comp param 2015-03-13 17:28:49 -04:00
Mike Blumenkrantz d00127c2f5 e_comp functions no longer require E_Comp param 2015-03-13 16:48:41 -04:00
Mike Blumenkrantz 2a9296e0ec remove E_Event_Compositor_Resize struct
corresponding event no longer sends event info
2015-03-13 16:12:35 -04:00
Mike Blumenkrantz 1fe1c94245 comp canvas functions no longer require an E_Comp param 2015-03-13 16:07:08 -04:00
Mike Blumenkrantz 91edd1ce2f E_CLIENT_*FOREACH() macros no longer take a E_Comp param 2015-03-13 15:45:07 -04:00
Carsten Haitzler 790183d74a e - randr - laptop lids - handle plug/unplug and well as lid open/close
this fixes some issues in the new randr2 code that made it not work
right with plug/unplug and lid close/open. now it does work right and
plugging/unplugging displays is seamless (if your driver does not give
plug/unplug events bind a key to update screen config acvtion and e
will figure it out when you hit the key).
2015-02-09 18:22:02 +09:00
Carsten Haitzler fe892a3ce0 comp base - make base black. makes for better screenshots of blank areas 2015-01-16 17:50:34 +09:00
Mike Blumenkrantz 0bac875290 remove some e_comp_get() usage in core comp/client files 2015-01-05 15:39:34 -05:00
Mike Blumenkrantz 922af2c52f remove e_comp_list(), deprecate all related functions for pending removal
there is only one E_Comp which can now be accessed by the e_comp global.

if you're editing a file with some uses of these deprecated functions, replace their usages with appropriate references to this variable

pass -Wno-deprecated-declarations to ignore these warnings during build
2015-01-05 15:39:15 -05:00
Mike Blumenkrantz 30bd5e4a0d remove misleading old comment 2014-09-07 11:45:31 -04:00
Mike Blumenkrantz 26146ccbe4 fix zone sort order 2014-07-19 15:55:34 -04:00
Gwanglim Lee 571a696ab8 fix visibility issues related to desktop window profile
Summary:
1. fix window profile change request with wrong x window id
2. refactoring desktop window profile codes to handle e_client_desk_set correctly

Test Plan:
1. enlightenment: Settings Panel -> Screen -> Virtual Desktops -> Check "Use desktop window profile" -> Apply
2. open an efl app on 1st desktop (0-0)
3. set a window remember on efl app window
4. go to 2nd desktop (1-0)
5. open an efl app again. it should be positioned on the previous desktop (0-0)

Reviewers: zmike, raster

CC: cedric

Differential Revision: https://phab.enlightenment.org/D926
2014-06-09 13:30:04 -04:00
Mike Blumenkrantz 96943573fb remove duplicate layer object creation
I don't know why this was here?
2014-05-29 12:17:57 -04:00
Mike Blumenkrantz 9395553039 don't reset ignored clients on canvas update
part of T787
2014-02-25 09:46:41 -05:00
Carsten Haitzler 3e17092db8 fix segv with comp post_updates
if we keep a list of e clients... either make sure any client deleted
is removed from the list on deletion... OR use ref/unref to ensure it
stays alive as long as it's in the list.
2014-02-12 12:34:28 +09:00
Mike Blumenkrantz a3fbcc339b Revert "Revert "Revert "e_main_idler_freeze/thaw - disable - this causes no end of wierdnesses"""
This reverts commit 91b3f2e0e1.

revert wars part 4: the blizzard blitz!

the main point of freezing idlers here was not, in fact, to optimize, but to block an infinite loop which pegged the cpu until screensaver ended. this solution should be less issue-prone for the one person who had issues with the previous fix.
2014-02-05 13:22:42 -05:00
Carsten Haitzler 91b3f2e0e1 Revert "Revert "e_main_idler_freeze/thaw - disable - this causes no end of wierdnesses""
This reverts commit 3067f600ee.

revert wars! - i keep hitting problems - the one i still see is that i
come back to a machine that has blanked for a while - i launch some
app (terminology, sylpheed, chromium - doesn't matter) and no window
appears. psorcess is running. no matter how many times i launch it ...
no new process appears. this is a major bug. stopping the idler is an
optimization not a necessity.
2014-02-06 01:18:15 +09:00
Mike Blumenkrantz 3067f600ee Revert "e_main_idler_freeze/thaw - disable - this causes no end of wierdnesses"
This reverts commit 231b780996.

despite appearances, this functionality isn't solely for efficiency, and as such I have no plans for it to be removed.
2014-02-03 19:16:11 -05:00
Carsten Haitzler 231b780996 e_main_idler_freeze/thaw - disable - this causes no end of wierdnesses
so since this e main idler freeze/thaw i've noticed several times, i
come back to my machine after screen-off time period, i wke it up with
a mouse wiggle or keyboard press and try run terminology - no windwo
appears. i can run it all i want - it never shows up but the processes
are there. i've seen it happen to sylpheed where its fetch window
doesn't appear. i've had myserious menu edje objects on the top-left
with only a single item with no bg. i've had e even unable to restart
on ctrl+alt+end.

so i disabled the idler freeze/thaw as i suspected this is what the
root cause is, and sinc ethen the above problems stopped manifesting.
i can only conclude it's a deep and nasty bi-product of stopping the e
main idler, so don't do it. :) better be a bit less efficient than
buggy. either way setting manual rendering and dropping the animator
framerate should do almost all the things needed anyway.
2014-02-04 08:08:20 +09:00