[poky] [IMAGE_CREATOR 1/1] bitbake/hob: Fixed the "build again" hang.

Joshua Lock josh at linux.intel.com
Fri Jun 10 10:30:23 PDT 2011


On Fri, 2011-06-10 at 15:40 +0800, Lianhao Lu wrote:
> Using gobject.threads_init() instead of gtk.gdk.threads_init(). These
> two modes are conflict to each other. Using gobject.threads_init()
> allows only the main thread to touch GUI(gtk) part.

Great catch! Thanks for the patch.

I'm going to merge just the hunk which drops the gtk.gdk.threads_init()
(with your SOB, hope that's OK?) into the image-creator branch as I have
changes with similar intent to the other hunks in my WIP tree
(josh/hob).

Thanks again,
Joshua

> 
> Signed-off-by: Lianhao Lu <lianhao.lu at intel.com>
> ---
>  bitbake/lib/bb/ui/crumbs/hobeventhandler.py |    3 +++
>  bitbake/lib/bb/ui/hob.py                    |    5 +++--
>  2 files changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/bitbake/lib/bb/ui/crumbs/hobeventhandler.py b/bitbake/lib/bb/ui/crumbs/hobeventhandler.py
> index c474491..a11e6d4 100644
> --- a/bitbake/lib/bb/ui/crumbs/hobeventhandler.py
> +++ b/bitbake/lib/bb/ui/crumbs/hobeventhandler.py
> @@ -134,6 +134,9 @@ class HobHandler(gobject.GObject):
>          self.building = True
>          self.server.runCommand(["buildTargets", targets, "build"])
>  
> +    def notify_building_state(self, building):
> +        self.building = building
> +
>      def cancel_build(self):
>          # Note: this may not be the right way to stop an in-progress build
>          self.server.runCommand(["stateStop"])
> diff --git a/bitbake/lib/bb/ui/hob.py b/bitbake/lib/bb/ui/hob.py
> index ab6022b..46fb563 100644
> --- a/bitbake/lib/bb/ui/hob.py
> +++ b/bitbake/lib/bb/ui/hob.py
> @@ -63,9 +63,11 @@ class MainWindow (gtk.Window):
>  
>      def running_build_failed_cb(self, running_build):
>          # FIXME: handle this
> +        self.handler.notify_building_state(False)
>          return
>  
>      def running_build_succeeded_cb(self, running_build):
> +        self.handler.notify_building_state(False)
>          label = gtk.Label("Build completed, start another build?")
>          dialog = gtk.Dialog("Build complete",
>                              self,
> @@ -76,7 +78,7 @@ class MainWindow (gtk.Window):
>          label.show()
>          response = dialog.run()
>          dialog.destroy()
> -        if not response == gtk.RESPONSE_YES:
> +        if response == gtk.RESPONSE_YES:
>              self.model.reset() # NOTE: really?
>              self.nb.set_current_page(0)
>          return
> @@ -555,7 +557,6 @@ class MainWindow (gtk.Window):
>  
>  def main (server, eventHandler):
>      gobject.threads_init()
> -    gtk.gdk.threads_init()
>  
>      taskmodel = TaskListModel()
>      handler = HobHandler(taskmodel, server)

-- 
Joshua Lock
        Yocto Build System Monkey
        Intel Open Source Technology Centre




More information about the poky mailing list