# HG changeset patch # User koda # Date 1302042602 -7200 # Node ID d8856d98ce7d11aa7a82bd7b1a43db729ed5c530 # Parent 6d2e8a24277e3590aa695401beff2d633cae1d50# Parent d48230ef9447d85956abe3daaac45ac17711a0f0 merge diff -r d48230ef9447 -r d8856d98ce7d hedgewars/hwengine.pas --- a/hedgewars/hwengine.pas Tue Apr 05 16:27:58 2011 -0400 +++ b/hedgewars/hwengine.pas Wed Apr 06 00:30:02 2011 +0200 @@ -209,11 +209,7 @@ cFullScreen:= false; cTimerInterval:= 8; PathPrefix:= 'Data'; -{$IFDEF DEBUGFILE} - cShowFPS:= true; -{$ELSE} - cShowFPS:= false; -{$ENDIF} + cShowFPS:= {$IFDEF DEBUGFILE}true{$ELSE}false{$ENDIF}; val(gameArgs[0], ipcPort); val(gameArgs[1], cScreenWidth); val(gameArgs[2], cScreenHeight); diff -r d48230ef9447 -r d8856d98ce7d hedgewars/uStore.pas --- a/hedgewars/uStore.pas Tue Apr 05 16:27:58 2011 -0400 +++ b/hedgewars/uStore.pas Wed Apr 06 00:30:02 2011 +0200 @@ -931,7 +931,7 @@ x:= (SDL_WINDOWPOS_CENTERED_MASK or {$IFDEF IPHONEOS}(SDL_GetNumVideoDisplays() - 1){$ELSE}0{$ENDIF}); y:= (SDL_WINDOWPOS_CENTERED_MASK or {$IFDEF IPHONEOS}(SDL_GetNumVideoDisplays() - 1){$ELSE}0{$ENDIF}); SDLwindow:= SDL_CreateWindow('Hedgewars', x, y, cScreenWidth, cScreenHeight, SDL_WINDOW_OPENGL or SDL_WINDOW_SHOWN - {$IFDEF IPHONEOS} or SDL_WINDOW_BORDERLESS {$ENDIF}); + {$IFDEF IPHONEOS} or SDL_WINDOW_BORDERLESS {$ENDIF}); // do not set SDL_WINDOW_RESIZABLE on iOS SDLrender:= SDL_CreateRenderer(SDLwindow, -1, SDL_RENDERER_ACCELERATED or SDL_RENDERER_PRESENTVSYNC); end; diff -r d48230ef9447 -r d8856d98ce7d project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.m --- a/project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.m Tue Apr 05 16:27:58 2011 -0400 +++ b/project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.m Wed Apr 06 00:30:02 2011 +0200 @@ -35,25 +35,14 @@ #define BLACKVIEW_TAG 17935 #define SECONDBLACKVIEW_TAG 48620 -#define VALGRIND "/opt/fink/bin/valgrind" + +@implementation SDLUIKitDelegate (customDelegate) -int main (int argc, char *argv[]) { -#ifdef VALGRIND_REXEC - // Using the valgrind build config, rexec ourself in valgrind - // from http://landonf.bikemonkey.org/code/iphone/iPhone_Simulator_Valgrind.20081224.html - if (argc < 2 || (argc >= 2 && strcmp(argv[1], "-valgrind") != 0)) - execl(VALGRIND, VALGRIND, "--leak-check=full", "--dsymutil=yes", argv[0], "-valgrind", NULL); -#endif - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - int retVal = UIApplicationMain(argc, argv, nil, @"HedgewarsAppDelegate"); - [pool release]; - return retVal; ++(NSString *)getAppDelegateClassName { + return @"HedgewarsAppDelegate"; } -int SDL_main(int argc, char **argv) { - // dummy function to prevent linkage fail - return 0; -} +@end @implementation HedgewarsAppDelegate @synthesize mainViewController, overlayController, uiwindow, secondWindow, isInGame; @@ -222,8 +211,12 @@ print_free_memory(); } +//TODO: when the SDLUIKitDelegate methods applicationWillResignActive and applicationDidBecomeActive do work +// you'll be able to remove the methods below and just handle the SDL_WINDOWEVENT_MINIMIZED/SDL_WINDOWEVENT_RESTORED +// events in the MainLoop + -(void) applicationWillResignActive:(UIApplication *)application { - [super applicationWillResignActive: application]; + //[super applicationWillResignActive:application]; UIDevice* device = [UIDevice currentDevice]; if ([device respondsToSelector:@selector(isMultitaskingSupported)] && @@ -247,7 +240,7 @@ } -(void) applicationDidBecomeActive:(UIApplication *)application { - [super applicationDidBecomeActive:application]; + //[super applicationDidBecomeActive:application]; UIDevice* device = [UIDevice currentDevice]; if ([device respondsToSelector:@selector(isMultitaskingSupported)] && diff -r d48230ef9447 -r d8856d98ce7d project_files/HedgewarsMobile/Classes/ObjcExports.m --- a/project_files/HedgewarsMobile/Classes/ObjcExports.m Tue Apr 05 16:27:58 2011 -0400 +++ b/project_files/HedgewarsMobile/Classes/ObjcExports.m Wed Apr 06 00:30:02 2011 +0200 @@ -154,3 +154,10 @@ void updateVisualsNewTurn(void) { [amvc_instance updateAmmoVisuals]; } + +// dummy function to prevent linkage fail +int SDL_main(int argc, char **argv) { + return 0; +} + + diff -r d48230ef9447 -r d8856d98ce7d project_files/HedgewarsMobile/Classes/OverlayViewController.h --- a/project_files/HedgewarsMobile/Classes/OverlayViewController.h Tue Apr 05 16:27:58 2011 -0400 +++ b/project_files/HedgewarsMobile/Classes/OverlayViewController.h Wed Apr 06 00:30:02 2011 +0200 @@ -53,9 +53,6 @@ BOOL useClassicMenu; NSInteger initialOrientation; - // the containing window - UIWindow *containerWindow; - // dual head support NSInteger initialScreenCount; NSInteger a, b; @@ -68,7 +65,6 @@ @property (assign) BOOL isNetGame; @property (assign) BOOL useClassicMenu; @property (assign) NSInteger initialOrientation; -@property (assign) UIWindow *containerWindow; -(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; -(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event; diff -r d48230ef9447 -r d8856d98ce7d project_files/HedgewarsMobile/Classes/OverlayViewController.m --- a/project_files/HedgewarsMobile/Classes/OverlayViewController.m Tue Apr 05 16:27:58 2011 -0400 +++ b/project_files/HedgewarsMobile/Classes/OverlayViewController.m Wed Apr 06 00:30:02 2011 +0200 @@ -39,10 +39,11 @@ [[self.view viewWithTag:GRENADE_TAG] removeFromSuperview]; @implementation OverlayViewController -@synthesize popoverController, popupMenu, helpPage, amvc, isNetGame, useClassicMenu, initialOrientation, containerWindow; +@synthesize popoverController, popupMenu, helpPage, amvc, isNetGame, useClassicMenu, initialOrientation; #pragma mark - #pragma mark rotation + -(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { // don't rotate until the game is running for performance and synchronization with the sdlview if (isGameRunning() == NO) @@ -98,17 +99,20 @@ return; UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; - + UIView *sdlView = [[[UIApplication sharedApplication] keyWindow] viewWithTag:SDL_VIEW_TAG]; + [UIView beginAnimations:@"rotation" context:NULL]; [UIView setAnimationDuration:0.7]; switch (orientation) { case UIDeviceOrientationLandscapeLeft: self.view.frame = [[UIScreen mainScreen] bounds]; self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(90)); + sdlView.transform = CGAffineTransformMakeRotation(degreesToRadians(a)); break; case UIDeviceOrientationLandscapeRight: self.view.frame = [[UIScreen mainScreen] bounds]; self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(-90)); + sdlView.transform = CGAffineTransformMakeRotation(degreesToRadians(b)); break; default: // a debug log would spam too much @@ -151,7 +155,6 @@ initialScreenCount = 1; // set initial orientation of the controller orientation - if (IS_DUALHEAD()) { switch (self.interfaceOrientation) { case UIDeviceOrientationLandscapeLeft: self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(90)); @@ -168,7 +171,6 @@ selector:@selector(dualHeadRotation:) name:UIDeviceOrientationDidChangeNotification object:nil]; - } // the timer used to dim the overlay dimTimer = [[NSTimer alloc] initWithFireDate:(IS_DUALHEAD()) ? HIDING_TIME_NEVER : [NSDate dateWithTimeIntervalSinceNow:6] @@ -205,8 +207,6 @@ object:nil]; } - self.containerWindow = [[UIApplication sharedApplication] keyWindow]; - // present the overlay [UIView beginAnimations:@"showing overlay" context:NULL]; [UIView setAnimationDuration:2]; diff -r d48230ef9447 -r d8856d98ce7d project_files/HedgewarsMobile/SDL.patch --- a/project_files/HedgewarsMobile/SDL.patch Tue Apr 05 16:27:58 2011 -0400 +++ b/project_files/HedgewarsMobile/SDL.patch Wed Apr 06 00:30:02 2011 +0200 @@ -1,26 +1,26 @@ -diff -r 48067bfc300c Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj ---- a/Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj Mon Feb 14 11:50:18 2011 -0600 -+++ b/Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj Sun Mar 13 18:22:16 2011 +0100 -@@ -1695,6 +1695,7 @@ +diff -r 8a04b596b472 Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj +--- a/Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj Tue Apr 05 09:50:25 2011 -0700 ++++ b/Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj Tue Apr 05 22:19:33 2011 +0200 +@@ -1602,6 +1602,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; GCC_C_LANGUAGE_STANDARD = c99; GCC_DEBUGGING_SYMBOLS = full; + GCC_THUMB_SUPPORT = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = NO; - IPHONEOS_DEPLOYMENT_TARGET = 3.1; -@@ -1712,6 +1713,7 @@ + IPHONEOS_DEPLOYMENT_TARGET = 3.1.3; +@@ -1619,6 +1620,7 @@ ARCHS = "$(ARCHS_STANDARD_32_BIT)"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; GCC_C_LANGUAGE_STANDARD = c99; + GCC_THUMB_SUPPORT = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = NO; - IPHONEOS_DEPLOYMENT_TARGET = 3.1; -diff -r 48067bfc300c include/SDL_config_iphoneos.h ---- a/include/SDL_config_iphoneos.h Mon Feb 14 11:50:18 2011 -0600 -+++ b/include/SDL_config_iphoneos.h Sun Mar 13 18:22:16 2011 +0100 -@@ -119,7 +119,7 @@ + IPHONEOS_DEPLOYMENT_TARGET = 3.1.3; +diff -r 8a04b596b472 include/SDL_config_iphoneos.h +--- a/include/SDL_config_iphoneos.h Tue Apr 05 09:50:25 2011 -0700 ++++ b/include/SDL_config_iphoneos.h Tue Apr 05 22:19:33 2011 +0200 +@@ -107,7 +107,7 @@ /* enable iPhone version of Core Audio driver */ #define SDL_AUDIO_DRIVER_COREAUDIOIPHONE 1 /* Enable the dummy audio driver (src/audio/dummy/\*.c) */ @@ -29,7 +29,7 @@ /* Enable the stub haptic driver (src/haptic/dummy/\*.c) */ #define SDL_HAPTIC_DISABLED 1 -@@ -140,15 +140,18 @@ +@@ -128,15 +128,18 @@ /* Supported video drivers */ #define SDL_VIDEO_DRIVER_UIKIT 1 @@ -51,7 +51,7 @@ /* enable iPhone keyboard support */ #define SDL_IPHONE_KEYBOARD 1 -@@ -158,4 +161,7 @@ +@@ -146,4 +149,7 @@ */ #define SDL_IPHONE_MAX_GFORCE 5.0 @@ -59,33 +59,14 @@ +#define SDL_VIEW_TAG 456987 + #endif /* _SDL_config_iphoneos_h */ -diff -r 48067bfc300c src/video/uikit/SDL_uikitappdelegate.m ---- a/src/video/uikit/SDL_uikitappdelegate.m Mon Feb 14 11:50:18 2011 -0600 -+++ b/src/video/uikit/SDL_uikitappdelegate.m Sun Mar 13 18:22:16 2011 +0100 -@@ -35,6 +35,7 @@ - static int forward_argc; - static char **forward_argv; - -+#if 0 - int main(int argc, char **argv) { - - int i; -@@ -55,6 +56,7 @@ - [pool release]; - - } -+#endif - - @implementation SDLUIKitDelegate - -diff -r 48067bfc300c src/video/uikit/SDL_uikitopengles.m ---- a/src/video/uikit/SDL_uikitopengles.m Mon Feb 14 11:50:18 2011 -0600 -+++ b/src/video/uikit/SDL_uikitopengles.m Sun Mar 13 18:22:16 2011 +0100 +diff -r 8a04b596b472 src/video/uikit/SDL_uikitopengles.m +--- a/src/video/uikit/SDL_uikitopengles.m Tue Apr 05 09:50:25 2011 -0700 ++++ b/src/video/uikit/SDL_uikitopengles.m Tue Apr 05 22:19:33 2011 +0200 @@ -117,6 +117,7 @@ majorVersion: _this->gl_config.major_version]; data->view = view; + view.tag = SDL_VIEW_TAG; - - /* add the view to our window */ - [uiwindow addSubview: view ]; + view->viewcontroller = data->viewcontroller; + if (view->viewcontroller != nil) { + [view->viewcontroller setView:view];