From f74d9b68fed20933cbcac388b3796813e5a51ecf Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Sun, 13 Mar 2011 19:04:55 +0900 Subject: [PATCH] trigger the db progress handler after more operations We originally were triggering on 100 opcodes, because at the time we were doing write-heavy alterations to the DB for inactive tags, and a higher level of opcodes would pause the interface for a long time. The query structure is different now, so we can afford to save the overhead of more frequent calls. With the change, a .reset() triggers the handler 3 times; fixIntegrity() triggers it 30 times over a period of 4.5 seconds. --- anki/db.py | 3 +++ anki/deck.py | 14 +++----------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/anki/db.py b/anki/db.py index 02b4424a7..0c14d82a8 100644 --- a/anki/db.py +++ b/anki/db.py @@ -71,3 +71,6 @@ class DB(object): def close(self): self._db.close() + + def set_progress_handler(self, *args): + self._db.set_progress_handler(*args) diff --git a/anki/deck.py b/anki/deck.py index cdc153c77..b5dfbafd6 100644 --- a/anki/deck.py +++ b/anki/deck.py @@ -535,12 +535,6 @@ where c.fid == f.id and f.mid == m.id and c.gid = g.id def tagList(self): return self.db.list("select name from tags order by name") - def cardsWithNoTags(self): - return self.db.list(""" -select cards.id from cards, facts where -facts.tags = "" -and cards.fid = facts.id""") - def cardHasTag(self, card, tag): tags = self.db.scalar("select tags from fact where id = :fid", fid=card.fid) @@ -630,16 +624,14 @@ update facts set tags = :t, mod = :n where id = :id""", [fix(row) for row in res return self.progressHandlerCalled = time.time() if self.progressHandlerEnabled: + # things which hook on this should be very careful not to touch + # the db as they run runHook("dbProgress") def setupProgressHandler(self): self.progressHandlerCalled = 0 self.progressHandlerEnabled = False - try: - self.engine.raw_connection().set_progress_handler( - deck.progressHandler, 100) - except: - pass + self.db.set_progress_handler(self.progressHandler, 100000) def enableProgressHandler(self): self.progressHandlerEnabled = True