[Vm-dev] [commit] r2307 - iOS iPhone scroll window rotation cleanup

commits at squeakvm.org commits at squeakvm.org
Tue Sep 14 01:09:54 UTC 2010


Author: johnmci
Date: 2010-09-13 18:09:53 -0700 (Mon, 13 Sep 2010)
New Revision: 2307

Modified:
   trunk/platforms/iOS/vm/OSX/sqSqueakOSXNSView.m
   trunk/platforms/iOS/vm/Settings.bundle/Root.plist
   trunk/platforms/iOS/vm/iPhone/Classes/SqueakNoOGLIPhoneAppDelegate.h
   trunk/platforms/iOS/vm/iPhone/Classes/SqueakNoOGLIPhoneAppDelegate.m
   trunk/platforms/iOS/vm/iPhone/Classes/SqueakUIController.m
   trunk/platforms/iOS/vm/iPhone/Classes/SqueakUIViewOpenGL.m
   trunk/platforms/iOS/vm/iPhone/Classes/sqSqueakIPhoneApplication.m
   trunk/platforms/iOS/vm/iPhone/Classes/sqSqueakIPhoneInfoPlistInterface.m
Log:
iOS iPhone scroll window rotation cleanup 

Settings
pick min as 20MB
pick max as 132MB

sqSqueakOSXNSView.m
remove stray thoughts

SqueakUIController.m
comment out eToys magic rotate me a keyboard

SqueakUIViewOpenGL.m
Handle layoutSubviews and my texture when we rotate

sqSqueakIPhoneApplication
Bug? in 4.1 if you alter the settings it zaps the memory value. No idea...

SqueakNoOGLIPhoneAppDelegate.m/h
comment out eToys magic zoom code
Set window size back to 2x for scroll 
fix and confirm scroll window rotation is sane.. 

Modified: trunk/platforms/iOS/vm/OSX/sqSqueakOSXNSView.m
===================================================================
--- trunk/platforms/iOS/vm/OSX/sqSqueakOSXNSView.m	2010-09-13 21:27:57 UTC (rev 2306)
+++ trunk/platforms/iOS/vm/OSX/sqSqueakOSXNSView.m	2010-09-14 01:09:53 UTC (rev 2307)
@@ -737,72 +737,4 @@
 	} 
 }
 
- at end
-
-
-/*GL_TEXTURE_RECTANGLE_ARB
- glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
- glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA, (int)r.size.width,(int)r.size.height,
- 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, (void*)lastBitsIndex);
- */
-
-/*			glPixelStorei( GL_UNPACK_ROW_LENGTH, r.size.width );
- glPixelStorei( GL_UNPACK_SKIP_PIXELS, subRect.origin.x );
- glPixelStorei( GL_UNPACK_SKIP_ROWS, subRect.origin.y );
- glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA, (int)subRect.size.width,(int)subRect.size.height,0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, (void*)lastBitsIndex );
- 
- NSLog(@" draw %f %f %f %f",subRect.origin.x,subRect.origin.y,subRect.size.width,subRect.size.height);
- 
- glPixelStorei( GL_UNPACK_ROW_LENGTH, 0 );
- glPixelStorei( GL_UNPACK_SKIP_PIXELS, 0 );
- glPixelStorei( GL_UNPACK_SKIP_ROWS, 0 );
- */
-/*			void glTexImage2D( GLenum target,
- GLint level,
- GLint internalformat,
- GLsizei width,
- GLsizei height,
- GLint border,
- GLenum format,
- GLenum type,
- const GLvoid *pixels );
- 
- void glTexSubImage2D( GLenum target,
- GLint level,
- GLint xoffset,
- GLint yoffset,
- GLsizei width,
- GLsizei height,
- GLenum format,
- GLenum type,
- const GLvoid *pixels )
- 
- 
- glPixelStorei(GL_UNPACK_ROW_LENGTH, r.size.width);
- glTexSubImage2D(GL_TEXTURE_RECTANGLE_ARB,
- 0,
- (int) subRect.origin.x,
- (int) subRect.origin.y,
- (int) subRect.size.width,
- (int) subRect.size.height,
- GL_BGRA,
- GL_UNSIGNED_INT_8_8_8_8_REV,
- (void*)lastBitsIndex);
- 
- glPixelStorei( GL_UNPACK_ROW_LENGTH, img_width );
- char *subimg = (char*)m_data + (sub_x + sub_y*img_width)*4;
- glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, sub_width, sub_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, subimg );
- glPixelStorei( GL_UNPACK_ROW_LENGTH, 0 );
- 
- GLES for iphone 
- no GL_UNPACK_ROW_LENGTH. In which case, you could either (a) extract the subimage into a new buffer yourself, or (b)...
- 
- glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, sub_width, sub_height, 0, GL_RGBA, GL_UNSIGNED_BYTES, NULL );
- 
- for( int y = 0; y < sub_height; y++ )
- {
- char *row = m_data + ((y + sub_y)*img_width + sub_x) * 4;
- glTexSubImage2D( GL_TEXTURE_2D, 0, 0, y, sub_width, 1, GL_RGBA, GL_UNSIGNED_BYTE, row );
- }
- 
- */
+ at end
\ No newline at end of file

