Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Build fix: Android NDK doesn't support any locale switching.
Also, Mac OS X doesn't support DX9.
  • Loading branch information
CrossVR committed Jun 16, 2013
1 parent fc7099a commit 9594cac
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 5 deletions.
4 changes: 4 additions & 0 deletions Source/Core/VideoCommon/Src/PixelShaderGen.cpp
Expand Up @@ -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
Expand Down Expand Up @@ -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;
}

Expand Down
6 changes: 5 additions & 1 deletion Source/Core/VideoCommon/Src/TextureConversionShader.cpp
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
}

Expand Down
4 changes: 4 additions & 0 deletions Source/Core/VideoCommon/Src/VertexShaderGen.cpp
Expand Up @@ -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);
Expand Down Expand Up @@ -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;
}
5 changes: 1 addition & 4 deletions Source/Plugins/Plugin_VideoDX9/Src/PixelShaderCache.cpp
Expand Up @@ -5,9 +5,6 @@
#include <map>
#include <set>
#include <locale.h>
#ifdef __APPLE__
#include <xlocale.h>
#endif

#include "Common.h"
#include "Hash.h"
Expand Down Expand Up @@ -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));
Expand Down

0 comments on commit 9594cac

Please sign in to comment.