feb1c57dde
NetworkManager frequently refreshes the list of available access points. For some reason this often ends up removing some or all access points only to add them back in a later refresh later. With the exception of the currently connected access point, which is never removed. When all access points of a WirelessNetwork have been removed, it gets destroyed by NMWirelessDeviceItem::_removeAccessPoint(). This however does not happen for the currently connected network due to the always present access point. If this network now happens to consist of multiple access points, the "unused" NMAccessPoints will get removed and added in these refreshes, without the WirelessNetwork getting destroyed. Whenever such an unused access point is added, due to the use of signal tracking this leaks the NMAccessPoint and SignalTracker until the WirelessNetwork is destroyed. However when the NMWirelessDeviceItem is destroyed, for example due to suspending, it stops tracking access point changes, ensuring that the condition for the WirelessNetwork being destroyed can not occur anymore. Even with just two access points, such as can be found in 2.4GHz+5GHz home routers this issue leaks hundreds of NMAccessPoints and SignalTrackers per day. As well as a small number of WirelessNetworks which are also kept alive by the SignalTrackers. To fix this disconnect from the access point when it gets removed and destroy all remaining networks when the NMWirelessDeviceItem is destroyed. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2652> |
||
---|---|---|
.gitlab/issue_templates | ||
.gitlab-ci | ||
.settings | ||
data | ||
docs/reference | ||
js | ||
lint | ||
man | ||
meson | ||
po | ||
src | ||
subprojects | ||
tests | ||
tools/build | ||
.eslintrc.yml | ||
.gitignore | ||
.gitlab-ci.yml | ||
.gitmodules | ||
.jscheckignore | ||
config.h.meson | ||
COPYING | ||
gnome-shell.doap | ||
HACKING.md | ||
meson_options.txt | ||
meson.build | ||
NEWS | ||
README.md |
GNOME Shell
GNOME Shell provides core user interface functions for the GNOME desktop, like switching to windows and launching applications. GNOME Shell takes advantage of the capabilities of modern graphics hardware and introduces innovative user interface concepts to provide a visually attractive and easy to use experience.
For more information about GNOME Shell, including instructions on how to build GNOME Shell from source and how to get involved with the project, see the project wiki.
Bugs should be reported to the GNOME bug tracking system. Please refer to the Schedule wiki page to see the supported versions.
Contributing
To contribute, open merge requests at https://gitlab.gnome.org/GNOME/gnome-shell.
Commit messages should follow the GNOME commit message
guidelines. If a merge request
fixes an existing issue, it is good practice to append the full issue URL
to each commit message. Try to always prefix commit subjects with a relevant
topic, such as panel:
or status/network:
, and it's always better to write
too much in the commit message body than too little.
Default branch
The default development branch is main
. If you still have a local
checkout under the old name, use:
git checkout master
git branch -m master main
git fetch
git branch --unset-upstream
git branch -u origin/main
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
License
GNOME Shell is distributed under the terms of the GNU General Public License, version 2 or later. See the COPYING file for details.