//
// スリープ抑止用タイマー処理
//  AntiSleep.m
//  ZeroRec/Komadori
//
//  Created by AIG-Soft on 11/04/11.
//  Copyright 2011 AIG-Soft. All rights reserved.
//

#import "AntiSleep.h"
#import	"libs.h"	// tMin()

// 一般的なスリープ禁止
// 普通はこれだけでいいはずだが、カメラ表示中だけはダメ
void SetNonSleep(BOOL onoff)
{
//	[UIApplication sharedApplication].idleTimerDisabled=YES ではなぜかだめ
	UIApplication *thisApp=[UIApplication sharedApplication];
	thisApp.idleTimerDisabled=onoff;
}

@implementation AntiSleep

// Anti-Sleepタイマーリセット
-(void)reset
{
	// !fantiSleepのときは両方共実実行されない
	[self stop];	// 一旦停止
	[self start];	// 再開
}

// AntiSleep用実体呼び出し
-(void)check:(id)sender
{
	// !fantiSleepのときは呼び出されない
	// AntiSleep用実体呼び出し
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"        // 警告回避のため
	[target_ performSelector:selector_ withObject:nil];
#pragma clang diagnostic pop
//	静止画ならこんな感じ
//	ftakePicture=TAKE_PICTURE_ANTI_SLEEP;
//	[picker takePicture]; // Anti-Sleep用
// 動画はちょっと複雑
	[self reset];
}

// Anti-Sleepタイマー開始
-(void)start
{
	antiSleepTimer=[NSTimer timerWithTimeInterval:
			#if	0
					tMin(1)+30.0
			#else	// 本番
					tMin(4)+30.0 /* 4:30秒ごと;実験の結果 */
			#endif
										   target:self
										 selector:@selector(check:)
										 userInfo:nil
										  repeats:YES // 繰り返し
					];
	AddTimerToRunLoop(antiSleepTimer); // 実行ループにタイマーを追加する
}

// Anti-Sleepタイマー停止
-(void)stop
{
	// !fantiSleepのときはnilのままなので実実行されない
	if (antiSleepTimer!=nil) {
		[antiSleepTimer invalidate];
		antiSleepTimer=nil;
	}
}

-(id)initWithTarget:(id)target selector:(SEL)selector
{
	self=[super init];
	if (self!=nil) {
		// 保存
		target_  = target;
		selector_= selector;
	}
	return (self);
}

-(void)dealloc
{
	printSelf();
	[self stop];
}

@end
