Changeset 1387

Show
Ignore:
Timestamp:
10/27/08 16:48:23 (12 years ago)
Author:
ppalmers
Message:

improve behavior when multiple busreset occur in rapid succession

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/libffado-2.0/support/mixer-qt4/ffado_panelmanager.py

    r1370 r1387  
    4545from mixer_dummy import * 
    4646from mixer_global import GlobalMixer 
     47 
     48import time 
    4749 
    4850import logging 
     
    150152    def devlistPostUpdate(self): 
    151153        log.debug("devlistPostUpdate") 
    152         self.updatePanels() 
     154        # this can fail if multiple busresets happen in fast succession 
     155        ntries = 10 
     156        while ntries > 0: 
     157            try: 
     158                self.updatePanels() 
     159                return 
     160            except: 
     161                log.debug("devlistPostUpdate failed (%d)" % ntries) 
     162                for guid in self.panels.keys(): 
     163                    w = self.panels[guid] 
     164                    del self.panels[guid] # remove from the list 
     165                    idx = self.tabs.indexOf(w) 
     166                    self.tabs.removeTab(idx) 
     167                    del w # GC might also take care of that 
     168 
     169                ntries = ntries - 1 
     170                time.sleep(2) # sleep a few seconds 
     171 
     172        log.debug("devlistPostUpdate failed completely") 
     173        self.tabs.setEnabled(False) 
     174        self.tabs.hide() 
     175        self.status.lblMessage.setText("Error while reconfiguring. Please restart ffadomixer.") 
     176        self.status.show() 
     177 
    153178 
    154179    def devlistUpdate(self): 
     
    250275                    dev = d 
    251276 
    252             w = QWidget( self.tabs
     277            w = QWidget(
    253278            l = QVBoxLayout( w ) 
    254279