project_files/HedgewarsMobile/Classes/VoicesViewController.m
changeset 3883 5934ddf9ed5d
parent 3829 81db3c85784b
child 3971 5c82ee165ed5
--- a/project_files/HedgewarsMobile/Classes/VoicesViewController.m	Sun Sep 19 04:12:58 2010 +0200
+++ b/project_files/HedgewarsMobile/Classes/VoicesViewController.m	Sun Sep 19 13:54:38 2010 +0200
@@ -22,7 +22,6 @@
 #import "VoicesViewController.h"
 #import "CommodityFunctions.h"
 
-
 @implementation VoicesViewController
 @synthesize teamDictionary, voiceArray, lastIndexPath;
 
@@ -31,7 +30,6 @@
     return rotationManager(interfaceOrientation);
 }
 
-
 #pragma mark -
 #pragma mark View lifecycle
 -(void) viewDidLoad {
@@ -55,13 +53,19 @@
     [self.tableView setContentOffset:CGPointMake(0,0) animated:NO];
 }
 
--(void) viewWillDisappear:(BOOL)animated {
-    [super viewWillDisappear:animated];
+-(void) viewDidAppear:(BOOL)animated {
+    [super viewDidAppear:animated];
+    Mix_OpenAudio(44100, 0x8010, 1, 1024);
+}
+
+-(void) viewDidDisappear:(BOOL)animated {
+    [super viewDidDisappear:animated];
     if(voiceBeingPlayed != NULL) {
         Mix_HaltChannel(lastChannel);
         Mix_FreeChunk(voiceBeingPlayed);
         voiceBeingPlayed = NULL;
     }
+    Mix_CloseAudio();
 }
 
 
@@ -117,6 +121,7 @@
     }
     [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
 
+    // stop any sound before playing another one
     if (voiceBeingPlayed != NULL) {
         Mix_HaltChannel(lastChannel);
         Mix_FreeChunk(voiceBeingPlayed);
@@ -137,9 +142,13 @@
 #pragma mark -
 #pragma mark Memory management
 -(void) didReceiveMemoryWarning {
-    // Releases the view if it doesn't have a superview.
+    if (voiceBeingPlayed != NULL) {
+        Mix_HaltChannel(lastChannel);
+        Mix_FreeChunk(voiceBeingPlayed);
+        voiceBeingPlayed = NULL;
+    }
+    MSG_MEMCLEAN();
     [super didReceiveMemoryWarning];
-    // Relinquish ownership any cached data, images, etc that aren't in use.
 }
 
 -(void) viewDidUnload {