Commit Graph

38 Commits

Author SHA1 Message Date
Mike Blumenkrantz 4e3ea4f6b3 add some internal functions for triggering fake screen hotplug events
debugging is fun
2016-12-09 11:52:03 -05: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
Yomi 0dc33a5aeb Fix misspellings in E's files.
Summary: Fix misspellings and spaces in E's files.

Reviewers: zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2676
2015-06-16 16:10:21 -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
Carsten Haitzler 054adb6351 e - randr - handle missing relative display and use priority for zone
this makes highest priority screen the lowest (0) zone. this also
handles missing screesn that you are relative "of". missing clones are
not working atm. also zone reconfigure moves windows now too
2015-02-13 19:24:31 +09:00
Carsten Haitzler 33d4531f1d e - rewrite randr code entirely. core and dialog. dialog is basic atm
the dialog for now is simple and lets you just raw edit the properties
per screen in a dialog. nothing fancy. not user firendly. but it works.

the randr core has been totally rewritten and tested against a range
of drivers and setups before even getting a commit. it works solidly
and configures screens reliably now. drivers tested:

nvidia
intel
radeon

some drivers still are unreliable in terms of delivering plug/unplug
events for outputs (both intel and radeon are flakey - nvidia is solid
and reliable). so to fix this there is now a screen redo action you
can bind to a hotkey or something and have e re-evaluate current
screen setup and apply ny pending config if needed.

also to make reconfiguring prettier the screen is faded to black
first, then configured, then faded back in. some drivers work
flawlessly with this, others still flicker some garbage.

i admit - i haven't tested nouveau, but my general take on this is the
randr code is now in far better shape than where it was (minus pretty
and easy dialog). the dialog can be done next, but i'd like to get the
core in now for more testing.

@fix
2015-01-25 22:50:23 +09:00
Mike Blumenkrantz ec1cd25cfe rename E19* defines/texts to just E so they don't need to keep being updated 2014-09-09 12:30:50 -04:00
Mike Blumenkrantz 86656e4df9 compositor rewrite / charlie-foxtrot situation
huge fustercluck commit because there wasn't really a way to separate out the changes. better to just rip it all out at once.

* compositor and window management completely rewritten. this was the goal for E19, but it pretty much required everything existing to be scrapped since it wasn't optimized, streamlined, or sensible. now instead of having the compositor strapped to the window manager like an outboard motor, it's housed more like an automobile engine.

** various comp structs have been merged into other places (eg. E_Comp_Zone is now just part of E_Zone where applicable), leading to a large deduplication of attributes

** awful E_Comp_Win is totally dead, having been replaced with e_comp_object smart objects which work just like normal canvas objects

** protocol-specific window management and compositor functionality is now kept exclusively in backend files

** e_pixmap api provides generic client finding and rendering api

** screen/xinerama screens are now provided directly by compositor on startup and re-set on change

** e_comp_render_update finally replaced with eina_tiler

** wayland compositor no longer creates X windows

** compositor e_layout removed entirely

* e_container is gone. this was made unnecessary in E18, but I kept it to avoid having too much code churn in one release. its sole purpose was to catch some events and handle window stacking, both of which are now just done by the compositor infra

* e_manager is just for screensaver and keybind stuff now, possibly remove later?

* e_border is gone along with a lot of its api. e_client has replaced it, and e_client has been rewritten completely; some parts may be similar, but the design now relies upon having a functional compositor

** window configuration/focus functions are all removed. all windows are now managed solely with evas_object_X functions on the "frame" member of a client, just as any other canvas object can be managed.

*** do NOT set interceptors on a client's comp_object. seriously.

* startup order rewritten: compositor now starts much earlier, other things just use attrs and members of the compositor

* ecore_x_pointer_xy_get usage replaced with ecore_evas_pointer_xy_get

* e_popup is totally gone, existing usage replaced by e_comp_object_util_add where applicable, otherwise just placed normally on the canvas

* deskmirror is (more) broken for now

* illume is totally fucked

* Ecore_X_Window replaced with Ecore_Window in most cases

* edge binding XWindows replaced with regular canvas objects

* some E_Win functionality has changed such that delete callbacks are now correctly called in ALL cases. various dialogs have been updated to not crash as a result

comp files and descriptions:

e_comp.c - overall compositor functions, rendering/update loop, shape cutting

e_comp_x.c - X window management and compositor functionality

e_comp_wl.c - Wayland surface management and compositor functionality

e_comp_canvas.c - general compositor canvas functions and utilities

e_comp_object.c - E_Client->frame member for managing clients as Evas_Objects, utility functions for adding objects to the compositor rendering systems

additional authors: ivan.briano@intel.com

feature: new compositor

removal: e_border, e_container, e_popup
2014-01-14 20:22:02 -05:00
Mike Blumenkrantz bc7883927e +e_xinerama_fake_screens_exist 2013-08-05 08:06:49 +01:00
Mike Blumenkrantz 5b3408bb85 s/E17/E18/ 2013-06-18 15:44:57 +01:00
Mike Blumenkrantz 9e8e755cdf formatting: all at once
SVN revision: 82625
2013-01-11 10:34:29 +00:00
Vincent Torri c3b0637802 e17: whitespaces--
SVN revision: 72561
2012-06-21 06:19:43 +00:00
Mike Blumenkrantz f784bff213 replace e17 logging "system" with custom eina log domain
SVN revision: 72089
2012-06-13 15:17:23 +00:00
Mike Blumenkrantz 89da028fe0 formatting
SVN revision: 71577
2012-05-31 10:12:03 +00:00
Carsten Haitzler c2288e4dcf dont re-order screens magically on dynamic screen ad/del vs startup on
the same screen setup.



