mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Cover browser: Debounce re-renders
Only re-render cover browser 100msec after resize/slide change/reset/etc. Avoids unnecessary work, if a dataChanged/setSlideIndex/resize occur in quick succession, such as during program startup
This commit is contained in:
parent
ba1d07f73d
commit
9b131a5247
@ -411,7 +411,7 @@ private:
|
|||||||
QRect renderSlide(const SlideInfo &slide, int alpha=256, int col1=-1, int col=-1);
|
QRect renderSlide(const SlideInfo &slide, int alpha=256, int col1=-1, int col=-1);
|
||||||
QRect renderCenterSlide(const SlideInfo &slide);
|
QRect renderCenterSlide(const SlideInfo &slide);
|
||||||
QImage* surface(int slideIndex);
|
QImage* surface(int slideIndex);
|
||||||
void triggerRender();
|
void triggerRender(int after_msecs);
|
||||||
void resetSlides();
|
void resetSlides();
|
||||||
void render_text(QPainter*, int);
|
void render_text(QPainter*, int);
|
||||||
};
|
};
|
||||||
@ -447,7 +447,7 @@ PictureFlowPrivate::PictureFlowPrivate(PictureFlow* w, int queueLength_)
|
|||||||
void PictureFlowPrivate::dataChanged() {
|
void PictureFlowPrivate::dataChanged() {
|
||||||
surfaceCache.clear();
|
surfaceCache.clear();
|
||||||
resetSlides();
|
resetSlides();
|
||||||
triggerRender();
|
triggerRender(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PictureFlowPrivate::setImages(FlowImages *images)
|
void PictureFlowPrivate::setImages(FlowImages *images)
|
||||||
@ -474,7 +474,7 @@ void PictureFlowPrivate::setSlideSize(QSize size)
|
|||||||
slideWidth = size.width();
|
slideWidth = size.width();
|
||||||
slideHeight = size.height();
|
slideHeight = size.height();
|
||||||
recalc(buffer.width(), buffer.height());
|
recalc(buffer.width(), buffer.height());
|
||||||
triggerRender();
|
triggerRender(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
QImage PictureFlowPrivate::slide(int index) const
|
QImage PictureFlowPrivate::slide(int index) const
|
||||||
@ -500,7 +500,7 @@ void PictureFlowPrivate::setCurrentSlide(int index)
|
|||||||
target = centerIndex;
|
target = centerIndex;
|
||||||
slideFrame = ((long long)centerIndex) << 16;
|
slideFrame = ((long long)centerIndex) << 16;
|
||||||
resetSlides();
|
resetSlides();
|
||||||
triggerRender();
|
triggerRender(100);
|
||||||
widget->emitcurrentChanged(centerIndex);
|
widget->emitcurrentChanged(centerIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -510,7 +510,7 @@ bool PictureFlowPrivate::showReflections() const {
|
|||||||
|
|
||||||
void PictureFlowPrivate::setShowReflections(bool show) {
|
void PictureFlowPrivate::setShowReflections(bool show) {
|
||||||
doReflections = show;
|
doReflections = show;
|
||||||
triggerRender();
|
triggerRender(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PictureFlowPrivate::showPrevious()
|
void PictureFlowPrivate::showPrevious()
|
||||||
@ -566,7 +566,7 @@ void PictureFlowPrivate::resize(int w, int h)
|
|||||||
fontSize = MAX(int(h/15.), 12);
|
fontSize = MAX(int(h/15.), 12);
|
||||||
recalc(w, h);
|
recalc(w, h);
|
||||||
resetSlides();
|
resetSlides();
|
||||||
triggerRender();
|
triggerRender(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -702,9 +702,9 @@ QImage* PictureFlowPrivate::surface(int slideIndex)
|
|||||||
|
|
||||||
// Schedules rendering the slides. Call this function to avoid immediate
|
// Schedules rendering the slides. Call this function to avoid immediate
|
||||||
// render and thus cause less flicker.
|
// render and thus cause less flicker.
|
||||||
void PictureFlowPrivate::triggerRender()
|
void PictureFlowPrivate::triggerRender(int after_msecs)
|
||||||
{
|
{
|
||||||
triggerTimer.start();
|
triggerTimer.start(after_msecs);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PictureFlowPrivate::render_text(QPainter *painter, int index) {
|
void PictureFlowPrivate::render_text(QPainter *painter, int index) {
|
||||||
@ -1150,7 +1150,7 @@ void PictureFlowPrivate::updateAnimation()
|
|||||||
{
|
{
|
||||||
resetSlides();
|
resetSlides();
|
||||||
animateTimer.stop();
|
animateTimer.stop();
|
||||||
triggerRender();
|
triggerRender(0);
|
||||||
step = 0;
|
step = 0;
|
||||||
fade = 256;
|
fade = 256;
|
||||||
return;
|
return;
|
||||||
@ -1193,7 +1193,7 @@ void PictureFlowPrivate::updateAnimation()
|
|||||||
if(target > index) if(step < 0)
|
if(target > index) if(step < 0)
|
||||||
step = 1;
|
step = 1;
|
||||||
|
|
||||||
triggerRender();
|
triggerRender(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user