From 9e6d1101b46089c1c6749f985ecdc1cb0ef87ac8 Mon Sep 17 00:00:00 2001 From: Shane Wang Date: Wed, 23 May 2012 23:19:44 +0800 Subject: Hob: Adjust the progress bar and set 100% only when all is done. After parsing recipes, Hob will populate recipes and packages, which is probably time exhaused. So, this patch is to adjust the progress bar and ensure 100% is set if and only if all populations are done. The patch also fixes "weird 18 second delay when parsing recipes" on build appliance. Because Hob is doing something, but the progress bar shows 100% and wait there. [Yocto #2341] (Bitbake rev: 2c4a21dc8a588c8cf05549ddd9734731a46bea10) Signed-off-by: Shane Wang Signed-off-by: Richard Purdie --- bitbake/lib/bb/ui/crumbs/builder.py | 12 ++++++++++-- bitbake/lib/bb/ui/crumbs/hobeventhandler.py | 8 ++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) (limited to 'bitbake') diff --git a/bitbake/lib/bb/ui/crumbs/builder.py b/bitbake/lib/bb/ui/crumbs/builder.py index 4b274a75a1..3f6878246c 100755 --- a/bitbake/lib/bb/ui/crumbs/builder.py +++ b/bitbake/lib/bb/ui/crumbs/builder.py @@ -354,6 +354,8 @@ class Builder(gtk.Window): self.handler.connect("data-generated", self.handler_data_generated_cb) self.handler.connect("command-succeeded", self.handler_command_succeeded_cb) self.handler.connect("command-failed", self.handler_command_failed_cb) + self.handler.connect("recipe-populated", self.handler_recipe_populated_cb) + self.handler.connect("package-populated", self.handler_package_populated_cb) self.handler.set_config_filter(hob_conf_filter) @@ -698,6 +700,12 @@ class Builder(gtk.Window): def packagelist_changed_cb(self, package_model): self.package_details_page.refresh_selection() + def handler_recipe_populated_cb(self, handler): + self.image_configuration_page.update_progress_bar("Populated recipes", 0.99) + + def handler_package_populated_cb(self, handler): + self.image_configuration_page.update_progress_bar("Populated packages", 1.0) + def handler_parsing_started_cb(self, handler, message): if self.current_step != self.RCPPKGINFO_POPULATING: return @@ -717,7 +725,7 @@ class Builder(gtk.Window): fraction = message["current"] * 1.0/message["total"] if message["eventname"] == "TreeDataPreparationProgress": - fraction = 0.6 + 0.4 * fraction + fraction = 0.6 + 0.38 * fraction else: fraction = 0.6 * fraction self.image_configuration_page.update_progress_bar(message["title"], fraction) @@ -727,7 +735,7 @@ class Builder(gtk.Window): return if message["eventname"] == "TreeDataPreparationCompleted": - fraction = 1.0 + fraction = 0.98 else: fraction = 0.6 self.image_configuration_page.update_progress_bar(message["title"], fraction) diff --git a/bitbake/lib/bb/ui/crumbs/hobeventhandler.py b/bitbake/lib/bb/ui/crumbs/hobeventhandler.py index 624d7b55f3..424bcfa525 100644 --- a/bitbake/lib/bb/ui/crumbs/hobeventhandler.py +++ b/bitbake/lib/bb/ui/crumbs/hobeventhandler.py @@ -57,6 +57,12 @@ class HobHandler(gobject.GObject): "parsing-completed" : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,)), + "recipe-populated" : (gobject.SIGNAL_RUN_LAST, + gobject.TYPE_NONE, + ()), + "package-populated" : (gobject.SIGNAL_RUN_LAST, + gobject.TYPE_NONE, + ()), } (GENERATE_CONFIGURATION, GENERATE_RECIPES, GENERATE_PACKAGES, GENERATE_IMAGE, POPULATE_PACKAGEINFO, SANITY_CHECK) = range(6) @@ -158,6 +164,7 @@ class HobHandler(gobject.GObject): if isinstance(event, bb.event.PackageInfo): self.package_model.populate(event._pkginfolist) + self.emit("package-populated") self.run_next_command() elif isinstance(event, bb.event.SanityCheckPassed): @@ -171,6 +178,7 @@ class HobHandler(gobject.GObject): self.current_phase = "data generation" if event._model: self.recipe_model.populate(event._model) + self.emit("recipe-populated") elif isinstance(event, bb.event.ConfigFilesFound): self.current_phase = "configuration lookup" var = event._variable -- cgit v1.2.3-54-g00ecf