Merge pull request #357 from hakon-j-d-johnsen/fix-race-condition

Fix minor race condition in rendering of the preview window
This commit is contained in:
Damien Elmes 2019-11-30 21:43:33 +13:00 committed by GitHub
commit 5411cf06c1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1259,6 +1259,7 @@ where id in %s""" % ids2str(sf))
_previewTimer = None
_lastPreviewRender = 0
_lastPreviewState = None
_previewCardChanged = False
def onTogglePreview(self):
if self._previewWindow:
@ -1367,20 +1368,23 @@ where id in %s""" % ids2str(sf))
def _renderPreview(self, cardChanged=False):
self._cancelPreviewTimer()
# Keep track of whether _renderPreview() has ever been called
# with cardChanged=True since the last successful render
self._previewCardChanged |= cardChanged
# avoid rendering in quick succession
elapMS = int((time.time() - self._lastPreviewRender)*1000)
if elapMS < 500:
self._previewTimer = self.mw.progress.timer(
500-elapMS, lambda: self._renderScheduledPreview(cardChanged), False)
500-elapMS, self._renderScheduledPreview, False)
else:
self._renderScheduledPreview(cardChanged)
self._renderScheduledPreview()
def _cancelPreviewTimer(self):
if self._previewTimer:
self._previewTimer.stop()
self._previewTimer = None
def _renderScheduledPreview(self, cardChanged=False):
def _renderScheduledPreview(self):
self._cancelPreviewTimer()
self._lastPreviewRender = time.time()
@ -1395,7 +1399,7 @@ where id in %s""" % ids2str(sf))
else:
if self._previewBothSides:
self._previewState = "answer"
elif cardChanged:
elif self._previewCardChanged:
self._previewState = "question"
currentState = self._previewStateAndMod()
@ -1433,6 +1437,7 @@ where id in %s""" % ids2str(sf))
self._updatePreviewButtons()
self._previewWeb.eval(
"{}({},'{}');".format(func, json.dumps(txt), bodyclass))
self._previewCardChanged = False
def _onPreviewShowBothSides(self, toggle):
self._previewBothSides = toggle