diff options
author | Joshua Lock <josh@linux.intel.com> | 2011-08-30 09:32:48 -0700 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-08-30 21:57:15 +0100 |
commit | ea33ddc6a4d38cc6c86ca5fba03fa155ef8a44d8 (patch) | |
tree | 4c8fd33e2925779b69a13f867890c68c5898ba6c /bitbake/lib | |
parent | ed15be3313681c6e4cd7185e285a77ec37dc8750 (diff) | |
download | poky-ea33ddc6a4d38cc6c86ca5fba03fa155ef8a44d8.tar.gz |
ui/crumbs/tasklistmodel: loop optimisation in include_item()
Rather than trying to iterate the model to find whether the item is already
included and then iterate the model again to find the items path attempt to
find the path first and if the path is found test whether the COL_INC of
the row is set.
(Bitbake rev: 82845569c37591f6b097b9db071484f8171a39ea)
Signed-off-by: Joshua Lock <josh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib')
-rw-r--r-- | bitbake/lib/bb/ui/crumbs/tasklistmodel.py | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/bitbake/lib/bb/ui/crumbs/tasklistmodel.py b/bitbake/lib/bb/ui/crumbs/tasklistmodel.py index 790631fc98..518232dc35 100644 --- a/bitbake/lib/bb/ui/crumbs/tasklistmodel.py +++ b/bitbake/lib/bb/ui/crumbs/tasklistmodel.py | |||
@@ -417,18 +417,10 @@ class TaskListModel(gtk.ListStore): | |||
417 | it = self.contents.iter_next(it) | 417 | it = self.contents.iter_next(it) |
418 | 418 | ||
419 | """ | 419 | """ |
420 | Check the self.contents gtk.TreeModel for an item | 420 | Check whether the item at item_path is included or not |
421 | where COL_NAME matches item_name | ||
422 | Returns True if a match is found, False otherwise | ||
423 | """ | 421 | """ |
424 | def contents_includes_name(self, item_name): | 422 | def contents_includes_path(self, item_path): |
425 | it = self.contents.get_iter_first() | 423 | return self[item_path][self.COL_INC] |
426 | while it: | ||
427 | path = self.contents.get_path(it) | ||
428 | if self.contents[path][self.COL_NAME] == item_name: | ||
429 | return True | ||
430 | it = self.contents.iter_next(it) | ||
431 | return False | ||
432 | 424 | ||
433 | """ | 425 | """ |
434 | Add this item, and any of its dependencies, to the image contents | 426 | Add this item, and any of its dependencies, to the image contents |
@@ -452,13 +444,15 @@ class TaskListModel(gtk.ListStore): | |||
452 | self.selected_image = item_name | 444 | self.selected_image = item_name |
453 | 445 | ||
454 | if item_deps: | 446 | if item_deps: |
455 | # add all of the deps and set their binb to this item | 447 | # Ensure all of the items deps are included and, where appropriate, |
448 | # add this item to their COL_BINB | ||
456 | for dep in item_deps.split(" "): | 449 | for dep in item_deps.split(" "): |
457 | # If the contents model doesn't already contain dep, add it | 450 | # If the contents model doesn't already contain dep, add it |
458 | dep_included = self.contents_includes_name(dep) | ||
459 | dep_path = self.find_path_for_item(dep) | 451 | dep_path = self.find_path_for_item(dep) |
460 | if not dep_path: | 452 | if not dep_path: |
461 | continue | 453 | continue |
454 | dep_included = self.contents_includes_path(dep_path) | ||
455 | |||
462 | if dep_included and not dep in item_bin: | 456 | if dep_included and not dep in item_bin: |
463 | # don't set the COL_BINB to this item if the target is an | 457 | # don't set the COL_BINB to this item if the target is an |
464 | # item in our own COL_BINB | 458 | # item in our own COL_BINB |