1e5c31af7Sopenharmony_ci/*-------------------------------------------------------------------------
2e5c31af7Sopenharmony_ci * drawElements Quality Program Tester Core
3e5c31af7Sopenharmony_ci * ----------------------------------------
4e5c31af7Sopenharmony_ci *
5e5c31af7Sopenharmony_ci * Copyright 2014 The Android Open Source Project
6e5c31af7Sopenharmony_ci *
7e5c31af7Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
8e5c31af7Sopenharmony_ci * you may not use this file except in compliance with the License.
9e5c31af7Sopenharmony_ci * You may obtain a copy of the License at
10e5c31af7Sopenharmony_ci *
11e5c31af7Sopenharmony_ci *      http://www.apache.org/licenses/LICENSE-2.0
12e5c31af7Sopenharmony_ci *
13e5c31af7Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
14e5c31af7Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
15e5c31af7Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16e5c31af7Sopenharmony_ci * See the License for the specific language governing permissions and
17e5c31af7Sopenharmony_ci * limitations under the License.
18e5c31af7Sopenharmony_ci *
19e5c31af7Sopenharmony_ci *//*!
20e5c31af7Sopenharmony_ci * \file
21e5c31af7Sopenharmony_ci * \brief iOS View Controller.
22e5c31af7Sopenharmony_ci *//*--------------------------------------------------------------------*/
23e5c31af7Sopenharmony_ci
24e5c31af7Sopenharmony_ci#import <QuartzCore/QuartzCore.h>
25e5c31af7Sopenharmony_ci
26e5c31af7Sopenharmony_ci#import "tcuIOSViewController.h"
27e5c31af7Sopenharmony_ci#import "tcuEAGLView.h"
28e5c31af7Sopenharmony_ci
29e5c31af7Sopenharmony_ci#include "qpDebugOut.h"
30e5c31af7Sopenharmony_ci
31e5c31af7Sopenharmony_ci@interface tcuIOSViewController ()
32e5c31af7Sopenharmony_ci@property (nonatomic, assign) CADisplayLink *displayLink;
33e5c31af7Sopenharmony_ci@end
34e5c31af7Sopenharmony_ci
35e5c31af7Sopenharmony_ci@implementation tcuIOSViewController
36e5c31af7Sopenharmony_ci
37e5c31af7Sopenharmony_ci@synthesize displayLink;
38e5c31af7Sopenharmony_ci
39e5c31af7Sopenharmony_ci- (void)loadView
40e5c31af7Sopenharmony_ci{
41e5c31af7Sopenharmony_ci	tcuEAGLView *view = [[tcuEAGLView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];
42e5c31af7Sopenharmony_ci	self.view = view;
43e5c31af7Sopenharmony_ci	[view release];
44e5c31af7Sopenharmony_ci}
45e5c31af7Sopenharmony_ci
46e5c31af7Sopenharmony_ci- (void)viewDidLoad
47e5c31af7Sopenharmony_ci{
48e5c31af7Sopenharmony_ci	[super viewDidLoad];
49e5c31af7Sopenharmony_ci
50e5c31af7Sopenharmony_ci    isIterating			= FALSE;
51e5c31af7Sopenharmony_ci    self.displayLink	= nil;
52e5c31af7Sopenharmony_ci	app					= tcuIOSApp_create(self.view);
53e5c31af7Sopenharmony_ci}
54e5c31af7Sopenharmony_ci
55e5c31af7Sopenharmony_ci- (void)dealloc
56e5c31af7Sopenharmony_ci{
57e5c31af7Sopenharmony_ci	[super dealloc];
58e5c31af7Sopenharmony_ci}
59e5c31af7Sopenharmony_ci
60e5c31af7Sopenharmony_ci- (void)didReceiveMemoryWarning
61e5c31af7Sopenharmony_ci{
62e5c31af7Sopenharmony_ci	[super didReceiveMemoryWarning];
63e5c31af7Sopenharmony_ci}
64e5c31af7Sopenharmony_ci
65e5c31af7Sopenharmony_ci- (void)viewWillAppear:(BOOL)animated
66e5c31af7Sopenharmony_ci{
67e5c31af7Sopenharmony_ci	[super viewWillAppear:animated];
68e5c31af7Sopenharmony_ci}
69e5c31af7Sopenharmony_ci
70e5c31af7Sopenharmony_ci- (void)viewWillDisappear:(BOOL)animated
71e5c31af7Sopenharmony_ci{
72e5c31af7Sopenharmony_ci	[super viewWillDisappear:animated];
73e5c31af7Sopenharmony_ci}
74e5c31af7Sopenharmony_ci
75e5c31af7Sopenharmony_ci- (void)viewDidUnload
76e5c31af7Sopenharmony_ci{
77e5c31af7Sopenharmony_ci	[super viewDidUnload];
78e5c31af7Sopenharmony_ci}
79e5c31af7Sopenharmony_ci
80e5c31af7Sopenharmony_ci- (void)startTestIteration
81e5c31af7Sopenharmony_ci{
82e5c31af7Sopenharmony_ci    if (!isIterating)
83e5c31af7Sopenharmony_ci	{
84e5c31af7Sopenharmony_ci		DE_ASSERT(self.displayLink == nil);
85e5c31af7Sopenharmony_ci
86e5c31af7Sopenharmony_ci		// Obtain display link.
87e5c31af7Sopenharmony_ci        self.displayLink = [[UIScreen mainScreen] displayLinkWithTarget:self selector:@selector(iterate)];
88e5c31af7Sopenharmony_ci        [self.displayLink setFrameInterval:1];
89e5c31af7Sopenharmony_ci        [self.displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
90e5c31af7Sopenharmony_ci
91e5c31af7Sopenharmony_ci        isIterating = TRUE;
92e5c31af7Sopenharmony_ci    }
93e5c31af7Sopenharmony_ci}
94e5c31af7Sopenharmony_ci
95e5c31af7Sopenharmony_ci- (void)stopTestIteration
96e5c31af7Sopenharmony_ci{
97e5c31af7Sopenharmony_ci    if (isIterating)
98e5c31af7Sopenharmony_ci	{
99e5c31af7Sopenharmony_ci        isIterating = FALSE;
100e5c31af7Sopenharmony_ci        [self.displayLink invalidate];
101e5c31af7Sopenharmony_ci        self.displayLink = nil;
102e5c31af7Sopenharmony_ci    }
103e5c31af7Sopenharmony_ci}
104e5c31af7Sopenharmony_ci
105e5c31af7Sopenharmony_ci- (void)iterate
106e5c31af7Sopenharmony_ci{
107e5c31af7Sopenharmony_ci	if (isIterating)
108e5c31af7Sopenharmony_ci	{
109e5c31af7Sopenharmony_ci		deBool result = tcuIOSApp_iterate(app);
110e5c31af7Sopenharmony_ci
111e5c31af7Sopenharmony_ci		if (!result)
112e5c31af7Sopenharmony_ci		{
113e5c31af7Sopenharmony_ci			[self stopTestIteration];
114e5c31af7Sopenharmony_ci			qpDief("Fatal error occurred in test execution, killing process.");
115e5c31af7Sopenharmony_ci		}
116e5c31af7Sopenharmony_ci	}
117e5c31af7Sopenharmony_ci}
118e5c31af7Sopenharmony_ci
119e5c31af7Sopenharmony_ci@end
120