[bitbake-devel] [PATCH 02/32] Hob: avoid the image selection dialog to walk through all directories and its sub-directories, when users click "My images".
Joshua Lock
josh at linux.intel.com
Wed Feb 29 21:30:13 UTC 2012
On 29/02/12 06:14, Shane Wang wrote:
> The current implementation of the image selection dialog walks through all directories and its sub-directories, when users click "My images" to choose a directory. If the directory is /, the system becomes slow. This patch is to avoid walking through all directories but the child directories only, given a directory.
>
> Signed-off-by: Shane Wang<shane.wang at intel.com>
Signed-off-by: Joshua Lock <josh at linux.intel.com>
> ---
> bitbake/lib/bb/ui/crumbs/hig.py | 12 ++++++++----
> 1 files changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/bitbake/lib/bb/ui/crumbs/hig.py b/bitbake/lib/bb/ui/crumbs/hig.py
> index 8f4f7cd..9aa6fdf 100644
> --- a/bitbake/lib/bb/ui/crumbs/hig.py
> +++ b/bitbake/lib/bb/ui/crumbs/hig.py
> @@ -582,6 +582,7 @@ class ImageSelectionDialog (gtk.Dialog):
>
> self.image_folder = image_folder
> self.image_types = image_types
> + self.image_list = []
> self.image_names = []
>
> # create visual elements on the dialog
> @@ -645,13 +646,17 @@ class ImageSelectionDialog (gtk.Dialog):
> dialog.destroy()
>
> def fill_image_store(self):
> + self.image_list = []
> self.image_store.clear()
> imageset = set()
> for root, dirs, files in os.walk(self.image_folder):
> + # ignore the sub directories
> + dirs[:] = []
> for f in files:
> for image_type in self.image_types:
> if f.endswith('.' + image_type):
> imageset.add(f.rsplit('.' + image_type)[0])
> + self.image_list.append(f)
>
> for image in imageset:
> self.image_store.set(self.image_store.append(), 0, image, 1, False)
> @@ -665,9 +670,8 @@ class ImageSelectionDialog (gtk.Dialog):
> while iter:
> path = self.image_store.get_path(iter)
> if self.image_store[path][1]:
> - for root, dirs, files in os.walk(self.image_folder):
> - for f in files:
> - if f.startswith(self.image_store[path][0] + '.'):
> - self.image_names.append(f)
> + for f in self.image_list:
> + if f.startswith(self.image_store[path][0] + '.'):
> + self.image_names.append(f)
> break
> iter = self.image_store.iter_next(iter)
--
Joshua Lock
Yocto Project "Johannes factotum"
Intel Open Source Technology Centre
More information about the bitbake-devel
mailing list