Rendering statistics view (#3322)
Co-authored-by: Bart Louwers <bart@emeel.net>
This commit is contained in:
@@ -64,7 +64,7 @@ class MLNMapViewImpl : public mbgl::MapObserver {
|
||||
void onDidFinishLoadingMap() override;
|
||||
void onDidFailLoadingMap(mbgl::MapLoadError mapError, const std::string& what) override;
|
||||
void onWillStartRenderingFrame() override;
|
||||
void onDidFinishRenderingFrame(mbgl::MapObserver::RenderFrameStatus) override;
|
||||
void onDidFinishRenderingFrame(const mbgl::MapObserver::RenderFrameStatus&) override;
|
||||
void onWillStartRenderingMap() override;
|
||||
void onDidFinishRenderingMap(mbgl::MapObserver::RenderMode) override;
|
||||
void onDidFinishLoadingStyle() override;
|
||||
|
||||
@@ -79,9 +79,9 @@ void MLNMapViewImpl::onWillStartRenderingFrame() {
|
||||
[mapView mapViewWillStartRenderingFrame];
|
||||
}
|
||||
|
||||
void MLNMapViewImpl::onDidFinishRenderingFrame(mbgl::MapObserver::RenderFrameStatus status) {
|
||||
bool fullyRendered = status.mode == mbgl::MapObserver::RenderMode::Full;
|
||||
[mapView mapViewDidFinishRenderingFrameFullyRendered:fullyRendered frameEncodingTime:status.frameEncodingTime frameRenderingTime:status.frameRenderingTime];
|
||||
void MLNMapViewImpl::onDidFinishRenderingFrame(const mbgl::MapObserver::RenderFrameStatus& status) {
|
||||
const bool fullyRendered = status.mode == mbgl::MapObserver::RenderMode::Full;
|
||||
[mapView mapViewDidFinishRenderingFrameFullyRendered:fullyRendered renderingStats:status.renderingStats];
|
||||
}
|
||||
|
||||
void MLNMapViewImpl::onWillStartRenderingMap() {
|
||||
|
||||
@@ -2157,6 +2157,16 @@ vertically on the map.
|
||||
*/
|
||||
@property (nonatomic) MLNMapDebugMaskOptions debugMask;
|
||||
|
||||
/**
|
||||
Returns the status of the rendering statistics overlay.
|
||||
*/
|
||||
- (BOOL)isRenderingStatsViewEnabled;
|
||||
|
||||
/**
|
||||
Enable a rendering statistics overlay with ``MLNRenderingStats`` values.
|
||||
*/
|
||||
- (void)enableRenderingStatsView:(BOOL)value;
|
||||
|
||||
/**
|
||||
Get the list of action journal log files from oldest to newest.
|
||||
|
||||
|
||||
@@ -68,6 +68,7 @@
|
||||
#import "MLNLoggingConfiguration_Private.h"
|
||||
#import "MLNNetworkConfiguration_Private.h"
|
||||
#import "MLNReachability.h"
|
||||
#import "MLNRenderingStats_Private.h"
|
||||
#import "MLNSettings_Private.h"
|
||||
#import "MLNActionJournalOptions_Private.h"
|
||||
#import "MLNMapProjection.h"
|
||||
@@ -495,6 +496,8 @@ public:
|
||||
CFTimeInterval _frameCounterStartTime;
|
||||
NSInteger _frameCount;
|
||||
CFTimeInterval _frameDurations;
|
||||
|
||||
MLNRenderingStats* _renderingStats;
|
||||
}
|
||||
|
||||
// MARK: - Setup & Teardown -
|
||||
@@ -6913,8 +6916,7 @@ static void *windowScreenContext = &windowScreenContext;
|
||||
}
|
||||
|
||||
- (void)mapViewDidFinishRenderingFrameFullyRendered:(BOOL)fullyRendered
|
||||
frameEncodingTime:(double)frameEncodingTime
|
||||
frameRenderingTime:(double)frameRenderingTime {
|
||||
renderingStats:(const mbgl::gfx::RenderingStats &)stats {
|
||||
if (!_mbglMap)
|
||||
{
|
||||
return;
|
||||
@@ -6926,9 +6928,21 @@ static void *windowScreenContext = &windowScreenContext;
|
||||
[self.style didChangeValueForKey:@"layers"];
|
||||
}
|
||||
|
||||
if ([self.delegate respondsToSelector:@selector(mapViewDidFinishRenderingFrame:fullyRendered:frameEncodingTime:frameRenderingTime:)])
|
||||
if ([self.delegate respondsToSelector:@selector(mapViewDidFinishRenderingFrame:fullyRendered:renderingStats:)])
|
||||
{
|
||||
[self.delegate mapViewDidFinishRenderingFrame:self fullyRendered:fullyRendered frameEncodingTime:frameEncodingTime frameRenderingTime:frameRenderingTime];
|
||||
if (!_renderingStats) {
|
||||
_renderingStats = [[MLNRenderingStats alloc] init];
|
||||
}
|
||||
|
||||
[_renderingStats setCoreData:stats];
|
||||
[self.delegate mapViewDidFinishRenderingFrame:self fullyRendered:fullyRendered renderingStats:_renderingStats];
|
||||
}
|
||||
else if ([self.delegate respondsToSelector:@selector(mapViewDidFinishRenderingFrame:fullyRendered:frameEncodingTime:frameRenderingTime:)])
|
||||
{
|
||||
[self.delegate mapViewDidFinishRenderingFrame:self
|
||||
fullyRendered:fullyRendered
|
||||
frameEncodingTime:stats.encodingTime
|
||||
frameRenderingTime:stats.renderingTime];
|
||||
}
|
||||
else if ([self.delegate respondsToSelector:@selector(mapViewDidFinishRenderingFrame:fullyRendered:)])
|
||||
{
|
||||
@@ -7557,6 +7571,14 @@ static void *windowScreenContext = &windowScreenContext;
|
||||
return _annotationViewReuseQueueByIdentifier[identifier];
|
||||
}
|
||||
|
||||
- (BOOL)isRenderingStatsViewEnabled {
|
||||
return _mbglMap->isRenderingStatsViewEnabled();
|
||||
}
|
||||
|
||||
- (void)enableRenderingStatsView:(BOOL)value {
|
||||
_mbglMap->enableRenderingStatsView(value);
|
||||
}
|
||||
|
||||
- (void)triggerRepaint
|
||||
{
|
||||
_mbglMap->triggerRepaint();
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#import "MLNCameraChangeReason.h"
|
||||
#import "MLNRenderingStats.h"
|
||||
#import "MLNTileOperation.h"
|
||||
#import "Mapbox.h"
|
||||
|
||||
@@ -267,6 +268,23 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
fullyRendered:(BOOL)fullyRendered
|
||||
frameEncodingTime:(double)frameEncodingTime
|
||||
frameRenderingTime:(double)frameRenderingTime;
|
||||
/**
|
||||
Tells the delegate that the map view has just redrawn.
|
||||
|
||||
This method is called any time the map view needs to redraw due to a change in
|
||||
the viewpoint or style property transition. This method may be called very
|
||||
frequently, even moreso than `-mapViewRegionIsChanging:`. Therefore, your
|
||||
implementation of this method should be as lightweight as possible to avoid
|
||||
affecting performance.
|
||||
|
||||
@param mapView The map view that has just redrawn.
|
||||
@param fullyRendered A Boolean value indicating whether the map is fully rendered or not.
|
||||
@param renderingStats A collection of rendering statistics
|
||||
*/
|
||||
- (void)mapViewDidFinishRenderingFrame:(MLNMapView *)mapView
|
||||
fullyRendered:(BOOL)fullyRendered
|
||||
renderingStats:(MLNRenderingStats *)renderingStats;
|
||||
|
||||
/**
|
||||
Tells the delegate that the map view is entering an idle state, and no more
|
||||
drawing will be necessary until new data is loaded or there is some interaction
|
||||
|
||||
@@ -3,11 +3,14 @@
|
||||
#import "MLNTileOperation.h"
|
||||
#import "MLNUserLocationAnnotationView.h"
|
||||
|
||||
#include <mbgl/util/size.hpp>
|
||||
|
||||
namespace mbgl {
|
||||
class Map;
|
||||
class Renderer;
|
||||
|
||||
namespace gfx {
|
||||
struct RenderingStats;
|
||||
}
|
||||
|
||||
} // namespace mbgl
|
||||
|
||||
class MLNMapViewImpl;
|
||||
@@ -39,8 +42,7 @@ FOUNDATION_EXTERN MLN_EXPORT MLNExceptionName const _Nonnull MLNUnderlyingMapUna
|
||||
- (void)mapViewDidFailLoadingMapWithError:(nonnull NSError *)error;
|
||||
- (void)mapViewWillStartRenderingFrame;
|
||||
- (void)mapViewDidFinishRenderingFrameFullyRendered:(BOOL)fullyRendered
|
||||
frameEncodingTime:(double)frameEncodingTime
|
||||
frameRenderingTime:(double)frameRenderingTime;
|
||||
renderingStats:(const mbgl::gfx::RenderingStats &)stats;
|
||||
- (void)mapViewWillStartRenderingMap;
|
||||
- (void)mapViewDidFinishRenderingMapFullyRendered:(BOOL)fullyRendered;
|
||||
- (void)mapViewDidBecomeIdle;
|
||||
|
||||
Reference in New Issue
Block a user