/*------------------------------------------------------------------------- * 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 iOS View Controller. *//*--------------------------------------------------------------------*/ #import <QuartzCore/QuartzCore.h> #import "tcuIOSViewController.h" #import "tcuEAGLView.h" #include "qpDebugOut.h" @interface tcuIOSViewController () @property (nonatomic, assign) CADisplayLink *displayLink; @end @implementation tcuIOSViewController @synthesize displayLink; - (void)loadView { tcuEAGLView *view = [[tcuEAGLView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame]; self.view = view; [view release]; } - (void)viewDidLoad { [super viewDidLoad]; isIterating = FALSE; self.displayLink = nil; app = tcuIOSApp_create(self.view); } - (void)dealloc { [super dealloc]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; } - (void)viewDidUnload { [super viewDidUnload]; } - (void)startTestIteration { if (!isIterating) { DE_ASSERT(self.displayLink == nil); // Obtain display link. self.displayLink = [[UIScreen mainScreen] displayLinkWithTarget:self selector:@selector(iterate)]; [self.displayLink setFrameInterval:1]; [self.displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; isIterating = TRUE; } } - (void)stopTestIteration { if (isIterating) { isIterating = FALSE; [self.displayLink invalidate]; self.displayLink = nil; } } - (void)iterate { if (isIterating) { deBool result = tcuIOSApp_iterate(app); if (!result) { [self stopTestIteration]; qpDief("Fatal error occurred in test execution, killing process."); } } } @end