+ signal.signal(signal.SIGWINCH, s.resizehandler)
+ s.resizelock = Lock()
+ s.resizecount = 0
+
+ def resizehandler(s, signum, frame):
+ s.resizeterm()
+
+ def resizeterm(s, dosleep = 1):
+ DEBUGLOG.write("\nResizeterm called...\n")
+ DEBUGLOG.write("pid: %d\n" % os.getpid())
+ if not s.resizelock.acquire(0):
+ s.resizecount += 1
+ DEBUGLOG.write("Already resizing; aborting.\n")
+ return
+ else:
+ DEBUGLOG.write("Got the lock\n")
+ signal.signal(signal.SIGWINCH, signal.SIG_IGN)
+ s.aflock.acquire()
+ s.c.lock()
+ DEBUGLOG.write("locks acquired...\n")
+ s.resizecount += 1
+ DEBUGLOG.write("at top of try\n")
+ while s.resizecount:
+ DEBUGLOG.write("in while loop\n")
+ s.c.reset()
+ DEBUGLOG.write("reset done...\n")
+ DEBUGLOG.write("sleep done...\n")
+ DEBUGLOG.flush()
+ s.setupwindows()
+ DEBUGLOG.write("setupwindows done...\n")
+ s.resizecount -= 1
+ DEBUGLOG.write("exiting while loop...\n")
+ DEBUGLOG.write("in finally section...\n")
+ s.c.unlock()
+ s.aflock.release()
+ s.resizelock.release()
+ signal.signal(signal.SIGWINCH, s.resizehandler)
+ if dosleep:
+ time.sleep(1)
+ s.resizeterm(0)