Optimize menubar.icon_theme.lookup_icon: do not look twice

This commit is contained in:
Daniel Hahler 2015-10-12 00:18:28 +02:00
parent 7afd8e3179
commit 7fa3dc97c8
1 changed files with 10 additions and 9 deletions

View File

@ -147,6 +147,7 @@ local directory_size_distance = function(self, subdirectory, icon_size)
end end
local lookup_icon = function(self, icon_name, icon_size) local lookup_icon = function(self, icon_name, icon_size)
local checked_already = {}
for _, subdir in ipairs(self.index_theme:get_subdirectories()) do for _, subdir in ipairs(self.index_theme:get_subdirectories()) do
for _, basedir in ipairs(self.base_directories) do for _, basedir in ipairs(self.base_directories) do
for _, ext in ipairs(self.extensions) do for _, ext in ipairs(self.extensions) do
@ -156,6 +157,8 @@ local lookup_icon = function(self, icon_name, icon_size)
icon_name, ext) icon_name, ext)
if awful.util.file_readable(filename) then if awful.util.file_readable(filename) then
return filename return filename
else
checked_already[filename] = true
end end
end end
end end
@ -170,19 +173,17 @@ local lookup_icon = function(self, icon_name, icon_size)
local filename = string.format("%s/%s/%s/%s.%s", local filename = string.format("%s/%s/%s/%s.%s",
basedir, self.icon_theme_name, subdir, basedir, self.icon_theme_name, subdir,
icon_name, ext) icon_name, ext)
local dist = directory_size_distance(self, subdir, icon_size) if not checked_already[filename] then
if awful.util.file_readable(filename) and dist < minimal_size then local dist = directory_size_distance(self, subdir, icon_size)
closest_filename = filename if awful.util.file_readable(filename) and dist < minimal_size then
minimal_size = dist closest_filename = filename
minimal_size = dist
end
end end
end end
end end
end end
if closest_filename then return closest_filename
return closest_filename
end
return nil
end end
local find_icon_path_helper -- Gets called recursively. local find_icon_path_helper -- Gets called recursively.