Modified: trunk/platforms/iOS/vm/Settings.bundle/Root.plist
===================================================================
--- trunk/platforms/iOS/vm/Settings.bundle/Root.plist	2010-09-13 21:27:57 UTC (rev 2306)
+++ trunk/platforms/iOS/vm/Settings.bundle/Root.plist	2010-09-14 01:09:53 UTC (rev 2307)
@@ -46,7 +46,7 @@
 			<key>Type</key>
 			<string>PSGroupSpecifier</string>
 			<key>Title</key>
-			<string>Memory 10 MB to 54 MB</string>
+			<string>Memory 20 MB to 132 MB (limited)</string>
 		</dict>
 		<dict>
 			<key>Type</key>
@@ -58,9 +58,9 @@
 			<key>DefaultValue</key>
 			<integer>33554432</integer>
 			<key>MinimumValue</key>
-			<integer>10485760</integer>
+			<integer>20971520</integer>
 			<key>MaximumValue</key>
-			<integer>56623104</integer>
+			<integer>138412032</integer>
 		</dict>
 	</array>
 </dict>

Modified: trunk/platforms/iOS/vm/iPhone/Classes/SqueakNoOGLIPhoneAppDelegate.h
===================================================================
--- trunk/platforms/iOS/vm/iPhone/Classes/SqueakNoOGLIPhoneAppDelegate.h	2010-09-13 21:27:57 UTC (rev 2306)
+++ trunk/platforms/iOS/vm/iPhone/Classes/SqueakNoOGLIPhoneAppDelegate.h	2010-09-14 01:09:53 UTC (rev 2307)
@@ -55,6 +55,7 @@
 - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error;
 - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation;
 - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application;      // try to clean up as much memory as possible. next step is to terminate app
+- (void) zoomToOrientation:(UIInterfaceOrientation)o animated:(BOOL)animated;
 
 @property (nonatomic,retain) UIWindow *window;
 @property (nonatomic,retain) SqueakUIView *mainView;

Modified: trunk/platforms/iOS/vm/iPhone/Classes/SqueakNoOGLIPhoneAppDelegate.m
===================================================================
--- trunk/platforms/iOS/vm/iPhone/Classes/SqueakNoOGLIPhoneAppDelegate.m	2010-09-13 21:27:57 UTC (rev 2306)
+++ trunk/platforms/iOS/vm/iPhone/Classes/SqueakNoOGLIPhoneAppDelegate.m	2010-09-14 01:09:53 UTC (rev 2307)
@@ -93,16 +93,20 @@
 }
 
 - (void) zoomToOrientation:(UIInterfaceOrientation)o animated:(BOOL)animated {
-    CGRect zoomRect;
-    zoomRect.origin.x = 0;
-    zoomRect.origin.y = 0;
-	if (UIInterfaceOrientationIsPortrait(o)) {
-		zoomRect.size.width  = 1200 * 4 / 3;
-	} else {
-		zoomRect.size.width  = 1200 * 3 / 4;
-	}
-	zoomRect.size.height = zoomRect.size.width * 3 / 4;
-	[self.scrollView zoomToRect: zoomRect animated: animated];
+	/* 
+	 Magic eToys code, leave this here to be nice.. Don't use unless you know what you are doing?
+	 
+	 CGRect zoomRect;
+	 zoomRect.origin.x = 0;
+	 zoomRect.origin.y = 0;
+	 if (UIInterfaceOrientationIsPortrait(o)) {
+	 zoomRect.size.width  = 1200 * 4 / 3;
+	 } else {
+	 zoomRect.size.width  = 1200 * 3 / 4;
+	 }
+	 zoomRect.size.height = zoomRect.size.width * 3 / 4;
+	 [self.scrollView zoomToRect: zoomRect animated: animated];
+	 */
 }
 
 - (Class) whatRenderCanWeUse {
@@ -135,12 +139,15 @@
 		scrollView = [[UIScrollView alloc ] initWithFrame: mainScreenSize];
 
 		//Now setup the true view size as the width/height * 2.0  so we can have a larger squeak window and zoom in/out. 
-		CGRect fakeScreenSize ;
+		CGRect fakeScreenSize = mainScreenSize;
 		fakeScreenSize.origin.x = 0;
 		fakeScreenSize.origin.y = 0;
-		fakeScreenSize.size.width = 1200; 
-		fakeScreenSize.size.height = 900;
-//#error use 	SqueakUIViewCALayer SqueakUIViewOpenGL
+		fakeScreenSize.size.width *= 2.0; 
+		fakeScreenSize.size.height *= 2.0;
+		/* eToys setup 
+		 fakeScreenSize.size.width = 1200; 
+		 fakeScreenSize.size.height = 900;
+		*/
 		mainView = [[[self whatRenderCanWeUse] alloc] initWithFrame: fakeScreenSize];
 		mainView.backgroundColor = [UIColor blackColor];
 		mainView.multipleTouchEnabled = YES;
@@ -151,16 +158,16 @@
 		self.scrollView.scrollEnabled = useScrollingView;
 		self.scrollView.clearsContextBeforeDrawing = NO;
 		self.scrollView.canCancelContentTouches = NO;
-		self.scrollView.minimumZoomScale = 0.35555; 
+		self.scrollView.minimumZoomScale = 0.5; 
 		self.scrollView.maximumZoomScale = 4.0;
 		self.scrollView.delegate = self;
 		self.scrollView.backgroundColor = [UIColor blackColor];
+		self.scrollView.autoresizesSubviews=YES;
+		self.scrollView.autoresizingMask=(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);	
+
 		self.viewController = [SqueakUIController new];
 		self.viewController.view = self.scrollView;
 		
-		//  no idea if needed
-		//	self.scrollView.autoresizesSubviews=YES;
-		//	self.scrollView.autoresizingMask=(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);	
 		
 		[self zoomToOrientation: UIInterfaceOrientationPortrait animated: NO];
 		[self.scrollView addSubview: self.mainView];
@@ -168,7 +175,6 @@
 		
 	} else {
 		CGRect fakeScreenSize = mainScreenSize;
-//#error use 	SqueakUIViewCALayer SqueakUIViewOpenGL
 		mainView = [[[self whatRenderCanWeUse] alloc] initWithFrame: fakeScreenSize];
 		self.mainView.clearsContextBeforeDrawing = NO;
 		[self.mainView setMultipleTouchEnabled: YES];

Modified: trunk/platforms/iOS/vm/iPhone/Classes/SqueakUIController.m
===================================================================
--- trunk/platforms/iOS/vm/iPhone/Classes/SqueakUIController.m	2010-09-13 21:27:57 UTC (rev 2306)
+++ trunk/platforms/iOS/vm/iPhone/Classes/SqueakUIController.m	2010-09-14 01:09:53 UTC (rev 2307)
@@ -68,10 +68,13 @@
 
 - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
 	UIInterfaceOrientation o = [[UIApplication sharedApplication] statusBarOrientation];
+
+/*	etoys rotate for keyboard! 
 	if (UIInterfaceOrientationIsPortrait(o))
 		[gDelegateApp.mainView becomeFirstResponder];
 	else
 		[gDelegateApp.mainView resignFirstResponder];
+*/	
 	
 	CGRect mainScreenSize = [[UIScreen mainScreen] applicationFrame];
 	CGRect f;

Modified: trunk/platforms/iOS/vm/iPhone/Classes/SqueakUIViewOpenGL.m
===================================================================
--- trunk/platforms/iOS/vm/iPhone/Classes/SqueakUIViewOpenGL.m	2010-09-13 21:27:57 UTC (rev 2306)
+++ trunk/platforms/iOS/vm/iPhone/Classes/SqueakUIViewOpenGL.m	2010-09-14 01:09:53 UTC (rev 2307)
@@ -131,6 +131,10 @@
 	glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth);glCheckError();
     glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &backingHeight);glCheckError();
 	rt_assert(GL_FRAMEBUFFER_COMPLETE_OES == glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES));
