FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Debian > Debian Development

 
 
LinkBack Thread Tools
 
Old 03-10-2009, 11:43 PM
David Cantrell
 
Default Speed up partitioning screen redraws by trimming workload where possible.

Looks good.

On 03/10/2009 01:59 PM, David Lehman wrote:

Previously we would call doPartitioning every time we refreshed
the main partitioning screen. This makes little sense if the
user just finished modifying a vg or md array or only assigned
a mountpoint to an existing device.

There is still more that we could do, like only calling
doPartitioning if one of the generated action involves
partition allocation.
---
iw/partition_gui.py | 88 ++++++++++++++++++++++++++++-----------------------
1 files changed, 48 insertions(+), 40 deletions(-)

diff --git a/iw/partition_gui.py b/iw/partition_gui.py
index 9dae436..d58e139 100644
--- a/iw/partition_gui.py
+++ b/iw/partition_gui.py
@@ -976,7 +976,13 @@ class PartitionWindow(InstallWindow):
elif doDeleteDevice(self.intf,
self.storage,
device):
- self.refresh()
+ if isinstance(device, storage.devices.DiskDevice) or
+ isinstance(device, storage.devices.PartitionDevice):
+ justRedraw = False
+ else:
+ justRedraw = True
+
+ self.refresh(justRedraw=justRedraw)

def resetCB(self, *args):
if not confirmResetPartitionState(self.intf):
@@ -987,45 +993,49 @@ class PartitionWindow(InstallWindow):
self.tree.clear()
self.populate()

- def refresh(self):
+ def refresh(self, justRedraw=None):
+ log.debug("refresh: justRedraw=%s" % justRedraw)
self.diskStripeGraph.shutDown()
self.tree.clear()

- try:
- doPartitioning(self.storage)
+ if justRedraw:
rc = 0
- except PartitioningError, msg:
- self.intf.messageWindow(_("Error Partitioning"),
- _("Could not allocate requested partitions: %s.") % (msg),
- custom_icon="error")
- rc = -1
- except PartitioningWarning, msg:
- # XXX somebody other than me should make this look better
- # XXX this doesn't handle the 'delete /boot partition spec' case
- # (it says 'add anyway')
- dialog = gtk.MessageDialog(self.parent, 0, gtk.MESSAGE_WARNING,
- gtk.BUTTONS_NONE,
- _("Warning: %s.") % (msg))
- gui.addFrame(dialog)
- button = gtk.Button(_("_Modify Partition"))
- dialog.add_action_widget(button, 1)
- button = gtk.Button(_("_Continue"))
- dialog.add_action_widget(button, 2)
- dialog.set_position(gtk.WIN_POS_CENTER)
-
- dialog.show_all()
- rc = dialog.run()
- dialog.destroy()
-
- if rc == 1:
- rc = -1
- else:
+ else:
+ try:
+ doPartitioning(self.storage)
rc = 0
- all_devices = self.storage.devicetree.devices.values()
- bootDevs = [d for d in all_devices if d.bootable]
- #if reqs:
- # for req in reqs:
- # req.ignoreBootConstraints = 1
+ except PartitioningError, msg:
+ self.intf.messageWindow(_("Error Partitioning"),
+ _("Could not allocate requested partitions: %s.") % (msg),
+ custom_icon="error")
+ rc = -1
+ except PartitioningWarning, msg:
+ # XXX somebody other than me should make this look better
+ # XXX this doesn't handle the 'delete /boot partition spec' case
+ # (it says 'add anyway')
+ dialog = gtk.MessageDialog(self.parent, 0, gtk.MESSAGE_WARNING,
+ gtk.BUTTONS_NONE,
+ _("Warning: %s.") % (msg))
+ gui.addFrame(dialog)
+ button = gtk.Button(_("_Modify Partition"))
+ dialog.add_action_widget(button, 1)
+ button = gtk.Button(_("_Continue"))
+ dialog.add_action_widget(button, 2)
+ dialog.set_position(gtk.WIN_POS_CENTER)
+
+ dialog.show_all()
+ rc = dialog.run()
+ dialog.destroy()
+
+ if rc == 1:
+ rc = -1
+ else:
+ rc = 0
+ all_devices = self.storage.devicetree.devices.values()
+ bootDevs = [d for d in all_devices if d.bootable]
+ #if reqs:
+ # for req in reqs:
+ # req.ignoreBootConstraints = 1

if not rc == -1:
self.populate()
@@ -1064,8 +1074,6 @@ class PartitionWindow(InstallWindow):
self.parent,
raiddev,
isNew)
- # is a shallow copy enough?
- #origpartitions = self.storage.devicetree.copy()

while 1:
actions = raideditor.run()
@@ -1074,7 +1082,7 @@ class PartitionWindow(InstallWindow):
# FIXME: this needs to handle exceptions
self.storage.devicetree.registerAction(action)

- if self.refresh():
+ if self.refresh(justRedraw=True):
actions.reverse()
for action in actions:
self.storage.devicetree.cancelAction(action)
@@ -1102,7 +1110,7 @@ class PartitionWindow(InstallWindow):
# XXX we should handle exceptions here
self.anaconda.id.storage.devicetree.registerAction (action)

- if self.refresh():
+ if self.refresh(justRedraw=not actions):
# autopart failed -- cancel the actions and try to get
# back to previous state
actions.reverse()
@@ -1135,7 +1143,7 @@ class PartitionWindow(InstallWindow):
# FIXME: handle exceptions
self.storage.devicetree.registerAction(action)

- if self.refresh():
+ if self.refresh(justRedraw=True):
actions.reverse()
for action in actions:
self.storage.devicetree.cancelAction(action)



--
David Cantrell <dcantrell@redhat.com>
Red Hat / Honolulu, HI

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 

Thread Tools




All times are GMT. The time now is 09:06 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org