/*------------------------------------------------------------------------- * drawElements Quality Program Tester Core * ---------------------------------------- * * Copyright 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * *//*! * \file * \brief Android test activity. *//*--------------------------------------------------------------------*/ #include "tcuAndroidTestActivity.hpp" #include "tcuAndroidUtil.hpp" #include #include #include using std::string; namespace tcu { namespace Android { // TestThread TestThread::TestThread(NativeActivity &activity, const std::string &cmdLineString, const CommandLine &cmdLine) : RenderThread(activity) , m_cmdLine(cmdLine) , m_platform(activity) , m_archive(activity.getNativeActivity()->assetManager) , m_log(m_cmdLine.getLogFileName(), m_cmdLine.getLogFlags()) , m_app(m_platform, m_archive, m_log, m_cmdLine) , m_finished(false) { const std::string sessionInfo = "#sessionInfo commandLineParameters \""; m_log.writeSessionInfo(sessionInfo + cmdLineString + "\"\n"); } TestThread::~TestThread(void) { // \note m_testApp is managed by thread. } void TestThread::run(void) { RenderThread::run(); } void TestThread::onWindowCreated(ANativeWindow *window) { m_platform.getWindowRegistry().addWindow(window); } void TestThread::onWindowDestroyed(ANativeWindow *window) { m_platform.getWindowRegistry().destroyWindow(window); } void TestThread::onWindowResized(ANativeWindow *window) { DE_UNREF(window); print("Warning: Native window was resized, results may be undefined"); } bool TestThread::render(void) { if (!m_finished) m_finished = !m_app.iterate(); return !m_finished; } // TestActivity TestActivity::TestActivity(ANativeActivity *activity) : RenderActivity(activity) , m_cmdLine(getIntentStringExtra(activity, "cmdLine")) , m_testThread(*this, getIntentStringExtra(activity, "cmdLine"), m_cmdLine) , m_started(false) { // Set initial orientation. setRequestedOrientation(getNativeActivity(), mapScreenRotation(m_cmdLine.getScreenRotation())); // Set up window flags. ANativeActivity_setWindowFlags(activity, AWINDOW_FLAG_KEEP_SCREEN_ON | AWINDOW_FLAG_TURN_SCREEN_ON | AWINDOW_FLAG_FULLSCREEN | AWINDOW_FLAG_SHOW_WHEN_LOCKED, 0); } TestActivity::~TestActivity(void) { } void TestActivity::onStart(void) { if (!m_started) { setThread(&m_testThread); m_testThread.start(); m_started = true; } RenderActivity::onStart(); } void TestActivity::onDestroy(void) { if (m_started) { setThread(DE_NULL); m_testThread.stop(); m_started = false; } RenderActivity::onDestroy(); // Kill this process. print("Done, killing process"); exit(0); } void TestActivity::onConfigurationChanged(void) { RenderActivity::onConfigurationChanged(); // Update rotation. setRequestedOrientation(getNativeActivity(), mapScreenRotation(m_cmdLine.getScreenRotation())); } } // namespace Android } // namespace tcu