SVN revision: 70498
2012-04-26 08:31:03 +00:00
Vincent Torri c30aaf8dde e17: remove some shadow variables
SVN revision: 70190
2012-04-15 08:09:56 +00:00
Carsten Haitzler 515819cdb5 make all zone matching agree on the same convention - use zone->num,
not zone->id. zone->id is for matching u to zinerama/xrandr
screens/outputs. e re-sorts based on highest res screens first, lower
res later.



SVN revision: 67951
2012-02-15 04:35:18 +00:00
Gustavo Sverzut Barbieri 6f2213cb25 convert init/shutdown to EINTERN, move some to _update().
Do not abuse the concept of e_*_init(), make them call-once and those
that needed multiple call are renamed to e_*_update(). To make sure
convert them to EINTERN so the symbols are not exported.

Actually I guess too much is exported as EAPI while they should be
EINTERN, but that would require manual investigation, while this patch
was basically created with sed + grep.



SVN revision: 54795
2010-11-22 15:21:32 +00:00
Lucas De Marchi 6638a10e20 FORMATTING
* Remove vim modelines:
 find . -name '*.[chx]' -exec sed -i '/\/\*$/ {N;N;/ \* vim:ts/d}' \{\} \;
 find . -name '*.[chx]' -exec sed -i '/\/[\*\/] *vim:/d' \{\} \;

* Remove leading blank lines:
 find . -name '*.[cxh]' -exec sed -i '/./,$!d'

If you use vim, use this in your .vimrc:
set ts=8 sw=3 sts=8 expandtab cino=>5n-3f0^-2{2(0W1st0



SVN revision: 50816
2010-08-04 16:57:32 +00:00
Sebastian Dransfeld 436b1fa456 Set list to NULL on free
SVN revision: 45481
2010-01-23 11:32:04 +00:00
Sebastian Dransfeld aa4572db97 Switch sort order
We want the leftmost screen to be first

SVN revision: 45480
2010-01-23 11:23:12 +00:00
Cedric BAIL f8c05999e4 * e: Cleanup use of Eina data structure.
Patch from Peter van de Werken <pwerken-e@a-eskwadraat.nl>.


SVN revision: 41916
2009-08-21 15:08:49 +00:00
Christopher Michael c53fd6e204 Use E_NEW, E_FREE and EINA_LIST macros.
SVN revision: 41538
2009-07-29 19:31:41 +00:00
Gustavo Sverzut Barbieri f583aca207 fix xinerama monitor sorting.
xinerama monitor sorting should consider position and not just size.

Patch by manio, modified to handle y axis as well.



SVN revision: 40712
2009-05-17 21:35:01 +00:00
Sebastian Dransfeld 92ff3dab37 Fix callback for list sorting.
SVN revision: 37202
2008-10-27 07:33:21 +00:00
Cedric BAIL 1087de2397 Remove Evas list and replace them with Eina list.
No change for ->next and ->data access right now, as the patch is already
big enough.



SVN revision: 36962
2008-10-22 11:49:33 +00:00
Eric Schuele a6aac74094 In all these whitespace cleanups, I did actually remove a few unused variables, and some dead code.
SVN revision: 32223
2007-10-31 02:41:52 +00:00
Carsten Haitzler c86164c9cc oops +e
SVN revision: 32182
2007-10-28 04:09:08 +00:00
Carsten Haitzler 28874a2843 fake xinerama broken - fixed.
SVN revision: 32181
2007-10-28 04:03:40 +00:00
Carsten Haitzler 2dc7874df7 xinerama support work-infra in for xrandr1.2 and comments as to what is needed.
SVN revision: 32100
2007-10-17 11:06:59 +00:00
Carsten Haitzler d5942ea076 fix xinerama detection to handle bad xinerama info and ignore overlapping
"subset" regions and re-order xinerama screens to skip bad ones and order
them from biggest to smallest.


SVN revision: 32093
2007-10-16 15:34:07 +00:00
sebastid 6a638a7806 Fix EAPI warnings.
SVN revision: 19597
2006-01-07 10:39:46 +00:00
sebastid 7656f2ccd0 Cleanup fake xinerama screens
SVN revision: 17064
2005-09-29 12:13:39 +00:00
handyande ce45d0f7c5 don't need to clean twice
SVN revision: 16705
2005-09-13 10:12:21 +00:00
Carsten Haitzler 245b40b816 fix pager to work when windows are moved from zone to zone :)
add xinerama faking command-line options and help.


SVN revision: 13795
2005-03-19 17:31:42 +00:00
Carsten Haitzler 04d6dae32a more pager cleanups - still not 100% happy with it... but getting there.
SVN revision: 13779
2005-03-18 16:30:49 +00:00
Carsten Haitzler 5c4db9320e centralised xinerama code - now we can put intellligent selection (partly
there) and manual selection into 1 place.


SVN revision: 13645
2005-03-07 09:56:49 +00:00
Carsten Haitzler 3cece5b86b patches for some cleanups...
and i'm moving xinerama handling to 1 central place to fixup bugs in xinerama
detection. its not complete.


SVN revision: 13643
2005-03-07 07:27:52 +00:00