diff --git a/src/lib/marble/projections/AzimuthalProjection.cpp b/src/lib/marble/projections/AzimuthalProjection.cpp --- a/src/lib/marble/projections/AzimuthalProjection.cpp +++ b/src/lib/marble/projections/AzimuthalProjection.cpp @@ -566,11 +566,21 @@ GeoDataCoordinates AzimuthalProjectionPrivate::findHorizon( const GeoDataCoordinates & previousCoords, const GeoDataCoordinates & currentCoords, const ViewportParams *viewport, - TessellationFlags f, - int recursionCounter ) const + TessellationFlags f) const { bool currentHide = globeHidesPoint( currentCoords, viewport ) ; + return doFindHorizon(previousCoords, currentCoords, viewport, f, currentHide, 0); +} + + +GeoDataCoordinates AzimuthalProjectionPrivate::doFindHorizon( const GeoDataCoordinates & previousCoords, + const GeoDataCoordinates & currentCoords, + const ViewportParams *viewport, + TessellationFlags f, + bool currentHide, + int recursionCounter ) const +{ if ( recursionCounter > 20 ) { return currentHide ? previousCoords : currentCoords; } @@ -638,10 +648,10 @@ bool horizonHide = globeHidesPoint( horizonCoords, viewport ); if ( horizonHide != currentHide ) { - return findHorizon( horizonCoords, currentCoords, viewport, f, recursionCounter ); + return doFindHorizon(horizonCoords, currentCoords, viewport, f, currentHide, recursionCounter); } - return findHorizon( previousCoords, horizonCoords, viewport, f, recursionCounter ); + return doFindHorizon(previousCoords, horizonCoords, viewport, f, horizonHide, recursionCounter); } diff --git a/src/lib/marble/projections/AzimuthalProjection_p.h b/src/lib/marble/projections/AzimuthalProjection_p.h --- a/src/lib/marble/projections/AzimuthalProjection_p.h +++ b/src/lib/marble/projections/AzimuthalProjection_p.h @@ -87,8 +87,14 @@ GeoDataCoordinates findHorizon( const GeoDataCoordinates & previousCoords, const GeoDataCoordinates & currentCoords, const ViewportParams *viewport, - TessellationFlags f = 0, - int recursionCounter = 0 ) const; + TessellationFlags f = 0) const; + + GeoDataCoordinates doFindHorizon(const GeoDataCoordinates & previousCoords, + const GeoDataCoordinates & currentCoords, + const ViewportParams *viewport, + TessellationFlags f, + bool currentHide, + int recursionCounter) const; bool globeHidesPoint( const GeoDataCoordinates &coordinates, const ViewportParams *viewport ) const;