mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Edit Book: Fix Preview panel sometimes not working when opening multiple html files one after the other very quickly
This commit is contained in:
parent
9ba1fdda45
commit
466dc2e144
@ -48,12 +48,17 @@ def parse_html(raw):
|
|||||||
|
|
||||||
class ParseItem(object):
|
class ParseItem(object):
|
||||||
|
|
||||||
__slots__ = ('name', 'length', 'fingerprint', 'parsed_data')
|
__slots__ = ('name', 'length', 'fingerprint', 'parsing_done', 'parsed_data')
|
||||||
|
|
||||||
def __init__(self, name):
|
def __init__(self, name):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.length, self.fingerprint = 0, None
|
self.length, self.fingerprint = 0, None
|
||||||
self.parsed_data = 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):
|
class ParseWorker(Thread):
|
||||||
|
|
||||||
@ -100,6 +105,7 @@ class ParseWorker(Thread):
|
|||||||
import traceback
|
import traceback
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
else:
|
else:
|
||||||
|
pi.parsing_done = True
|
||||||
parsed_data = res['result']
|
parsed_data = res['result']
|
||||||
if res['tb']:
|
if res['tb']:
|
||||||
prints("Parser error:")
|
prints("Parser error:")
|
||||||
@ -114,9 +120,10 @@ class ParseWorker(Thread):
|
|||||||
if pi is None:
|
if pi is None:
|
||||||
self.parse_items[name] = pi = ParseItem(name)
|
self.parse_items[name] = pi = ParseItem(name)
|
||||||
else:
|
else:
|
||||||
if pi.length == ldata and pi.fingerprint == hdata:
|
if pi.parsing_done and pi.length == ldata and pi.fingerprint == hdata:
|
||||||
return
|
return
|
||||||
pi.parsed_data = None
|
pi.parsed_data = None
|
||||||
|
pi.parsing_done = False
|
||||||
pi.length, pi.fingerprint = ldata, hdata
|
pi.length, pi.fingerprint = ldata, hdata
|
||||||
self.requests.put((self.request_count, pi, data))
|
self.requests.put((self.request_count, pi, data))
|
||||||
self.request_count += 1
|
self.request_count += 1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user