diff --git a/contrib/mobile/iOS/Onelab/EAGLView.mm b/contrib/mobile/iOS/Onelab/EAGLView.mm index 31f2ecd1521bdd9ce0a3aff5d4eedb912feb0ad1..14a0ee9d1272075d61c3d60397bd1117eb8c762d 100644 --- a/contrib/mobile/iOS/Onelab/EAGLView.mm +++ b/contrib/mobile/iOS/Onelab/EAGLView.mm @@ -28,27 +28,24 @@ //The GL view is stored in the nib file. When it's unarchived it's sent -initWithCoder: - (id)initWithCoder:(NSCoder*)coder { - int w = 320; - int h = 480; - - float ver = [[[UIDevice currentDevice] systemVersion] floatValue]; - // You can't detect screen resolutions in pre 3.2 devices, but they are all 320x480 - if (ver >= 3.2f) - { - UIScreen* mainscr = [UIScreen mainScreen]; - w = mainscr.currentMode.size.width; - h = mainscr.currentMode.size.height; - } if ((self = [super initWithCoder:coder])) { // Get the layer CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer; - if ((w == 640 && h == 960) || (h == 1536 && w == 2048)) { // Retina display detected + + int w = 320; + int h = 480; + if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 3.2f) { // There is no retina display above 3.2 + UIScreen* mainscr = [UIScreen mainScreen]; + w = mainscr.currentMode.size.width; + h = mainscr.currentMode.size.height; + } + if ((w == 640 && h == 960) || (h == 1536 && w == 2048)) { // Retina display (iPhone or iPad/iPad mini) self.contentScaleFactor = 2.0; eaglLayer.contentsScale=2; } + eaglLayer.opaque = YES; - eaglLayer.drawableProperties = - [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:NO], + eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil]; diff --git a/contrib/mobile/iOS/Onelab/ModelViewController.mm b/contrib/mobile/iOS/Onelab/ModelViewController.mm index 18e5a92945163324a8222c0a1fa089276a3b7047..f73c148d714f83bb0971ea8372bee5295045f900 100644 --- a/contrib/mobile/iOS/Onelab/ModelViewController.mm +++ b/contrib/mobile/iOS/Onelab/ModelViewController.mm @@ -218,16 +218,19 @@ -(void)prevAnimation { animation_prev(); [self requestRender]; } -(IBAction)pinch:(UIPinchGestureRecognizer *)sender { - if(!glView->rotate && [sender numberOfTouches] == 2) { + if(!glView->rotate && [sender numberOfTouches] <= 2) { float mScale = scaleFactor; if (sender.state == UIGestureRecognizerStateBegan) mScale = scaleFactor; else if(sender.state == UIGestureRecognizerStateChanged) mScale = scaleFactor * [sender scale]; - else if(sender.state == UIGestureRecognizerStateEnded || sender.state == UIGestureRecognizerStateCancelled){ + else if(sender.state == UIGestureRecognizerStateEnded){ scaleFactor *= [sender scale]; mScale = scaleFactor; } + else if(sender.state == UIGestureRecognizerStateCancelled){ + mScale = scaleFactor; + } mScale = MAX(0.1, mScale); glView->mContext->eventHandler(2,mScale); }