1
0
mirror of https://github.com/Llewellynvdm/conky.git synced 2024-11-15 09:44:04 +00:00

Check if a font has been loaded before instead of adding it possibly multiple times.

In some configurations conky terminated after several minutes
with the message: "Conky: you don't need that many fonts, sorry."
This commit is contained in:
Damian Lukowski 2014-05-01 10:50:01 +02:00
parent e8e21a9ff9
commit 0fb5d65b22

View File

@ -330,6 +330,15 @@ void new_gauge(struct text_object *obj, char *p, int p_max_size, int usage)
} }
#ifdef X11 #ifdef X11
int find_font(char *name)
{
int i;
for (i = 0; i < font_count; i++)
if (strncmp(name, fonts[i].name, DEFAULT_TEXT_BUFFER_SIZE) == EQUAL)
return i;
return 0;
}
void new_font(char *buf, char *args) void new_font(char *buf, char *args)
{ {
if ((output_methods & TO_X) == 0) if ((output_methods & TO_X) == 0)
@ -337,6 +346,12 @@ void new_font(char *buf, char *args)
if (args) { if (args) {
struct special_t *s = new_special(buf, FONT); struct special_t *s = new_special(buf, FONT);
int index;
if (index = find_font(args))
{
s->font_added = index;
return;
}
if (s->font_added > font_count || !s->font_added || (strncmp(args, fonts[s->font_added].name, DEFAULT_TEXT_BUFFER_SIZE) != EQUAL) ) { if (s->font_added > font_count || !s->font_added || (strncmp(args, fonts[s->font_added].name, DEFAULT_TEXT_BUFFER_SIZE) != EQUAL) ) {
int tmp = selected_font; int tmp = selected_font;