+	if (textureId) {
+		glDeleteTextures(1,&textureId);
+		textureId = 0;
+	}
 }
 
 - (void) drawImageUsingClip: (CGRect) clip {

Modified: trunk/platforms/iOS/vm/iPhone/Classes/sqSqueakIPhoneApplication.m
===================================================================
--- trunk/platforms/iOS/vm/iPhone/Classes/sqSqueakIPhoneApplication.m	2010-09-13 21:27:57 UTC (rev 2306)
+++ trunk/platforms/iOS/vm/iPhone/Classes/sqSqueakIPhoneApplication.m	2010-09-14 01:09:53 UTC (rev 2307)
@@ -54,6 +54,9 @@
 
 - (void) doMemorySetup {
 	gMaxHeapSize =  [(sqSqueakIPhoneInfoPlistInterface*) self.infoPlistInterfaceLogic memorySize];
+	if (gMaxHeapSize == 0) // NO IDEA is this a 4.1 bug? 
+		gMaxHeapSize = 32*1024*1024;
+		
 }
 
 - (void) fetchPreferences {

Modified: trunk/platforms/iOS/vm/iPhone/Classes/sqSqueakIPhoneInfoPlistInterface.m
===================================================================
--- trunk/platforms/iOS/vm/iPhone/Classes/sqSqueakIPhoneInfoPlistInterface.m	2010-09-13 21:27:57 UTC (rev 2306)
+++ trunk/platforms/iOS/vm/iPhone/Classes/sqSqueakIPhoneInfoPlistInterface.m	2010-09-14 01:09:53 UTC (rev 2307)
@@ -70,7 +70,7 @@
         NSDictionary *prefItem;
 		NSString	*writeable_preferenceDefault = @"NO";
 		NSString	*scrollableView_preferenceDefault= @"NO";
-		NSString	*memorySize_preferenceDefault=@"56623104";
+		NSString	*memorySize_preferenceDefault=@"33554432";
         for (prefItem in prefSpecifierArray)	{
 			NSString *keyValueStr = [prefItem objectForKey:@"Key"];
 			id defaultValue = [prefItem objectForKey:@"DefaultValue"];



More information about the Vm-dev mailing list