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.
this was pretty old/legacy and looked like it would fall over pretty easily. there's no users and I see no use for it, so it goes bye bye
removals: e_main_idler_before* api
* try to clear up build system for separating out ecore-x
* add #ifdefs for lots of ecore-x stuff
* break out some internal e wl functions for reuse in api
* store wl surface buffers as an inlist
* add protocol-specific client compositor data
** move lots of X client attributes here
* add pixmap type checks to a number of X-specific things, such as grabinput, to block them for non-X clients
* rearrange startup order to work with wayland
* move X screensaver code to e_comp_x
* flag modules still requiring X with -DNEED_X
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
desklock's layer is below the start splash layer, so this can just be shown any time regardless of whether it's enabled. security++
previously the fact that e was restarting could break out of desklocked startup due to how the env variables were set. now there is a new variable which only gets set when the screen is locked which will force lock on startup even during restarts
T681
provide a config upgrade path to version 13 which nulls/frees out
theme config (save memory - but more housekeeping), and that also
copeis ofer all files in ~/.e/e/themes to ~/.elementary/themes so you
don't lose themes you personally have and deletes the old e theme dir
if this succeeds.
also remove all #includes of Elementary.h and Emotion.h from single c
files as they are requirements now and in e.h
also remove theme path vars and code as theme path is no longer used.
now e only uses elementary's theme. this is to stop the bitrot and
forking of e's theme vs the unified elm theme that has everything for
e in it already. this obviously makes elm a requirement of e18 on, and
this also notes that emotion is always in efl these days, so its no
longer an option, and ecore-imf is no longer used as edje does the
entires now itself. in future it'll all be elm.
this is a major unification point for themes for elm and e. this will
need some testing, but everything seems to work day-to-day, but theme
selector is untested.
this also removes the theme selector for splash as that is now simply
unified with the same theme as everything else.
NB: Ecore_IMF (when it uses the wayland module) needs to have
xdg_runtime_dir set. This change ensures that env variable is set
before we init ecore_imf.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
by making a job to delay population we play a race condition game with
initting of other bits of e. this means the comp may or may not have
been filled by the container layer winds before other internal events
and actions start making comp wins and setting layers. this means that
things like e_comp_win_find() for a con->layers[n].win may fail... as
this has yet to be added... and thus.. we crash in startup. it's a
race condition.
so this removed the delay job and makes population of the comp
explicit. it puts the population into the hnds of the e_main init
after a manager has been created and after a container is created, and
thus laer wins created, so it can walk the x window stack correctly,
but before anything else is done. this means that we will be properly
inited at this point without a race condition.
This is needed so that setxkbmap runs before we initialize the wayland
compositor So that wayland clients can use the proper keymap.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
* dnd canvas removed, dnd objects now drawn directly on compositor canvas
* dnd now correctly picks the top-most dnd-receiver location as its drop target instead of just using the first one in the list
* various other small changes to go along with this