swaybar: free the right item during tray destruction
Also added a comment to make more obvious the reason for comparing sni->status[0] == 'N'
This commit is contained in:
parent
140bc2dd5b
commit
b666fc76a6
|
@ -19,7 +19,7 @@
|
||||||
// TODO menu
|
// TODO menu
|
||||||
|
|
||||||
static bool sni_ready(struct swaybar_sni *sni) {
|
static bool sni_ready(struct swaybar_sni *sni) {
|
||||||
return sni->status && (sni->status[0] == 'N' ?
|
return sni->status && (sni->status[0] == 'N' ? // NeedsAttention
|
||||||
sni->attention_icon_name || sni->attention_icon_pixmap :
|
sni->attention_icon_name || sni->attention_icon_pixmap :
|
||||||
sni->icon_name || sni->icon_pixmap);
|
sni->icon_name || sni->icon_pixmap);
|
||||||
}
|
}
|
||||||
|
@ -396,7 +396,7 @@ uint32_t render_sni(cairo_t *cairo, struct swaybar_output *output, double *x,
|
||||||
icon_size = actual_size < ideal_size ?
|
icon_size = actual_size < ideal_size ?
|
||||||
actual_size*(ideal_size/actual_size) : ideal_size;
|
actual_size*(ideal_size/actual_size) : ideal_size;
|
||||||
icon = cairo_image_surface_scale(sni->icon, icon_size, icon_size);
|
icon = cairo_image_surface_scale(sni->icon, icon_size, icon_size);
|
||||||
} else { // draw a sad face
|
} else { // draw a :(
|
||||||
icon_size = ideal_size*0.8;
|
icon_size = ideal_size*0.8;
|
||||||
icon = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, icon_size, icon_size);
|
icon = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, icon_size, icon_size);
|
||||||
cairo_t *cairo_icon = cairo_create(icon);
|
cairo_t *cairo_icon = cairo_create(icon);
|
||||||
|
|
|
@ -79,7 +79,7 @@ void destroy_tray(struct swaybar_tray *tray) {
|
||||||
finish_host(&tray->host_xdg);
|
finish_host(&tray->host_xdg);
|
||||||
finish_host(&tray->host_kde);
|
finish_host(&tray->host_kde);
|
||||||
for (int i = 0; i < tray->items->length; ++i) {
|
for (int i = 0; i < tray->items->length; ++i) {
|
||||||
destroy_sni(tray->items->items[0]);
|
destroy_sni(tray->items->items[i]);
|
||||||
}
|
}
|
||||||
list_free(tray->items);
|
list_free(tray->items);
|
||||||
destroy_watcher(tray->watcher_xdg);
|
destroy_watcher(tray->watcher_xdg);
|
||||||
|
|
Loading…
Reference in a new issue