reset generic shader after zoom

REVIEW: 108252
BUG: 355028
REVIEW: 125994
FIXED-IN: 5.5
This commit is contained in:
Thomas Lübking 2013-01-07 21:16:38 +01:00
parent c04f7919c1
commit 7b459214d9

View file

@ -259,8 +259,11 @@ void ZoomEffect::reconfigure(ReconfigureFlags)
void ZoomEffect::prePaintScreen(ScreenPrePaintData& data, int time)
{
bool altered = false;
if (zoom != target_zoom) {
altered = true;
const float zoomDist = qAbs(target_zoom - source_zoom);
double diff = time / animationTime(500.0);
if (target_zoom > zoom)
zoom = qMin(zoom + ((zoomDist * time) / animationTime(150*zoomFactor)), target_zoom);
else
@ -269,6 +272,8 @@ void ZoomEffect::prePaintScreen(ScreenPrePaintData& data, int time)
if (zoom == 1.0) {
showCursor();
if (altered) // reset the generic shader to avoid artifacts in plenty other effects
ShaderBinder binder(ShaderManager::GenericShader, true);
} else {
hideCursor();
data.mask |= PAINT_SCREEN_TRANSFORMED;