From 466dc2e14477faef736525cec44d6a648648ea3e Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 13 Mar 2015 13:28:54 +0530 Subject: [PATCH] Edit Book: Fix Preview panel sometimes not working when opening multiple html files one after the other very quickly --- src/calibre/gui2/tweak_book/preview.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/tweak_book/preview.py b/src/calibre/gui2/tweak_book/preview.py index 04251aa538..4c0a72eace 100644 --- a/src/calibre/gui2/tweak_book/preview.py +++ b/src/calibre/gui2/tweak_book/preview.py @@ -48,12 +48,17 @@ def parse_html(raw): class ParseItem(object): - __slots__ = ('name', 'length', 'fingerprint', 'parsed_data') + __slots__ = ('name', 'length', 'fingerprint', 'parsing_done', 'parsed_data') def __init__(self, name): self.name = name self.length, self.fingerprint = 0, None self.parsed_data = None + self.parsing_done = False + + def __repr__(self): + return 'ParsedItem(name=%r, length=%r, fingerprint=%r, parsing_done=%r, parsed_data_is_None=%r)' % ( + self.name, self.length, self.fingerprint, self.parsing_done, self.parsed_data is None) class ParseWorker(Thread): @@ -100,6 +105,7 @@ class ParseWorker(Thread): import traceback traceback.print_exc() else: + pi.parsing_done = True parsed_data = res['result'] if res['tb']: prints("Parser error:") @@ -114,9 +120,10 @@ class ParseWorker(Thread): if pi is None: self.parse_items[name] = pi = ParseItem(name) else: - if pi.length == ldata and pi.fingerprint == hdata: + if pi.parsing_done and pi.length == ldata and pi.fingerprint == hdata: return pi.parsed_data = None + pi.parsing_done = False pi.length, pi.fingerprint = ldata, hdata self.requests.put((self.request_count, pi, data)) self.request_count += 1