13c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*------------------------------------------------------------------------- 23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * drawElements Quality Program Tester Core 33c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * ---------------------------------------- 43c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 53c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Copyright 2014 The Android Open Source Project 63c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 73c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Licensed under the Apache License, Version 2.0 (the "License"); 83c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * you may not use this file except in compliance with the License. 93c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * You may obtain a copy of the License at 103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * http://www.apache.org/licenses/LICENSE-2.0 123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Unless required by applicable law or agreed to in writing, software 143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * distributed under the License is distributed on an "AS IS" BASIS, 153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * See the License for the specific language governing permissions and 173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * limitations under the License. 183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*! 203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \file 213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Android test activity. 223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "tcuAndroidTestActivity.hpp" 253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "tcuAndroidUtil.hpp" 263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include <android/window.h> 283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include <string> 303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include <stdlib.h> 313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 323c827367444ee418f129b2c238299f49d3264554Jarkko Poyryusing std::string; 333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 343c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace tcu 353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 363c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace Android 373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry// TestThread 403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 413c827367444ee418f129b2c238299f49d3264554Jarkko PoyryTestThread::TestThread (NativeActivity& activity, const CommandLine& cmdLine) 423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry : RenderThread (activity) 433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , m_cmdLine (cmdLine) 44217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos , m_archive (activity.getNativeActivity()->assetManager) 45217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos , m_log (m_cmdLine.getLogFileName()) 46217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos , m_app (m_platform, m_archive, m_log, m_cmdLine) 47217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos , m_finished (false) 483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 513c827367444ee418f129b2c238299f49d3264554Jarkko PoyryTestThread::~TestThread (void) 523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // \note m_testApp is managed by thread. 543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 563c827367444ee418f129b2c238299f49d3264554Jarkko Poyryvoid TestThread::run (void) 573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry RenderThread::run(); 593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 613c827367444ee418f129b2c238299f49d3264554Jarkko Poyryvoid TestThread::onWindowCreated (ANativeWindow* window) 623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 63217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos m_platform.getWindowRegistry().addWindow(window); 643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 663c827367444ee418f129b2c238299f49d3264554Jarkko Poyryvoid TestThread::onWindowDestroyed (ANativeWindow* window) 673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 68217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos m_platform.getWindowRegistry().destroyWindow(window); 693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 713c827367444ee418f129b2c238299f49d3264554Jarkko Poyryvoid TestThread::onWindowResized (ANativeWindow* window) 723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_UNREF(window); 743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry print("Warning: Native window was resized, results may be undefined"); 753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 773c827367444ee418f129b2c238299f49d3264554Jarkko Poyrybool TestThread::render (void) 783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 79217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos if (!m_finished) 80217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos m_finished = !m_app.iterate(); 81217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos return !m_finished; 823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry// TestActivity 853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 863c827367444ee418f129b2c238299f49d3264554Jarkko PoyryTestActivity::TestActivity (ANativeActivity* activity) 873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry : RenderActivity (activity) 883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , m_cmdLine (getIntentStringExtra(activity, "cmdLine")) 893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry , m_testThread (*this, m_cmdLine) 90217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos , m_started (false) 913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // Set initial orientation. 933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry setRequestedOrientation(getNativeActivity(), mapScreenRotation(m_cmdLine.getScreenRotation())); 943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // Set up window flags. 963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ANativeActivity_setWindowFlags(activity, AWINDOW_FLAG_KEEP_SCREEN_ON | 973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry AWINDOW_FLAG_TURN_SCREEN_ON | 983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry AWINDOW_FLAG_FULLSCREEN | 993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry AWINDOW_FLAG_SHOW_WHEN_LOCKED, 0); 1003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1023c827367444ee418f129b2c238299f49d3264554Jarkko PoyryTestActivity::~TestActivity (void) 1033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 106217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulosvoid TestActivity::onStart (void) 1073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 108217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos if (!m_started) 109217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos { 110217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos setThread(&m_testThread); 111217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos m_testThread.start(); 112217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos m_started = true; 113217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos } 114217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos 115217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos RenderActivity::onStart(); 116217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos} 117217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos 118217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulosvoid TestActivity::onDestroy (void) 119217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos{ 120217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos if (m_started) 121217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos { 122217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos setThread(DE_NULL); 123217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos m_testThread.stop(); 124217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos m_started = false; 125217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos } 126217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos 127217426c2d19d5247e094e363615d7a0b84daf3a7Pyry Haulos RenderActivity::onDestroy(); 1283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // Kill this process. 1303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry print("Done, killing process"); 1313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry exit(0); 1323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1343c827367444ee418f129b2c238299f49d3264554Jarkko Poyryvoid TestActivity::onConfigurationChanged (void) 1353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry RenderActivity::onConfigurationChanged(); 1373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // Update rotation. 1393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry setRequestedOrientation(getNativeActivity(), mapScreenRotation(m_cmdLine.getScreenRotation())); 1403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // Android 1433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // tcu 144