MainLoop,Android: Exclude from score calculations benchmarks that weren't set up correctly.
diff --git a/src/android.cpp b/src/android.cpp
index 7ec6565..d9678f4 100644
--- a/src/android.cpp
+++ b/src/android.cpp
@@ -49,10 +49,20 @@
virtual void log_scene_result()
{
- Log::info("%s FPS: %u FrameTime: %.3f ms\n",
- scene_->info_string().c_str(),
- scene_->average_fps(),
- 1000.0 / scene_->average_fps());
+ if (scene_setup_status_ == SceneSetupStatusSuccess) {
+ Log::info("%s FPS: %u FrameTime: %.3f ms\n",
+ scene_->info_string().c_str(),
+ scene_->average_fps(),
+ 1000.0 / scene_->average_fps());
+ }
+ else if (scene_setup_status_ == SceneSetupStatusUnsupported) {
+ Log::info("%s Unsupported\n",
+ scene_->info_string().c_str());
+ }
+ else {
+ Log::info("%s Set up failed\n",
+ scene_->info_string().c_str());
+ }
}
};
@@ -66,8 +76,20 @@
virtual void log_scene_result()
{
- Log::info("%s FPS: %u", scene_->info_string().c_str(),
- scene_->average_fps());
+ if (scene_setup_status_ == SceneSetupStatusSuccess) {
+ Log::info("%s FPS: %u FrameTime: %.3f ms\n",
+ scene_->info_string().c_str(),
+ scene_->average_fps(),
+ 1000.0 / scene_->average_fps());
+ }
+ else if (scene_setup_status_ == SceneSetupStatusUnsupported) {
+ Log::info("%s Unsupported\n",
+ scene_->info_string().c_str());
+ }
+ else {
+ Log::info("%s Set up failed\n",
+ scene_->info_string().c_str());
+ }
}
};
diff --git a/src/main-loop.cpp b/src/main-loop.cpp
index 6e97a54..2bbd824 100644
--- a/src/main-loop.cpp
+++ b/src/main-loop.cpp
@@ -42,6 +42,7 @@
MainLoop::reset()
{
scene_ = 0;
+ scene_setup_status_ = SceneSetupStatusUnknown;
score_ = 0;
benchmarks_run_ = 0;
bench_iter_ = benchmarks_.begin();
@@ -83,6 +84,15 @@
canvas_.reset();
before_scene_setup();
scene_ = &(*bench_iter_)->setup_scene();
+ if (!scene_->running()) {
+ if (!scene_->supported(false))
+ scene_setup_status_ = SceneSetupStatusUnsupported;
+ else
+ scene_setup_status_ = SceneSetupStatusFailure;
+ }
+ else {
+ scene_setup_status_ = SceneSetupStatusSuccess;
+ }
after_scene_setup();
log_scene_info();
}
@@ -102,12 +112,14 @@
* in draw() may have changed the state.
*/
if (!scene_->running() || should_quit) {
- score_ += scene_->average_fps();
+ if (scene_setup_status_ == SceneSetupStatusSuccess) {
+ score_ += scene_->average_fps();
+ benchmarks_run_++;
+ }
log_scene_result();
(*bench_iter_)->teardown_scene();
scene_ = 0;
next_benchmark();
- benchmarks_run_++;
}
return !should_quit;
@@ -134,11 +146,23 @@
void
MainLoop::log_scene_result()
{
- static const std::string format_fps(Log::continuation_prefix + " FPS: %u");
- static const std::string format_ms(Log::continuation_prefix + " FrameTime: %.3f ms\n");
+ static const std::string format_fps(Log::continuation_prefix +
+ " FPS: %u FrameTime: %.3f ms\n");
+ static const std::string format_unsupported(Log::continuation_prefix +
+ " Unsupported\n");
+ static const std::string format_fail(Log::continuation_prefix +
+ " Set up failed\n");
- Log::info(format_fps.c_str(), scene_->average_fps());
- Log::info(format_ms.c_str(), 1000.0 / scene_->average_fps());
+ if (scene_setup_status_ == SceneSetupStatusSuccess) {
+ Log::info(format_fps.c_str(), scene_->average_fps(),
+ 1000.0 / scene_->average_fps());
+ }
+ else if (scene_setup_status_ == SceneSetupStatusUnsupported) {
+ Log::info(format_unsupported.c_str());
+ }
+ else {
+ Log::info(format_fail.c_str());
+ }
}
void
diff --git a/src/main-loop.h b/src/main-loop.h
index fbdfa57..918681e 100644
--- a/src/main-loop.h
+++ b/src/main-loop.h
@@ -84,12 +84,19 @@
virtual void log_scene_result();
protected:
+ enum SceneSetupStatus {
+ SceneSetupStatusUnknown,
+ SceneSetupStatusSuccess,
+ SceneSetupStatusFailure,
+ SceneSetupStatusUnsupported
+ };
void next_benchmark();
Canvas &canvas_;
Scene *scene_;
const std::vector<Benchmark *> &benchmarks_;
unsigned int score_;
unsigned int benchmarks_run_;
+ SceneSetupStatus scene_setup_status_;
std::vector<Benchmark *>::const_iterator bench_iter_;
};