When creating the data manager source, passing an id of 1 overwrites
the wl_display's id in the map, causing crashes the next time the
client tries to interact with that object. The client in this case
is Xwayland. Bad things happen.
Instead pass 0 which just chooses an available map slot.
Fix T5738
This cleans up how sysinfo manages object vs thread lifetimes. If thread is still alive dependent on aspects that need to be freed in the gadget removal process, it defers that cleanup from the remove callback to the thread end callback. As for the combination sysinfo gadget, each gadget inside of sysinfo will set a done flag alerting that the cleanup of the combination gadget can happen once all threads are done.
This fixes T5694
in the case where the desklock timer was longer than the blank timer,
this would permanently break input
input is still broken for the duration of the screen blank animation and
any time the screen is blanked
we have some visual glitches i'm on a mission to fix... and the above
is one of those. timeout for lock should begin after screen has gone
black first.
See also ac92ff5256.
- eina_strbuf_string_get() returns the internally stored string as
a const char *, and does not free the strbuf itself
- eina_strbuf_string_steal() returns the internal string as a
char *, giving ownership to the caller, and frees the strbuf
itself
- eina_stringshare_add() takes a const char * as input and makes a
copy of the string
As a consequence, ss_add(sb_string_steal()) leaks the internal
string from the strbuf, while ss_add(sb_string_get()) leaks the
strbuf structure.
A one liner here would require either an eina_slstr based API or
an API in stringshare to take ownership of a given string. Both
would be useful APIs :)
This reverts commit 7bc179da5a.
this now totally broke the glitch fix and it now animates in reverse
on suspend and does nothng on resume... testing might be a good idea
beforehand...
this requires we have to force dpms on to reduce power. to avoid
glitches with the pointer staying around in x we need to support
suspending it too so it hides cleanly like the screen dims or undims.
also use the new powersave freeze mode to do this.
note that i've tested this on s3 supporting laptops and non-s3 and it
"works for me". it may require more testing and work. there is more to
power saving than just this as well but for now that's out of scope as
you have to mess with linux device autosuspend timeouts and a bunch
more (wowlan ... blahblah).
i need to find the source of the intermittent wakeups too in e. there
is a long lived timeout (8-ish seconds?) but more specifically e keeps
waking up from fd's and then reading /sys stuff about battery - some
event is causing us to do this... maybe to suspend this or make
battery checking very rare when in freeze mode (or screen off) etc.
so this fixes some glitches as well as supports a new way of sleeping
"alive" when hardware literally doesnt support normal s3 sleep... so
kind of a fix with a feature.
so new laptops now seem to no longer support S3 sleep. sleeping is
done basically by going as idle as possible. you can ask the kernel to
freeze execution BUT this seems to use about the same power as staying
alive in my tests. to support this add 2 things:
1. a FREEZE powersave mode which implies we're alive but want to
really stay as idle as absolutely possible.
2. powersave aware sleep functions that replace the usleeps in threads
so they can switch from being super sleepy when in freeze mode to
normal.
Under some circumstances we can defer frame callbacks forever for clients
that are only visible on desk mirrors.
I'm not certain those circumstances should actually occur (Ref T5678) but
at least for now this is a trivial and harmless workaround.
Fix T5654
partially reverts 7e05eff3e3
This was causing problems when destroying some xdg v6 clients.
if weston-simple-shm was killed while not on the current desktop
it would remain on deskmirrors.
convert to/from utf8 plain/markup in e widget entry wrapper.... this
fixes broken results if you enter escapable text like " or < or > or &
... etc.
@fix
it seems like this is a good place to try, and this seems to resolve
some render updating issues on restart, such as with maximized chrome
windows
ref T5599
in the case where an object is being shown before it has been moved or
resized, a move operation will trigger a series of callbacks which force the
compositor to attempt an illegal operation (recursive show before resize)
fix T5521
resizing objects triggers clip resizes and further event feeding which
can propagate mouse events such that clients try to resize themselves
during the update phase, resulting in illegal compositor behavior
this is now handled by the event grabber. many callbacks on this
object are due to clip changes instead of genuine mouse movements,
meaning that processing events can lead to further resizes during a
render cycle