init progress handle at start, tweaks for faster deck startup

This commit is contained in:
Damien Elmes 2009-04-11 00:17:39 +09:00
parent 0959689463
commit 51213784a8

View file

@ -135,12 +135,7 @@ class Deck(object):
self.reviewedAheadCards = [] self.reviewedAheadCards = []
self.extraNewCards = 0 self.extraNewCards = 0
self.reviewEarly = False self.reviewEarly = False
try: self.progressHandlerCalled = 0
self.progressHandlerCalled = 0
self.engine.raw_connection().set_progress_handler(
self.progressHandler, 100)
except:
print "please install pysqlite 2.4 for better progress dialogs"
self.progressHandlerEnabled = False self.progressHandlerEnabled = False
def modifiedSinceSave(self): def modifiedSinceSave(self):
@ -2451,6 +2446,11 @@ class DeckStorage(object):
deck.engine = engine deck.engine = engine
deck.Session = session deck.Session = session
deck.needLock = lock deck.needLock = lock
try:
deck.engine.raw_connection().set_progress_handler(
deck.progressHandler, 100)
except:
print "please install pysqlite 2.4 for better progress dialogs"
deck.s = SessionHelper(s, lock=lock) deck.s = SessionHelper(s, lock=lock)
deck.s.execute("pragma locking_mode = exclusive") deck.s.execute("pragma locking_mode = exclusive")
# force a write lock # force a write lock
@ -2950,14 +2950,14 @@ nextFactor, reps, thinkingTime, yesCount, noCount from reviewHistory""")
deck.s.execute("analyze") deck.s.execute("analyze")
deck.version = 32 deck.version = 32
deck.s.commit() deck.s.commit()
# this check we do regardless of version number since doing it on init # executing a pragma here is very slow on large decks, so we store
# seems to crash # our own record
if (deck.s.scalar("pragma page_size") == 1024 or if not deck.getInt("pageSize") == 4096:
deck.s.scalar("pragma legacy_file_format") == 1):
deck.s.commit() deck.s.commit()
deck.s.execute("pragma page_size = 4096") deck.s.execute("pragma page_size = 4096")
deck.s.execute("pragma legacy_file_format = 0") deck.s.execute("pragma legacy_file_format = 0")
deck.s.execute("vacuum") deck.s.execute("vacuum")
deck.setVar("pageSize", 4096)
if prog: if prog:
deck.finishProgress() deck.finishProgress()
return deck return deck