Commit Graph

360 Commits

Author SHA1 Message Date
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 cd7a0e6b64 simplify code for moving windows to other desks: add effect unclipping to e_border_desk_set 2013-11-28 09:43:20 -05:00
Mike Blumenkrantz 408dbec23d set pager_popup name on pager popups 2013-10-14 05:04:01 +01:00
Carsten Haitzler d77faef91b fix pager segv... set active_pd to null if we are emptying pd's! 2013-09-25 12:59:17 +09:00
discomfitor 2f2df6346c fix harmless cast warning 2013-09-06 15:57:28 +01:00
discomfitor c27a0594c0 delete pager popup timer...always. 2013-09-06 15:55:58 +01:00
discomfitor b5c837b61e fix pager visual fade out 2013-09-05 19:01:17 +01:00
Carsten Haitzler cf3c77aefd allow enter/kp enter/space to select a desktop when pager popup is up 2013-08-25 19:29:39 +09:00
Mike Blumenkrantz 71d6c94b10 use e list macros for pager event handlers 2013-08-15 09:46:44 +01:00
Mike Blumenkrantz cf76a4b142 remove redundant pager desk selection for pager popups on flip 2013-08-14 13:46:21 +01:00
Mike Blumenkrantz 517d537dfa don't iterate over pager desks to set active/inactive, this is stupid. 2013-08-14 12:53:03 +01:00
Mike Blumenkrantz 5afa40b352 remove some old pre-comp pager cruft 2013-08-14 12:49:17 +01:00
Mike Blumenkrantz 2f998593e1 fix pager window visibility during drag 2013-07-02 07:59:00 +01:00
Chris Michael 2047bac4b0 Fix klockwork issue: NULL pointer may be dereferenced:
Don't call e_comp_win_effect_set unless we have a valid pager window

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-06-28 14:45:36 +01:00
Mike Blumenkrantz 1837d1c266 fix pager window dragging in pager when comp effects are enabled 2013-06-13 07:30:36 +01:00
Mike Blumenkrantz f5e3f2ea6a unset comp win effect when dragging a window to the current desk 2013-06-12 14:08:27 +01:00
Mike Blumenkrantz 0aa86c902e fix pager popup hide/delete animation 2013-06-12 09:38:46 +01:00
Mike Blumenkrantz 9a24c85571 pager dnd is now significantly more awesome 2013-05-30 09:42:29 +01:00
Mike Blumenkrantz 25c0f38bf6 pager popups no longer allow clicking
deal with it
2013-05-20 08:59:50 +01:00
Mike Blumenkrantz 53330cc2e1 clean up pager desk drag objects 2013-04-18 12:38:39 +01:00
Mike Blumenkrantz 2d5d042979 fix pager dnd icon deletion 2013-02-26 07:27:44 +00:00
Mike Blumenkrantz f36ecd9d3d giant comp rejiggering commit #2: popups are now objects drawn directly onto the compositor canvas with no xwindows of their own
* added a number of new e_comp functions and macros

* options for disabling effects on objects: this option does not currently have any effect

* all modules which used gadcon popups have been adjusted

* all modules which used input windows to detect close events for gadcon popups have been adjusted to use new popup autoclose functionality

