Private fork of https://github.com/awesomeWM/awesome
8c0a83f5ca
While drawing the wibox, the C core builds up a list of widgets and their associated geometry. This list consists of widget_node_t objects and is constructed like this (This is from luaA_table2widgets()): widget_node_t w; p_clear(&w, 1); w.widget = luaA_object_ref_item(L, idx, -1); widget_node_array_append(widgets, w); After we are done with this list of widget nodes, it is freed via wibox_widget_node_array_wipe(). However, wibox_widget_node_array_wipe() passed "&w" to luaA_object_unref_item() while it should have used "w.widget" (which is what was returned from luaA_object_ref_item()). This made the unref fail and the wibox was carrying around a reference to this widget forever. This was effectively a memory leak. Signed-off-by: Uli Schlachter <psychon@znc.in> |
||
---|---|---|
build-utils | ||
common | ||
icons | ||
lib | ||
luadoc | ||
manpages | ||
themes | ||
utils | ||
widgets | ||
.gitignore | ||
AUTHORS | ||
BUGS | ||
CMakeLists.txt | ||
LICENSE | ||
Makefile | ||
PATCHES | ||
README | ||
STYLE | ||
awesome-version-internal.h.in | ||
awesome.c | ||
awesome.desktop | ||
awesome.doxygen.in | ||
awesome.h | ||
awesomeConfig.cmake | ||
awesomerc.lua.in | ||
banning.c | ||
banning.h | ||
button.c | ||
button.h | ||
client.c | ||
client.h | ||
color.c | ||
color.h | ||
config.h.in | ||
dbus.c | ||
dbus.h | ||
draw.c | ||
draw.h | ||
event.c | ||
event.h | ||
ewmh.c | ||
ewmh.h | ||
font.c | ||
font.h | ||
globalconf.h | ||
hooks.c | ||
image.c | ||
image.h | ||
key.c | ||
key.h | ||
keygrabber.c | ||
keygrabber.h | ||
luaa.c | ||
luaa.h | ||
mouse.c | ||
mouse.h | ||
mousegrabber.c | ||
mousegrabber.h | ||
property.c | ||
property.h | ||
root.c | ||
screen.c | ||
screen.h | ||
selection.c | ||
selection.h | ||
spawn.c | ||
spawn.h | ||
stack.c | ||
stack.h | ||
strut.c | ||
strut.h | ||
systray.c | ||
systray.h | ||
tag.c | ||
tag.h | ||
timer.c | ||
timer.h | ||
titlebar.c | ||
titlebar.h | ||
wibox.c | ||
wibox.h | ||
widget.c | ||
widget.h | ||
window.c | ||
window.h |
README
awesome ======= awesome is a highly configurable, next generation framework window manager for X. Building and installation ------------------------- After extracting the dist tarball, run: make This will create a build directory, run cmake in it and build awesome. After building is finished, you can install: make install # you might need root permissions Running awesome --------------- You can directly select awesome from your display manager. If not, you can add the following line to your .xinitrc to start awesome using startx or to .xsession to start awesome using your display manager: exec awesome In order to connect awesome to a specific display, make sure that the DISPLAY environment variable is set correctly, e.g.: DISPLAY=foo.bar:1 exec awesome (This will start awesome on display :1 of the host foo.bar.) Configuration ------------- The configuration of awesome is done by creating a $XDG_CONFIG_HOME/awesome/rc.lua file. An example configuration named "awesomerc.lua.in" is provided in the source. Troubleshooting --------------- In most systems any message printed by awesome (including warnings and errors) are written to $HOME/.xsession-errors. If awesome does not start or the configuration file is not producing the desired results the user should examine this file to gain insight into the problem.