# HG changeset patch # User koda # Date 1296917144 -3600 # Node ID bc3c077e15a254e41c4e540c3875a2bad4de2efe # Parent c6d3aec73f93d4727b4268d8f1861702583de57b cleaning up how chat is handled on idevices updated project to use updated libs some leaks resolved (maybe) diff -r c6d3aec73f93 -r bc3c077e15a2 hedgewars/PascalExports.pas --- a/hedgewars/PascalExports.pas Sat Feb 05 11:32:15 2011 +0300 +++ b/hedgewars/PascalExports.pas Sat Feb 05 15:45:44 2011 +0100 @@ -199,6 +199,11 @@ ParseCommand('forcequit', true); end; +function HW_getSDLWindow: pointer; cdecl; export; +begin + exit( SDLwindow ); +end; + // cursor handling procedure HW_setCursor(x,y: LongInt); cdecl; export; begin diff -r c6d3aec73f93 -r bc3c077e15a2 hedgewars/uChat.pas --- a/hedgewars/uChat.pas Sat Feb 05 11:32:15 2011 +0300 +++ b/hedgewars/uChat.pas Sat Feb 05 15:45:44 2011 +0100 @@ -65,9 +65,9 @@ color: TSDL_Color; font: THWFont; begin -if cl.Tex <> nil then - FreeTexture(cl.Tex); - +// these two lines lines crash when run multiple times? +//if cl.Tex <> nil then +// FreeTexture(cl.Tex); cl.s:= str; diff -r c6d3aec73f93 -r bc3c077e15a2 hedgewars/uStore.pas --- a/hedgewars/uStore.pas Sat Feb 05 11:32:15 2011 +0300 +++ b/hedgewars/uStore.pas Sat Feb 05 15:45:44 2011 +0100 @@ -343,8 +343,9 @@ tmpsurf:= TTF_RenderUTF8_Blended(Fontz[CheckCJKFont(trAmmo[NameId],fnt16)].Handle, Str2PChar(trAmmo[NameId]), cWhiteColorChannels); TryDo(tmpsurf <> nil,'Name-texture creation for ammo type #' + intToStr(ord(ai)) + ' failed!',true); tmpsurf:= doSurfaceConversion(tmpsurf); - if (NameTex <> nil) then - FreeTexture(NameTex); + // these two lines lines crash when run multiple times? + //if (NameTex <> nil) then + // FreeTexture(NameTex); NameTex:= Surface2Tex(tmpsurf, false); SDL_FreeSurface(tmpsurf) end; @@ -354,8 +355,9 @@ begin tmpsurf:= TTF_RenderUTF8_Blended(Fontz[fnt16].Handle, Str2PChar(IntToStr(i) + 'x'), cWhiteColorChannels); tmpsurf:= doSurfaceConversion(tmpsurf); - if (CountTexz[i] <> nil) then - FreeTexture(CountTexz[i]); + // these two lines lines crash when run multiple times? + //if (CountTexz[i] <> nil) then + // FreeTexture(CountTexz[i]); CountTexz[i]:= Surface2Tex(tmpsurf, false); SDL_FreeSurface(tmpsurf) end; diff -r c6d3aec73f93 -r bc3c077e15a2 project_files/HedgewarsMobile/Classes/InGameMenuViewController.h --- a/project_files/HedgewarsMobile/Classes/InGameMenuViewController.h Sat Feb 05 11:32:15 2011 +0300 +++ b/project_files/HedgewarsMobile/Classes/InGameMenuViewController.h Sat Feb 05 15:45:44 2011 +0100 @@ -24,13 +24,11 @@ @interface InGameMenuViewController : UITableViewController { NSArray *menuList; - SDL_Window *sdlwindow; } @property (nonatomic,retain) NSArray *menuList; -(void) present; -(void) dismiss; --(void) removeChat; @end diff -r c6d3aec73f93 -r bc3c077e15a2 project_files/HedgewarsMobile/Classes/InGameMenuViewController.m --- a/project_files/HedgewarsMobile/Classes/InGameMenuViewController.m Sat Feb 05 11:32:15 2011 +0300 +++ b/project_files/HedgewarsMobile/Classes/InGameMenuViewController.m Sat Feb 05 15:45:44 2011 +0100 @@ -48,31 +48,11 @@ self.menuList = array; [array release]; - // save the sdl window (!= uikit window) for future reference - SDL_VideoDevice *videoDevice = SDL_GetVideoDevice(); - if (videoDevice) { - SDL_VideoDisplay *display = &videoDevice->displays[0]; - if (display) - sdlwindow = display->windows; - } [super viewDidLoad]; } --(void) viewWillAppear:(BOOL)animated { - if (sdlwindow == NULL) { - SDL_VideoDevice *_this = SDL_GetVideoDevice(); - if (_this) { - SDL_VideoDisplay *display = &_this->displays[0]; - if (display) - sdlwindow = display->windows; - } - } - [super viewWillAppear:animated]; -} - -(void) viewDidUnload { self.menuList = nil; - sdlwindow = NULL; MSG_DIDUNLOAD(); [super viewDidUnload]; } @@ -106,7 +86,8 @@ [self.view performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:0.35]; - [self removeChat]; + HW_chatEnd(); + SDL_iPhoneKeyboardHide((SDL_Window *)HW_getSDLWindow()); } #pragma mark - @@ -127,7 +108,7 @@ cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease]; } - cell.textLabel.text = [menuList objectAtIndex:[indexPath row]]; + cell.textLabel.text = [self.menuList objectAtIndex:[indexPath row]]; if (IS_IPAD()) cell.textLabel.textAlignment = UITextAlignmentCenter; @@ -143,12 +124,8 @@ [[NSNotificationCenter defaultCenter] postNotificationName:@"show help ingame" object:nil]; break; case 1: - if (SDL_iPhoneKeyboardIsShown(sdlwindow)) - [self removeChat]; - else { - HW_chat(); - SDL_iPhoneKeyboardShow(sdlwindow); - } + HW_chat(); + SDL_iPhoneKeyboardShow((SDL_Window *)HW_getSDLWindow()); break; case 2: // expand the view (and table) so that the actionsheet can be selected on the iPhone @@ -177,13 +154,6 @@ [aTableView deselectRowAtIndexPath:indexPath animated:YES]; } --(void) removeChat { - if (SDL_iPhoneKeyboardIsShown(sdlwindow)) { - SDL_iPhoneKeyboardHide(sdlwindow); - HW_chatEnd(); - } -} - #pragma mark - #pragma mark actionSheet methods -(void) actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger) buttonIndex { diff -r c6d3aec73f93 -r bc3c077e15a2 project_files/HedgewarsMobile/Classes/OverlayViewController.m --- a/project_files/HedgewarsMobile/Classes/OverlayViewController.m Sat Feb 05 11:32:15 2011 +0300 +++ b/project_files/HedgewarsMobile/Classes/OverlayViewController.m Sat Feb 05 15:45:44 2011 +0100 @@ -486,12 +486,10 @@ if (HW_isPaused()) HW_pauseToggle(); - if (IS_IPAD()) { - [(InGameMenuViewController *)[[self popoverController] contentViewController] removeChat]; + [self.popupMenu dismiss]; + if (IS_IPAD()) [self.popoverController dismissPopoverAnimated:YES]; - } else { - [self.popupMenu dismiss]; - } + [self buttonReleased:nil]; } } diff -r c6d3aec73f93 -r bc3c077e15a2 project_files/HedgewarsMobile/Classes/PascalImports.h --- a/project_files/HedgewarsMobile/Classes/PascalImports.h Sat Feb 05 11:32:15 2011 +0300 +++ b/project_files/HedgewarsMobile/Classes/PascalImports.h Sat Feb 05 15:45:44 2011 +0100 @@ -68,6 +68,7 @@ void HW_pauseToggle(void); BOOL HW_isPaused(void); + void *HW_getSDLWindow(void); void HW_terminate(BOOL andCloseFrontend); void HW_suspend(void); void HW_resume(void); diff -r c6d3aec73f93 -r bc3c077e15a2 project_files/HedgewarsMobile/Classes/TeamConfigViewController.m --- a/project_files/HedgewarsMobile/Classes/TeamConfigViewController.m Sat Feb 05 11:32:15 2011 +0300 +++ b/project_files/HedgewarsMobile/Classes/TeamConfigViewController.m Sat Feb 05 15:45:44 2011 +0100 @@ -77,7 +77,9 @@ selectedTeamsCount = [self.listOfSelectedTeams count]; allTeamsCount = [self.listOfTeams count]; - self.cachedContentsOfDir = [[NSArray alloc] initWithArray:contentsOfDir copyItems:YES]; + NSArray *contents = [[NSArray alloc] initWithArray:contentsOfDir copyItems:YES]; + self.cachedContentsOfDir = contents; + [contents release]; } [self.tableView reloadData]; } diff -r c6d3aec73f93 -r bc3c077e15a2 project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj --- a/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Sat Feb 05 11:32:15 2011 +0300 +++ b/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Sat Feb 05 15:45:44 2011 +0100 @@ -715,42 +715,42 @@ isa = PBXContainerItemProxy; containerPortal = 617988D3114AAA3900BA94A9 /* SDLiPhoneOS.xcodeproj */; proxyType = 2; - remoteGlobalIDString = FD6526630DE8FCCB002AD96B /* libSDLiPhoneOS.a */; + remoteGlobalIDString = FD6526630DE8FCCB002AD96B; remoteInfo = StaticLibiPhoneOS; }; 61B7A54F12FA129F0051E14E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 617988D3114AAA3900BA94A9 /* SDLiPhoneOS.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 006E982211955059001DE610 /* testsdl.app */; + remoteGlobalIDString = 006E982211955059001DE610; remoteInfo = testsdl; }; 61B7A55712FA12AD0051E14E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 6127232E117DF752005B90CF /* SDL_image.xcodeproj */; proxyType = 2; - remoteGlobalIDString = BE1FA74107AF4C45004B6283 /* libSDL_image.a */; + remoteGlobalIDString = BE1FA74107AF4C45004B6283; remoteInfo = "Static Library"; }; 61B7A55F12FA12BF0051E14E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 6179898B114AB3FA00BA94A9 /* SDL_mixer.xcodeproj */; proxyType = 2; - remoteGlobalIDString = BE1FA95407AF96B2004B6283 /* libSDL_mixer.a */; + remoteGlobalIDString = BE1FA95407AF96B2004B6283; remoteInfo = "Static Library"; }; 61B7A56712FA12D00051E14E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 618E27B612A2C30700C20EF0 /* SDL_net.xcodeproj */; proxyType = 2; - remoteGlobalIDString = BE48FF6F07AFA9A900BB41DA /* libSDL_net.a */; + remoteGlobalIDString = BE48FF6F07AFA9A900BB41DA; remoteInfo = "Static Library"; }; 61B7A58F12FA13330051E14E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 61798A0B114AB65600BA94A9 /* SDL_ttf.xcodeproj */; proxyType = 2; - remoteGlobalIDString = BE48FD6E07AFA17000BB41DA /* libSDL_ttf.a */; + remoteGlobalIDString = BE48FD6E07AFA17000BB41DA; remoteInfo = "Static Library"; }; 928301590F10E41300CC5A3C /* PBXContainerItemProxy */ = {