* shelves are now always drawn on the compositor canvas, meaning objects will never get clipped by the shelf (ticket #1810)

* shelves no longer have an event object

SVN revision: 84060
2013-02-18 13:43:47 +00:00
Mike Blumenkrantz c48fd0b06d giant commit that wipes all bindi^W^W^Wsplits out binding configs into a separate config domain so they can be more easily copied and so they won't be wiped in the event that primary config is wiped
also splits all binding lists out of e_config: they are now conveniently located in the global "e_bindings" struct


SVN revision: 83544
2013-02-01 10:21:54 +00:00
Mike Blumenkrantz 3bc56a9e5f fix a tremendous number of stringshare leaks
SVN revision: 81532
2012-12-21 10:20:05 +00:00
Massimo Maiurana 9f1d6e067e Store and handle action names correctly. (patch from Igor Murzov)
SVN revision: 81049
2012-12-16 16:58:17 +00:00
Massimo Maiurana f4cd4df207 Make two more messages translatable (patch from Igor Murzov)
SVN revision: 81040
2012-12-16 08:57:55 +00:00
Mike Blumenkrantz a4cb0df4ea prevent double pager settings menus
SVN revision: 80769
2012-12-12 14:56:59 +00:00
Mike Blumenkrantz fde12e4225 simplify pager dnd leave cb
SVN revision: 80654
2012-12-11 12:48:49 +00:00
Mike Blumenkrantz 1ecfd5bb0e don't need to iterate on pager drop move cb
SVN revision: 80636
2012-12-11 09:54:50 +00:00
Mike Blumenkrantz 92cdc69ead typo
SVN revision: 80633
2012-12-11 09:19:27 +00:00
Mike Blumenkrantz d4e3ceb6c2 clean up pager enter dnd event cb
SVN revision: 80632
2012-12-11 09:19:15 +00:00
Mike Blumenkrantz 486c74738d use EINA_LIST_FOREACH in pager
SVN revision: 80631
2012-12-11 09:02:13 +00:00
Mike Blumenkrantz 557b8c3c8d fix pager usage of E_FREE
SVN revision: 80364
2012-12-06 14:12:55 +00:00
Carsten Haitzler 0683ecf7b3 ummm pager - when dragging a whole DESKTOP... dont set a white bg..
theme haqndles this with the pager setup itself.



SVN revision: 79689
2012-11-26 10:13:54 +00:00
Carsten Haitzler 3868f0f91a try avoid null ptr derefs.
SVN revision: 79168
2012-11-12 14:45:59 +00:00
Sebastian Dransfeld 8eacf64412 pager: prevent double pager windows
SVN revision: 78950
2012-11-06 21:31:25 +00:00
Sebastian Dransfeld 436323bf59 e: cleanup layer handling
It seems people put random numbers as layers, so it is better to define
available layer numbers.

This patch also puts popups below fullscreen windows, as it sucks to get
popups during presentations. A better solution is maybe to put popups
above fullscreen, but have a presentation mode to put fullscreen windows
above popups?

SVN revision: 77293
2012-10-02 08:54:35 +00:00
Mike Blumenkrantz dbb6951538 raise borders when dragging to different desks in pager
ticket #1423


SVN revision: 75881
2012-08-30 13:13:51 +00:00
Carsten Haitzler 25cb07dcf9 simplify some stacking code handling.
SVN revision: 75774
2012-08-28 10:25:47 +00:00
Mike Blumenkrantz 2434f5adbe more PATH_MAX cleanups
SVN revision: 75520
2012-08-22 07:32:12 +00:00
Carsten Haitzler 1739590e05 fix wad of focus issues with click-to-focus and alt+tab + fullscreen
windows.



SVN revision: 75399
2012-08-18 04:40:56 +00:00
Mike Blumenkrantz 94e2fc5257 clean up gadget right click menus to stop leaking
SVN revision: 75285
2012-08-15 07:22:04 +00:00
Mike Blumenkrantz 9c281e264f don't invert pager with FLOAT orientation
SVN revision: 75244
2012-08-14 08:41:39 +00:00
Mike Blumenkrantz 08e0a309bd unrevert pager changes, now with more null checks
SVN revision: 75235
2012-08-14 06:35:32 +00:00
Carsten Haitzler 33df11d1cd going to have to do this.. reverties. 1:15am and this commit gets my
e17 to rash instantly on start and leave me with all modules unloaded.
have to revert as its the quickest fix. :)



SVN revision: 75219
2012-08-13 16:18:57 +00:00
Mike Blumenkrantz ea5cfeba4a pager gadget now autocorrects its orientation to vertical when trying to display a pager for a screen with NUMx1 vdesks with gadcon orient: vertical
this makes it look/work differently, but at least the gadget is usable


SVN revision: 75207
2012-08-13 12:30:14 +00:00
Carsten Haitzler 4ea769764a pager fixups...
1. dont use a livethumb resolution OF THE SCREEN! per pager desktop
that means u alloc width*height*4 bytes... u have 6 desktops,
1920x1080 screen... thats 48mb for the backing images at full res. no!
bad bad! so i cut it down to 1/16th of the screen res. ie 1920/16 x
1080/16 for the full rest "livethumb". at least its much more
managable (i woke up to find after an update my e was using an EXTRA
100mb of ram! (2560x1440*4desk + 1920x1200*4desk).
2. dont create the livethumbs at all unless you have the bg preview
on! (i had it off and i still paid the price of the mem usage).
3. make the live preview inverted in the cfg gui - ie enable the live
preview, not disable it.
4. fix theme to preview bg fills the pager base box correctly within
the border bounds.
5. dont enforce aspect handling in livethumb as pager is "master" of
aspect (taken from desktop anyway).



SVN revision: 75154
2012-08-11 04:40:30 +00:00
Mike Blumenkrantz 113448e2ac fixed pager bg previewing to use livethumb and also support animated backgrounds
note: using this with klok WILL slow your system to a crawl


SVN revision: 75102
2012-08-10 13:29:35 +00:00
Mike Blumenkrantz f55b60e3af much more strict checking with pager module to account for cases where a user may be sneaky and set animated wallpapers without pagers loaded or somesuch and have config->enable_live_preview set
SVN revision: 74857
2012-08-03 17:21:31 +00:00
Mike Blumenkrantz 98601e4198 sed -i 's/(E_Gadcon_Client_Class/(const E_Gadcon_Client_Class/g'
SVN revision: 74474
2012-07-27 08:25:22 +00:00