// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include <lib/async-loop/cpp/loop.h>
#include <lib/async-loop/default.h>

#include <src/lib/syslog/cpp/logger.h>
#include <src/lib/ui/base_view/view_provider_component.h>

#include "demo_view.h"

int main(int argc, const char** argv) {
  syslog::SetTags({"camera_display"});

  async::Loop loop(&kAsyncLoopConfigAttachToCurrentThread);

  // Chaos mode adds random delays between frame acquisition, presentation, and release.
  bool chaos = false;
  for (auto i = 1; i < argc; ++i) {
    if (std::string(argv[i]) == "--chaos") {
      std::cout << "Chaos mode enabled!" << std::endl;
      chaos = true;
    }
  }
  scenic::ViewProviderComponent component(
      [&loop, chaos](scenic::ViewContext context) {
        return camera::DemoView::Create(std::move(context), &loop, chaos);
      },
      &loop);

  loop.Run();
  return EXIT_SUCCESS;
}
