From 9594cac42c7612977e1ef4c8493e52037f15abf9 Mon Sep 17 00:00:00 2001 From: Armada Date: Sun, 16 Jun 2013 14:34:23 +0200 Subject: [PATCH] Build fix: Android NDK doesn't support any locale switching. Also, Mac OS X doesn't support DX9. --- Source/Core/VideoCommon/Src/PixelShaderGen.cpp | 4 ++++ Source/Core/VideoCommon/Src/TextureConversionShader.cpp | 6 +++++- Source/Core/VideoCommon/Src/VertexShaderGen.cpp | 4 ++++ Source/Plugins/Plugin_VideoDX9/Src/PixelShaderCache.cpp | 5 +---- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/Source/Core/VideoCommon/Src/PixelShaderGen.cpp b/Source/Core/VideoCommon/Src/PixelShaderGen.cpp index 100cac5976..cfd236da69 100644 --- a/Source/Core/VideoCommon/Src/PixelShaderGen.cpp +++ b/Source/Core/VideoCommon/Src/PixelShaderGen.cpp @@ -516,8 +516,10 @@ const char *WriteLocation(API_TYPE ApiType) const char *GeneratePixelShaderCode(DSTALPHA_MODE dstAlphaMode, API_TYPE ApiType, u32 components) { +#ifndef ANDROID locale_t locale = newlocale(LC_NUMERIC_MASK, "C", NULL); // New locale for compilation locale_t old_locale = uselocale(locale); // Apply the locale for this thread +#endif text[sizeof(text) - 1] = 0x7C; // canary BuildSwapModeTable(); // Needed for WriteStage @@ -890,8 +892,10 @@ const char *GeneratePixelShaderCode(DSTALPHA_MODE dstAlphaMode, API_TYPE ApiType if (text[sizeof(text) - 1] != 0x7C) PanicAlert("PixelShader generator - buffer too small, canary has been eaten!"); +#ifndef ANDROID uselocale(old_locale); // restore locale freelocale(locale); +#endif return text; } diff --git a/Source/Core/VideoCommon/Src/TextureConversionShader.cpp b/Source/Core/VideoCommon/Src/TextureConversionShader.cpp index 573713a198..40873b903e 100644 --- a/Source/Core/VideoCommon/Src/TextureConversionShader.cpp +++ b/Source/Core/VideoCommon/Src/TextureConversionShader.cpp @@ -807,8 +807,10 @@ void WriteZ24Encoder(char* p, API_TYPE ApiType) const char *GenerateEncodingShader(u32 format,API_TYPE ApiType) { +#ifndef ANDROID locale_t locale = newlocale(LC_NUMERIC_MASK, "C", NULL); // New locale for compilation locale_t old_locale = uselocale(locale); // Apply the locale for this thread +#endif text[sizeof(text) - 1] = 0x7C; // canary char *p = text; @@ -891,9 +893,11 @@ const char *GenerateEncodingShader(u32 format,API_TYPE ApiType) if (text[sizeof(text) - 1] != 0x7C) PanicAlert("TextureConversionShader generator - buffer too small, canary has been eaten!"); - + +#ifndef ANDROID uselocale(old_locale); // restore locale freelocale(locale); +#endif return text; } diff --git a/Source/Core/VideoCommon/Src/VertexShaderGen.cpp b/Source/Core/VideoCommon/Src/VertexShaderGen.cpp index aede4aa2bd..d076593423 100644 --- a/Source/Core/VideoCommon/Src/VertexShaderGen.cpp +++ b/Source/Core/VideoCommon/Src/VertexShaderGen.cpp @@ -176,8 +176,10 @@ extern const char *WriteLocation(API_TYPE ApiType); const char *GenerateVertexShaderCode(u32 components, API_TYPE ApiType) { +#ifndef ANDROID locale_t locale = newlocale(LC_NUMERIC_MASK, "C", NULL); // New locale for compilation locale_t old_locale = uselocale(locale); // Apply the locale for this thread +#endif text[sizeof(text) - 1] = 0x7C; // canary _assert_(bpmem.genMode.numtexgens == xfregs.numTexGen.numTexGens); @@ -644,7 +646,9 @@ const char *GenerateVertexShaderCode(u32 components, API_TYPE ApiType) if (text[sizeof(text) - 1] != 0x7C) PanicAlert("VertexShader generator - buffer too small, canary has been eaten!"); +#ifndef ANDROID uselocale(old_locale); // restore locale freelocale(locale); +#endif return text; } diff --git a/Source/Plugins/Plugin_VideoDX9/Src/PixelShaderCache.cpp b/Source/Plugins/Plugin_VideoDX9/Src/PixelShaderCache.cpp index f46cf43bd2..69555df0e9 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/PixelShaderCache.cpp +++ b/Source/Plugins/Plugin_VideoDX9/Src/PixelShaderCache.cpp @@ -5,9 +5,6 @@ #include #include #include -#ifdef __APPLE__ - #include -#endif #include "Common.h" #include "Hash.h" @@ -219,7 +216,7 @@ static LPDIRECT3DPIXELSHADER9 CreateCopyShader(int copyMatrixType, int depthConv WRITE(p, "}\n"); if (text[sizeof(text) - 1] != 0x7C) PanicAlert("PixelShaderCache copy shader generator - buffer too small, canary has been eaten!"); - + uselocale(old_locale); // restore locale freelocale(locale); return D3D::CompileAndCreatePixelShader(text, (int)strlen(text));