diff --git a/src/Graphics_Xbox360.c b/src/Graphics_Xbox360.c index 2a1517b24..9d9d2197b 100644 --- a/src/Graphics_Xbox360.c +++ b/src/Graphics_Xbox360.c @@ -292,22 +292,14 @@ void Gfx_SetVertexFormat(VertexFormat fmt) { if (fmt == gfx_format) return; gfx_format = fmt; gfx_stride = strideSizes[fmt]; - - if (fmt == VERTEX_FORMAT_COLOURED) { - /* it's necessary to unbind the texture, otherwise the alpha from the last bound texture */ - /* gets used - because D3DTSS_ALPHAOP texture stage state is still set to D3DTOP_SELECTARG1 */ - Xe_SetTexture(xe, 0, NULL); - /* IDirect3DDevice9_SetTextureStageState(device, 0, D3DTSS_COLOROP, fmt == VERTEX_FORMAT_COLOURED ? D3DTOP_DISABLE : D3DTOP_MODULATE); */ - /* IDirect3DDevice9_SetTextureStageState(device, 0, D3DTSS_ALPHAOP, fmt == VERTEX_FORMAT_COLOURED ? D3DTOP_DISABLE : D3DTOP_SELECTARG1); */ - /* SetTexture(NULL) seems to be enough, not really required to call SetTextureStageState */ - } if (fmt == VERTEX_FORMAT_COLOURED) { - Xe_SetShader(xe, SHADER_TYPE_PIXEL, shdr_col_ps, 0); - Xe_SetShader(xe, SHADER_TYPE_VERTEX, shdr_col_vs, 0); + Xe_SetTexture(xe, 0, NULL); + Xe_SetShader(xe, SHADER_TYPE_PIXEL, shdr_col_ps, 0); + Xe_SetShader(xe, SHADER_TYPE_VERTEX, shdr_col_vs, 0); } else { - Xe_SetShader(xe, SHADER_TYPE_PIXEL, shdr_tex_ps, 0); - Xe_SetShader(xe, SHADER_TYPE_VERTEX, shdr_tex_vs, 0); + Xe_SetShader(xe, SHADER_TYPE_PIXEL, shdr_tex_ps, 0); + Xe_SetShader(xe, SHADER_TYPE_VERTEX, shdr_tex_vs, 0); } } diff --git a/src/interop_ios.m b/src/interop_ios.m index 2cd35284f..611fdbcd9 100644 --- a/src/interop_ios.m +++ b/src/interop_ios.m @@ -282,7 +282,28 @@ static int alert_completed; } @end + +static void LogUnhandled(NSString* str) { + if (!str) return; + const char* src = [str UTF8String]; + if (!src) return; + + cc_string msg = String_FromReadonly(src); + Platform_Log(msg.buffer, msg.length); + Logger_Log(&msg); +} + +// TODO: Should really be handled elsewhere, in Logger or ErrorHandler +static void LogUnhandledNSErrors(NSException* ex) { + // last chance to log exception details before process dies + LogUnhandled(@"About to die from unhandled NSException.."); + LogUnhandled([ex name]); + LogUnhandled([ex reason]); +} + int main(int argc, char * argv[]) { + NSSetUncaughtExceptionHandler(LogUnhandledNSErrors); + @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([CCAppDelegate class])); } @@ -381,12 +402,13 @@ void Window_Init(void) { // keyboard now shifts up Window_Main.SoftKeyboard = SOFT_KEYBOARD_SHIFT; Input_SetTouchMode(true); - Gui_SetTouchUI(true); Input.Sources = INPUT_SOURCE_NORMAL; + Gui_SetTouchUI(true); DisplayInfo.Depth = 32; DisplayInfo.ScaleX = 1; // TODO dpi scale DisplayInfo.ScaleY = 1; // TODO dpi scale + NSSetUncaughtExceptionHandler(LogUnhandledNSErrors); } void Window_Free(void) { }