still have a problem - cant work in wl drm/kms mode because e still
holds the ownership/lock on the console, but using full efl to draw
the alert and even blink it...
this drops xcb requirement too.
using just evas_gl_new() will lead to almost always using just
software rendering... because often osmesa is not installed and e will
start in software rendering by default until it switches properly
after the wizard. this appropriately checks in an x path vs. wayland
path in different ways as to if we should do gl by default and ALWAYS
offers a checkbox to the user, just the default value/state of that
checkbox depends on what is detected and a user can override.
for fast we probably should look at something like having a multiplier
on edj transitions and set it to 0 to make it instant. this would be
much better and able to apply to ALL effects... so let's remove this
way for now. as for no shaodws and other stuff - moving to wl cant
control CSD and even then it's a theme look ant feel - a "flat theme
withotu any shadows" would just not have them. probably not a checkbox
to have here.
this allows for a shorter timeout when on battery vs when on ac for
backlight dimming. this is actually important so when on ac dimming
can interrupt minimally bur when on battery it can be much more
aggressive.
this moves a bunch of things that were being don after loop starts to
before so they don't interrupt framerate as well as launch a thread
that preloads file(s) - for now just edj theme files so stuff is
pre-cached by the time loop starts later so we don't stall s much
leading to smoother startup/fade in and better framerate. it's really
visible (especially on my rpi3).
we dont need to delay module loading anymore so remove allof this -
priority too shouldn't be necessary as well and was just a workaround.
this remvoes all of that removing some e module api's and module
struct members as well as some global config fields. it also ensures
all config files are up to date as well.
this used to work years ago ... it seems tihave broken. this fixes it
all up to work again so you can bind a move/resize of a window tothe
kbd and then use arrow keys etc. like you used to....
@fix
so this is kind of a hack, but a neat one - defer the object show
until the next loop to skip the time involved in object creation thus
starting nay animation after this has happened.
some intel cpu's only go down to 20%, some down to 10% min state....
so let's do this in lots of 5% to allow for some future cpu's. now
it's not just 0, 25, 50, 75, 100 it's worth making it a real loop to
save on code too. this allows me to actually control the cpu's i see
at the detail level i see they can be controlled at.
so some clients just cant tile due to min size and this leads to
really bad results so pass the problem back to the user to go resize
them up to fit. this probably needs far more extensive layout logic.
the data struct is a tree but perhaps it needs to flatten out into a
table to make layouting more sane. but that's the future. for now be
less bad today.
if we use the util func we do get a title... and als use translation
too for this notification. Also increase timeout so people can read it
and notice it.
if systemd suspended and we hand't triggered it, and desklock on
suspend is enabled, then lock there and then because we need to. of
course you need systemd/logind... but hey... i guess without you live
with less... :) fixes logic hole
@fix
in soem cases a client has no csd and then border l/r/t/b/ are all 0
so artifically keep 1 at 1... to keep cutouts working.
still need to solve blending still being on though.
this stops crashes when e menu si still up when the dbus menu backing
it has changed/gone away... by referencing the dbusmenu to hang about
like a bad smell while the e gui menu is up until it's dismissed. this
fixes a real segv i saw with steam.
@fix
so dropping a bit of overhead/latency for e menus here - this isn't to
the extent of a cache for menu objects/items... but it's just nuking
useless calls to do things not used or that can be done in fewer calls
as well as ordering things to we don't emit events and handle them
multiple times or calc min size multiple times etc. etc. -
adds a test case we can enable for perf testing too.
found a valgrind issue and an input issue all in one... this fixes
that with no more valgrind complaints and input works if e menu is up
whilst desklock kicks in.
@fix
a few problems i found on my rpi's...
1. rpi's retun that they do NO rotations (not even the normal 0 degree
default), so assume 0 degrees if none listed. this makes screen setup
even try and configure things on these kinds of drivers/devices
2. there was a mistmatch of 0, 90, 180, 270 srtyle rotation ints vs
the enum stype ecore drm2 uses. this fixes that so it uses ecore_drm2
considtently as ecore_drm2 expects. this stops output becomeing odd.
3. also seemingly we forgot to set the max mouse region based on res.
re-enable that commented out function.
now i can change res on my rpi3 and rpi4 in wl mode and it works right...
hooray!
we never told users before. we should. this would sovle some issues
i've seen of people saying that closing the lid doesn't work with e
and they didn't install acpid (even though packages often recommend it).
this improves usability.
EFL 1.23 changed API with regard to pointer device capabilities, so we
need to adjust API usage here based on efl version.
Original patch from bu5hm4n (Marcel Hollerbach)
Summary: Original patch from ApBBB (Apostolos B.) slightly modified by
me to fix the commit message
Test Plan: Compile> run E on wayland > log out >look at the command line.
Reviewers: devilhorns
Reviewed By: devilhorns
Subscribers: ManMower
Tags: #enlightenment-git, #wayland
Differential Revision: https://phab.enlightenment.org/D9069
be both explicit in killing it off on shutdown as well as using die
with parent flags as well. this seems ot have fixed or reduced the
"system cant shut down some job still alive in some session" problem.
@fix
various errors we have are not actual errors but mostly information or
debug or status messages, so don't use ERR or just don't do the thing
that triggers it as it's useless. This leads to a less
noisy/error-like start output. cleaner for a release for sure.
so when e was e.g. shutting down the system it'd sometimes - or all
the time, restart and not shut down. this fixes that. e was being sent
a HUP signal while doing this causing e to go "ooh HUP - i shall
restart" which si what daemons without a controlling tty do with
signals commonly. this isn't what we want from e though in this case,
so delay itby a bit and ignore if we're in the process of logging
out/halting etc.
this really only affects wayland mode.
@fix
we'd have corrupted env vars with the alloca code we had to store the
env var, so always malloc it at all times. as we won't (likely) be
calling env_set() multiple times for the same environment we won't be
leaking, and at worst - not very much at all.
@fix
so a parent transient shows 2 dialogs... both are transient for the
parent. the newsewst one gets stacked below the older one. this leads
to really bad things like a new "are you sure" or "have an error"
modal dialog is not visible and things seemingly freeze in the
client... so stack them in order they are created instead. also handle
transients WITH transients of their own correctly this way too.
@fix
Summary:
This finally got unified. Fix for the CPU gadget within
sysinfo. One API for MP and SP machines.
Reviewers: raster, cedric, stephenmhouston, devilhorns
Subscribers: zmike
Tags: #enlightenment-git
Differential Revision: https://phab.enlightenment.org/D9023
The code used to position client application popup menus did not
account for other anchor positions and gravity values thus causing
menus to popup outside the client application. This patch fixes the
issue by accounting for the missing cases.
ref T7479
As this function is used to check if a given value is negative, the
comparison should check for Less than Zero as a given value of Zero is
not negative
@fix
Summary:
This commit allow the user to control each volumes channels in emixer.
A lock flag is introduced to manage volume as before.
@feature
Reviewers: zmike!, devilhorns, raster
Subscribers: cedric
Tags: #enlightenment-git
Differential Revision: https://phab.enlightenment.org/D7639
Summary:
This patch introduce an alternative to suspend on blank.
Hibernate on blank.
@fix T1886
@features
Reviewers: zmike!, devilhorns
Subscribers: cedric
Tags: #enlightenment-git
Maniphest Tasks: T1886
Differential Revision: https://phab.enlightenment.org/D7602
so often enough i find e_alert is hung and you have to kill it to get
e back. this ends upo exiting and logging you out. this is not good.
the defaul should be to restart not to dump you out and lose
everything. so switch these around to be more user-friendly.
on the cards is to redo e_alert to be simpler (use full efl stack) and
thus hopefulyl be reliable in wl mode etc.
it just does nothing but list colorclasses from the theme. can't edit
them or see them. no point having it there. this should get fixed up
later, but for now - disable it.
when u select something from the favorites on the left it should
always affect the content of the current window, not open a new one -
this would happen if u switch mode to open new windows from the default.
this fixes that.
Summary: On wayland there is no need for a Lost Windows option in the menu. So remove that.
Test Plan: Compile and run on wayland.
Reviewers: raster, bu5hm4n, devilhorns
Subscribers: cedric, zmike
Tags: #enlightenment-git
Differential Revision: https://phab.enlightenment.org/D8804
it isn't obvious you should flip back once u press a button to pair or
unpair or connect etc. you you can see the pair requests etc. that are
displayed in normal mode, not flipped mode.
a custom name+class meant the comp styling didnt work right for the
evry window popped up from the gadget. this fixes it to at least work
right as opposed to be missing a comp style.
Summary:
This patch refactors _drm2_randr_apply inside the wl_drm module in
order to support multiple outputs and to fix issue of rotation not
working
ref T7690
Reviewers: raster, cedric
Subscribers: cedric, zmike
Tags: #efl, #do_not_merge, #enlightenment-git
Maniphest Tasks: T7690
Differential Revision: https://phab.enlightenment.org/D8117
Summary:
The mixer gadgets suffer of a bad design between old and new gadget infra.
This commit refactorize the mixer backend to get only one instance
between old and new gadget. This resolve many problems as e_client_volume
integration or the default_sink choosen in one of this modules.
Now it will be easier to maintain this code and better support when we will
remove old gadget infra.
Reviewers: zmike, devilhorns, stephenmhouston
Reviewed By: zmike
Subscribers: cedric
Tags: #enlightenment-git
Differential Revision: https://phab.enlightenment.org/D7718
i didn't notice, but if you delete all windows on a desktop then no
keybinding work. i needed t use my commented out workaround actually
and then a bit. @fix
it seems to create override-redirect popup windows that it FOCUSES
instead of grabbking the kbd like most other menu windows
so this causes the parent window to lose focus in a way that then
causes the popups to dismiss instantly.
@fix
windows would vanish at times (eg dnd into an empty desktop in the
pager). this was pretty disconcerting and a problem, so this fixes it
with a bit of a sledgehammer, but it fixes it.
@fix
visually when u start to drag a window in pager it raises because of
dnd... so raise the real window too so they match. it looked weird
otherwise.
@fix
Summary: This fixes issues where erroneous udev detections of batteries are included. @bu5hm4n and I both have had issues where udev thinks we have two batteries because our hid/touchscreens report a battery even though they are not accurate. The problem is batman will then think there are two batteries and calculate battery percentage based off both batteries. For instance if the laptop battery is 100% and it is detecting this phony hid battery, the result is batman thinks you are at 50% battery life. This also fixes the battery removal code which should only remove the battery with the syspath the function is called with. The code was actually removing every single battery.
Test Plan: You have to have a device that udev reports two batteries for when there aren't two. It should be harmless to not include batteries that have never been charged, have no charge, and have unknown for their status.
Reviewers: bu5hm4n, raster, zmike!, devilhorns
Reviewed By: raster
Subscribers: cedric, bu5hm4n
Tags: #enlightenment-git
Differential Revision: https://phab.enlightenment.org/D7736
Summary:
This commit bring the support to set a profile on audio hardware via
pulseaudio. You are now able to configure the output of your audio
hardware via emixer without the help of pavucontrol.
@fix T3127
Reviewers: zmike!, devilhorns
Subscribers: cedric
Tags: #enlightenment-git
Maniphest Tasks: T3127
Differential Revision: https://phab.enlightenment.org/D7569
so i've been seeing this thing where inputs are deleted and then the
sink is appropriately deleted from clients but not all the client
windows it could have been on. the problem seems to manifest if
multiple windows come from the same app playing audio so the sink may
be assigned to only 1 window not all of them.
this seems to nuke the segv as the sink/input was being left dangling on a
window due to the logic in the add/del handling to give up when it finds the
first window target and not all of them.
so after a day or so of testing my segv's are gone. yay!
@fix.
the callback uses a subset of the arguments (taking advantage that our
first arg is void * data) so it can re-use across callback types. void
* makes this case not complain as oposed to casint to a specific fn
sig type from another.
Summary:
Now the time in blanking setup could be increased to 23 hours 59 minutes and
59 seconds.
@fix T3589
Reviewers: zmike, devilhorns
Reviewed By: zmike
Subscribers: cedric
Tags: #enlightenment-git
Maniphest Tasks: T3589
Differential Revision: https://phab.enlightenment.org/D7586
Summary:
We move the creation of the popup to a timer to let double left click
event occur. This timer is set to the current double click time value.
@fix T354
Reviewers: zmike, devilhorns
Reviewed By: zmike
Subscribers: cedric
Tags: #enlightenment-git
Maniphest Tasks: T354
Differential Revision: https://phab.enlightenment.org/D7568
Summary:
As the pulseaudio sink could be created before the window, we list
sink_inputs from pulseaudio on client add event. This make to not miss
an association and provide the volume control feature as expected.
Reviewers: zmike, devilhorns
Reviewed By: zmike
Subscribers: cedric
Tags: #enlightenment-git
Differential Revision: https://phab.enlightenment.org/D7559
i got a whole mountain of eo invalid obj complaints from deskmirror
even on startup. the backtraces were long, but they all ended in
comp_object being invalid or null. it seesm deskmiror wasnt properly
tracking the deletion of comp_object outside and that led to this. i
simply set it up once and deleted it where it is no longer referenced
and all is good now. this may possibly in theory have led to odd bugs
but thanks to eo - unlikely.
@fix
Summary:
Animator was crashing due to invalid memory access.
This resolves this problem.
Test Plan:
* Add new gadget pager to desktop/bryce.
* Move window within pager boundaries.
* Finish window drag within pager.
* CRASH of animator thread (or worse).
* Apply patch.
* Use new peger without fear of disaster.
Reviewers: raster, zmike, cedric, stephenmhouston, devilhorns
Reviewed By: zmike
Tags: #enlightenment-git
Differential Revision: https://phab.enlightenment.org/D7536
Summary:
Moving _xdg_data_dirs_augment call to earlier in
initalisation process. Currently first-run will
leave XDG_MENU_PREFIX broken, thus the application
menu will be empty in E.
Seems eio_init might be the culprit.
Moved to above eio_init.
Test Plan:
* Launch E from X from a console (startx)
* Check application menu (empty).
* Apply patch.
* Launch E from X from a console (startx)
* E's Application menu should be populated.
Related to https://phab.enlightenment.org/D7534
Reviewers: #committers, raster, cedric, zmike, devilhorns
Reviewed By: #committers, zmike
Tags: #enlightenment-git
Differential Revision: https://phab.enlightenment.org/D7535
Fix a small issue with slider format value for Wayland mouse
acceleration display. This allows some finer grained control over
pointer acceleration under Wayland
Wayland mouse acceleration uses different values (via libinput) than
X11 does. As such, we need to check the compositor type when creating
the Mouse Input config dialog and adjust values accordingly.
ref T7534
@fix
so there are a bunch of nasties that bluez itself doent take care of -
like rfkill. some devices (many i seem to find) have rfkill enabled by
default at boot. the gui which select power on or off is largely
useless as asking bluze to do this has no effect or fails because a
separate rfkill subsystem is forcing things off. this is bizarre that
bluez doesnt take care of it, but since it doesn't, we hve to. we
already swizzled rfkill when u toggle the power checkbox, but not at
init power on on loging (based oon last known power state of the bt
adapter that was saved in config). i found the log saying power on
error due to rfkill, so adding an explicit rfkill unblock should...
help. and then if you have bt powered on - next boot it should be too.
power it off if you dont want ti on. then it will be explicitly
powrred off at init/boot/login.
i added 2 more device specific options, so i had to move all of the
device controls to an expandable button set. it's not brilliant
actually. the icons are poor and these probably should become toggle
like states rather than a button with an action. it's just not that
intuitive. this i think needs more theme styles in elm core theme
though, so for now keep what's there. but this was necessary due to
the ever expanding set to keep space usage sane.
now the 2 features are "force connect" for any device that is
discovered and responds to pings - connect to it if not connected.
this seems to not always work and maybe this should eventually be
removed, but this leads to there needing to be config per device so we
now have config storage for that like adapters.
the other feature which is much more interesting is the unlock
feature. this means if that bt device is around and responds to pings,
e will unlock (and only explicit manual locking will lock it), but
when that bt device stops responding to pings, e will lock. you could
use your phone, or smartwatch or any other bt device you have on your
all the time as some unlock device.
this required the fixing of the l2ping support in e_sys and i've fixed
it to properly work now and added an optional timeout value as input.
the unlock feature uses this and it pings bt devices on a frequency
that depends on e's powersave state which is dependent on if on ac, or
battery and what battery level is if you have the battery module
running. a handy feature to have just there at the click of a button.
i've kept the printf logging in for now so people trying it out get
some semblance of logging and state so they could figure out why
things are doing what they do and maybe debug it more easily.
it wasn't working. first response may not be a 200 ident so keep
looking for them. also send a bit more than 1 byte to be sure, and
chekc the response is what we sent to be sure. also enforce a timeout
(10sec here) where we give up so it doesn't hang possibly forever.
all in all l2ping in e_sys works again. now. in the process i added a
timeout param too.
@fix
the auto power-on wasn;'t working. what the module did was power the
bt adapoter on if the user last powered it on by default hen it
sees/detects the adapter. if the user last powered it off it will do
the reverse (power it off too). this is kind of a workartound because
bluez5 itself wont power the bt on.
we had multiple drag resistance values here - unify with 1 and make it
work, now it gets it right deciding between dnd and a long press menu
etc. etc. ...
while also still using the new menu system.
This binding check/action handler was removed, because I am assuming
that the presumption was that the only binding/action that was handled
was showing a menu? This was actually not the case. This
binding/action handler handled resizing, moving, dragging, etc... on
gadgets on the desktop and in the gadget bar. Without it using gadgets
was near impossible on the desktop and inconvenient on the gadget bar.
The longpress menu was only getting cancelled if a drag occured at a
distance of least 25 pixels. This is due to the code checking for horizontal drag
distance + vertical drag distance >= 25. I believe the intent here was
to cancel drag if >= 5 vertically or >= 5 horizontally, not both. Most
drags wouldn't be 25 pixels in a single gadget such as pager, and a 25
pixel drag would not happen quick enough to offset longpress. This
commit also lowers the drag cancelling threshold to 3 pixels, not 5.
This was obviously wrong, it was comparing
the geometry of the whole gadget instead of
the icon one. Now the menu doesn't always
act on the first icon ;)
This is how all the other new gaget are doing the
config popup, I copied from time gadget.
I really think the config popup creation (and size/show)
should be handled by E, not by each gadget. ATM this
code is repeated in every gadget.
hold mode is where if u hold mosue down menu stays only as long as
mouse is held down... then dismissed on up. doesnt work well when youa
re trying to overload a single click with longpresses and so on -
optionally turn it off. used in gadgets.
now right click on any gagdte in bryce and they ALL have a menu that
allows removal of the gagdte bar or the gadget as well as access to
gadget settings AND the ability for gadgets to extendthis menu like
lunhcer does per icon. now it's standard behavior everywhere which is
much easier to use and discover. it also removes code from every
gadget to do their own "button 3" handling as its handled centrally
making the code in gadgets simpler.
this is part of my effort to improve usability (mostly discoverability
and accessibility of settings/features).
also long press left mouse gets u gadget right click menu
this has to move many modules/gadgets actions to mouse up instead of
mouse down so the bryce has a chance to trap the events first and set
hold flags. but now long press for 0.5 sec and bryce menu come sup
(with left mouse .. so touch friendly).
in addition move context menu hanbdling to e_gadget instead of in
bryce and in e_gadget. a context callback is called so different
systems can still do different things. this should probably change to
always pop up a mnenu and simple call populate callbacks for site
owner specific content.
all in all it makes the new gagdtes more consistent, easier to use
(without a right mouse button), doesn't need special action bindings
etc. etc.
bryce was missing the ability to espose orientation to the child
items, so they were the same irrespective of orientation.
i also notice that orientaiont is a simple horiz/vert ... so no
ability to special case corners etc. in the theme... :( not sure if
this should be changed.
also fix the aspect calculation to round up correctly to avoid
off-by-1 pixel gaps i noticed with the pager - necessary for the
styling in the flat theme to be right.
but is not explicitly linking against it. Previously this was not
discovered due to a wrong flag in elementaries pkgconfig. However - the
new .pc file of elementary does not contain dl anymore (as no library
_needs_ to link against it when using elm). So we need to link this here
explicitly
Differential Revision: https://phab.enlightenment.org/D7150
Summary:
Previously if you had different wallpapers on different screens
then came back to the settings and changed the wallpaper ALL
screens would be set, and the painstaking work of setting
various wallpapers across desktops/screens is lost instantly.
This patch avoids this annoyance.
Reviewers: raster, zmike!, devilhorns
Reviewed By: raster
Subscribers: cedric
Tags: #enlightenment-git
Differential Revision: https://phab.enlightenment.org/D7141
Summary:
Prevent wayland clients from being able to destroy the compositor's
singleton keymap by making individual copies for each client.
Reviewers: zmike, devilhorns
Reviewed By: zmike, devilhorns
Subscribers: cedric
Tags: #enlightenment-git
Differential Revision: https://phab.enlightenment.org/D6861
this may be causing stale clients to stary in the tasks list. this
might fix it, but i'm not sure as i can't reproduce.
adresses T7223 or at least mhy comment on the valgrind log
@fix