blob: 040a1e0513ce4a68198674bb307acc12bb1e665c [file] [log] [blame]
// Copyright 2022 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 <lib/sys/cpp/component_context.h>
#include <lib/syslog/cpp/macros.h>
#include "src/ui/examples/simplest_sysmem/view_provider.h"
int main(int argc, const char* argv[], char* envp[]) {
sysmem_example::RenderType type;
// NOTE: Currently `ffx session add` doesn't support argument passing for .cm.
// Until its supported, you'll have to change the arg in the .cml file.
//
// TODO(https://fxbug.dev/42178074): Update instruction once `ffx session add` supports argument passing.
if (argc == 2) {
if (!strcmp(argv[1], "--png")) {
type = sysmem_example::RenderType::PNG;
} else if (!strcmp(argv[1], "--rect")) {
type = sysmem_example::RenderType::RECTANGLE;
} else if (!strcmp(argv[1], "--block")) {
type = sysmem_example::RenderType::COLOR_BLOCK;
} else {
FX_LOGS(ERROR) << "invalid argument: " << argv[1]
<< ". Please specify one of --png, --rect, --block\n";
}
}
async::Loop loop(&kAsyncLoopConfigAttachToCurrentThread);
// NOTE: To avoid race-condition , we should call to create & serve context
// separately.
auto context = sys::ComponentContext::Create();
auto simplest_sysmem_view =
std::make_unique<sysmem_example::ViewProviderImpl>(context.get(), type);
context->outgoing()->ServeFromStartupInfo();
loop.Run();
return 0;
}