Hello list, I am new to Bazaar and especially Bazaar related development. Anyway, while trying to get my packages into Bazaar repositories, I will try to help improving bzr and friends.
The attached patch is a simple first improvement. I don't think it is production quality, but perhaps it will be a push into the right direction. It is a simple new feature, which allows running bzr visualize and resizing the window without the hard drive freaking out. The original implementation stored the window sizes on each change. This is surely not a bug but it made me suspicious when first using bzr-gtk. I just had to check what it was doing to my data. My attached patch changes the behaviour by updating the config file at most every 10 seconds (and on exit). This is still not correct, for there is no locking on the configuration file. Viewing the branch history for multiple branches at the same time could well break the config file. Comments welcome. Greetings, Torsten
# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: [email protected] # target_branch: file:///home/torsten/debian/bzr-gtk/trunk/ # testament_sha1: 7ed0ff0249f80dc2c2a4c696cc069559f94e0557 # timestamp: 2009-04-08 12:53:06 +0200 # base_revision_id: [email protected] # # Begin patch === modified file 'viz/branchwin.py' --- viz/branchwin.py 2008-11-28 16:42:25 +0000 +++ viz/branchwin.py 2009-04-08 10:44:51 +0000 @@ -49,6 +49,7 @@ self.config = GlobalConfig() self._sizes = {} # window and widget sizes + self._sizes_unsaved = {} # each key is the name of an unsaved size if self.config.get_user_option('viz-compact-view') == 'yes': self.compact_view = True @@ -613,8 +614,29 @@ if size_changed: width, height = allocation.width, allocation.height self._sizes[name] = (width, height) + self._delayed_store_size(name) + + def _delayed_store_size(self, name): + """Ensure that the current size for name is eventually written + to the configuration file.""" + + dirty_sizes = self._sizes_unsaved + if name in dirty_sizes: + return # already marked as dirty + + def write_to_config(): + (width, height) = self._sizes[name] value = '%sx%s' % (width, height) self.config.set_user_option(name, value) + del dirty_sizes[name] + + def write_from_timeout(): + gtk.quit_remove(dirty_sizes[name]) + write_to_config() + return False + + dirty_sizes[name] = gtk.quit_add(1, write_to_config) + gobject.timeout_add(10000, write_from_timeout) def show_diff(self, revid=None, parentid=None): """Open a new window to show a diff between the given revisions.""" # Begin bundle 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 t79wRSFTnpEYhkQQIEtWN93w8RdyRThQkJvpgUU=
-- bzr-gtk mailing list [email protected] Modify settings or unsubscribe at: https://lists.canonical.com/mailman/listinfo/bzr-gtk
