From 38c6e9d13b69539581e1fb3659f6c6a875d8f4c8 Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Fri, 21 Nov 2014 03:29:57 -0400 Subject: [PATCH] Added debug labels for the OpenGL ES objects created with SDL_GL_CreateContext on iOS. More misc. code cleanup. --- src/video/uikit/SDL_uikitmodes.m | 1 - src/video/uikit/SDL_uikitopenglview.h | 2 ++ src/video/uikit/SDL_uikitopenglview.m | 25 ++++++++++++++++++++++++- src/video/uikit/SDL_uikitvideo.h | 2 +- src/video/uikit/SDL_uikitvideo.m | 7 +++---- src/video/uikit/SDL_uikitview.m | 16 +++++++++------- 6 files changed, 39 insertions(+), 14 deletions(-) diff --git a/src/video/uikit/SDL_uikitmodes.m b/src/video/uikit/SDL_uikitmodes.m index 26858a8254430..8b9d7c945a08c 100644 --- a/src/video/uikit/SDL_uikitmodes.m +++ b/src/video/uikit/SDL_uikitmodes.m @@ -150,7 +150,6 @@ @implementation SDL_DisplayModeData 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 6502d03c598ae..8221988b8d24c 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 5da30c392af88..f0237cafbef66 100644 --- a/src/video/uikit/SDL_uikitopenglview.m +++ b/src/video/uikit/SDL_uikitopenglview.m @@ -93,7 +93,7 @@ - (id)initWithFrame:(CGRect)frame 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 @@ - (id)initWithFrame:(CGRect)frame } glBindRenderbuffer(GL_RENDERBUFFER, viewRenderbuffer); + + [self setDebugLabels]; } return self; @@ -200,6 +202,27 @@ - (void)updateFrame } 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 dec49cd287cd4..dac80a2b34da6 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 5d4e812521dd1..c2ceb0de718d8 100644 --- a/src/video/uikit/SDL_uikitvideo.m +++ b/src/video/uikit/SDL_uikitvideo.m @@ -130,16 +130,15 @@ static void UIKit_DeleteDevice(SDL_VideoDevice * device) } 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 2cb07ca5fed7a..7238bafc17166 100644 --- a/src/video/uikit/SDL_uikitview.m +++ b/src/video/uikit/SDL_uikitview.m @@ -193,19 +193,17 @@ - (void)hideKeyboard /* 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 @@ - (BOOL)textField:(UITextField *)_textField shouldChangeCharactersInRange:(NSRan /* 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) */ }