[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