diff --git a/src/video/uikit/SDL_uikitmodes.m b/src/video/uikit/SDL_uikitmodes.m index 26858a825..8b9d7c945 100644 --- a/src/video/uikit/SDL_uikitmodes.m +++ b/src/video/uikit/SDL_uikitmodes.m @@ -150,7 +150,6 @@ UIKit_AddDisplay(UIScreen *uiscreen) display.driverdata = (void *) CFBridgingRetain(data); SDL_AddVideoDisplay(&display); - return 0; } diff --git a/src/video/uikit/SDL_uikitopenglview.h b/src/video/uikit/SDL_uikitopenglview.h index 6502d03c5..8221988b8 100644 --- a/src/video/uikit/SDL_uikitopenglview.h +++ b/src/video/uikit/SDL_uikitopenglview.h @@ -57,6 +57,8 @@ - (void)updateFrame; +- (void)setDebugLabels; + - (void)setAnimationCallback:(int)interval callback:(void (*)(void*))callback callbackParam:(void*)callbackParam; diff --git a/src/video/uikit/SDL_uikitopenglview.m b/src/video/uikit/SDL_uikitopenglview.m index 5da30c392..f0237cafb 100644 --- a/src/video/uikit/SDL_uikitopenglview.m +++ b/src/video/uikit/SDL_uikitopenglview.m @@ -93,7 +93,7 @@ if (sRGB) { /* sRGB EAGL drawable support was added in iOS 7. */ - if (UIKit_IsSystemVersionAtLeast(@"7.0")) { + if (UIKit_IsSystemVersionAtLeast(7.0)) { colorFormat = kEAGLColorFormatSRGBA8; } else { SDL_SetError("sRGB drawables are not supported."); @@ -164,6 +164,8 @@ } glBindRenderbuffer(GL_RENDERBUFFER, viewRenderbuffer); + + [self setDebugLabels]; } return self; @@ -200,6 +202,27 @@ } glBindRenderbuffer(GL_RENDERBUFFER, viewRenderbuffer); + + [self setDebugLabels]; +} + +- (void)setDebugLabels +{ + if (viewFramebuffer != 0) { + glLabelObjectEXT(GL_FRAMEBUFFER, viewFramebuffer, 0, "context FBO"); + } + + if (viewRenderbuffer != 0) { + glLabelObjectEXT(GL_RENDERBUFFER, viewRenderbuffer, 0, "context color buffer"); + } + + if (depthRenderbuffer != 0) { + if (depthBufferFormat == GL_DEPTH24_STENCIL8_OES) { + glLabelObjectEXT(GL_RENDERBUFFER, depthRenderbuffer, 0, "context depth-stencil buffer"); + } else { + glLabelObjectEXT(GL_RENDERBUFFER, depthRenderbuffer, 0, "context depth buffer"); + } + } } - (void)setAnimationCallback:(int)interval diff --git a/src/video/uikit/SDL_uikitvideo.h b/src/video/uikit/SDL_uikitvideo.h index dec49cd28..dac80a2b3 100644 --- a/src/video/uikit/SDL_uikitvideo.h +++ b/src/video/uikit/SDL_uikitvideo.h @@ -25,7 +25,7 @@ #include "../SDL_sysvideo.h" -BOOL UIKit_IsSystemVersionAtLeast(NSString *version); +BOOL UIKit_IsSystemVersionAtLeast(double version); CGRect UIKit_ComputeViewFrame(SDL_Window *window, UIScreen *screen); #endif /* _SDL_uikitvideo_h */ diff --git a/src/video/uikit/SDL_uikitvideo.m b/src/video/uikit/SDL_uikitvideo.m index 5d4e81252..c2ceb0de7 100644 --- a/src/video/uikit/SDL_uikitvideo.m +++ b/src/video/uikit/SDL_uikitvideo.m @@ -130,16 +130,15 @@ UIKit_VideoQuit(_THIS) } BOOL -UIKit_IsSystemVersionAtLeast(NSString *version) +UIKit_IsSystemVersionAtLeast(double version) { - NSString *sysversion = [UIDevice currentDevice].systemVersion; - return [sysversion compare:version options:NSNumericSearch] != NSOrderedAscending; + return [[UIDevice currentDevice].systemVersion doubleValue] >= version; } CGRect UIKit_ComputeViewFrame(SDL_Window *window, UIScreen *screen) { - BOOL hasiOS7 = UIKit_IsSystemVersionAtLeast(@"7.0"); + BOOL hasiOS7 = UIKit_IsSystemVersionAtLeast(7.0); if (hasiOS7 || (window->flags & (SDL_WINDOW_BORDERLESS|SDL_WINDOW_FULLSCREEN))) { /* The view should always show behind the status bar in iOS 7+. */ diff --git a/src/video/uikit/SDL_uikitview.m b/src/video/uikit/SDL_uikitview.m index 2cb07ca5f..7238bafc1 100644 --- a/src/video/uikit/SDL_uikitview.m +++ b/src/video/uikit/SDL_uikitview.m @@ -193,19 +193,17 @@ void _uikit_keyboard_init(); /* UITextFieldDelegate method. Invoked when user types something. */ - (BOOL)textField:(UITextField *)_textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { - if ([string length] == 0) { + NSUInteger len = string.length; + + if (len == 0) { /* it wants to replace text with nothing, ie a delete */ SDL_SendKeyboardKey(SDL_PRESSED, SDL_SCANCODE_BACKSPACE); SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_BACKSPACE); - } - else { + } else { /* go through all the characters in the string we've been sent and convert them to key presses */ - int i; - for (i = 0; i < [string length]; i++) { - + for (int i = 0; i < len; i++) { unichar c = [string characterAtIndex:i]; - Uint16 mod = 0; SDL_Scancode code; @@ -224,16 +222,20 @@ void _uikit_keyboard_init(); /* If character uses shift, press shift down */ SDL_SendKeyboardKey(SDL_PRESSED, SDL_SCANCODE_LSHIFT); } + /* send a keydown and keyup even for the character */ SDL_SendKeyboardKey(SDL_PRESSED, code); SDL_SendKeyboardKey(SDL_RELEASED, code); + if (mod & KMOD_SHIFT) { /* If character uses shift, press shift back up */ SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_LSHIFT); } } + SDL_SendKeyboardText([string UTF8String]); } + return NO; /* don't allow the edit! (keep placeholder text there) */ }