Fix code for Android
This commit is contained in:
parent
557c300975
commit
7a91fbebd9
@ -482,6 +482,14 @@ InitReturnVal_t CSDLMgr::Init()
|
|||||||
|
|
||||||
fprintf(stderr, "SDL video target is '%s'\n", SDL_GetCurrentVideoDriver());
|
fprintf(stderr, "SDL video target is '%s'\n", SDL_GetCurrentVideoDriver());
|
||||||
Msg("SDL video target is '%s'\n", SDL_GetCurrentVideoDriver());
|
Msg("SDL video target is '%s'\n", SDL_GetCurrentVideoDriver());
|
||||||
|
|
||||||
|
SDL_version compiled;
|
||||||
|
SDL_version linked;
|
||||||
|
|
||||||
|
SDL_VERSION(&compiled);
|
||||||
|
SDL_GetVersion(&linked);
|
||||||
|
|
||||||
|
Msg("SDL compiled version: %d.%d.%d, linked: %d.%d.%d\n", compiled.major, compiled.minor, compiled.patch, linked.major, linked.minor, linked.patch);
|
||||||
|
|
||||||
m_bForbidMouseGrab = true;
|
m_bForbidMouseGrab = true;
|
||||||
if ( !CommandLine()->FindParm("-nomousegrab") && CommandLine()->FindParm("-mousegrab") )
|
if ( !CommandLine()->FindParm("-nomousegrab") && CommandLine()->FindParm("-mousegrab") )
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
#ifndef __FTCONFIG_H__MULTILIB
|
#ifndef __FTCONFIG_H__MULTILIB
|
||||||
#define __FTCONFIG_H__MULTILIB
|
#define __FTCONFIG_H__MULTILIB
|
||||||
|
|
||||||
|
#ifdef ANDROID
|
||||||
|
#include <sys/cdefs.h>
|
||||||
|
#else
|
||||||
#include <bits/wordsize.h>
|
#include <bits/wordsize.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#if __WORDSIZE == 32
|
#if __WORDSIZE == 32
|
||||||
# include "ftconfig-32.h"
|
# include "ftconfig-32.h"
|
||||||
|
@ -3770,8 +3770,10 @@ bool CBaseFileSystem::IsFileWritable( char const *pFileName, char const *pPathID
|
|||||||
{
|
{
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
if( buf.st_mode & _S_IWRITE )
|
if( buf.st_mode & _S_IWRITE )
|
||||||
#elif LINUX
|
#elif defined (LINUX) && !defined (ANDROID)
|
||||||
if( buf.st_mode & S_IWRITE )
|
if( buf.st_mode & S_IWRITE )
|
||||||
|
#elif ANDROID
|
||||||
|
if( buf.st_mode & S_IWUSR )
|
||||||
#else
|
#else
|
||||||
if( buf.st_mode & S_IWRITE )
|
if( buf.st_mode & S_IWRITE )
|
||||||
#endif
|
#endif
|
||||||
@ -3792,8 +3794,10 @@ bool CBaseFileSystem::IsFileWritable( char const *pFileName, char const *pPathID
|
|||||||
{
|
{
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
if ( buf.st_mode & _S_IWRITE )
|
if ( buf.st_mode & _S_IWRITE )
|
||||||
#elif LINUX
|
#elif defined (LINUX) && !defined (ANDROID)
|
||||||
if ( buf.st_mode & S_IWRITE )
|
if ( buf.st_mode & S_IWRITE )
|
||||||
|
#elif ANDROID
|
||||||
|
if ( buf.st_mode & S_IWUSR )
|
||||||
#else
|
#else
|
||||||
if ( buf.st_mode & S_IWRITE )
|
if ( buf.st_mode & S_IWRITE )
|
||||||
#endif
|
#endif
|
||||||
@ -3812,6 +3816,8 @@ bool CBaseFileSystem::SetFileWritable( char const *pFileName, bool writable, con
|
|||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
int pmode = writable ? ( _S_IWRITE | _S_IREAD ) : ( _S_IREAD );
|
int pmode = writable ? ( _S_IWRITE | _S_IREAD ) : ( _S_IREAD );
|
||||||
|
#elif ANDROID
|
||||||
|
int pmode = writable ? ( S_IWUSR | S_IRUSR ) : ( S_IRUSR );
|
||||||
#else
|
#else
|
||||||
int pmode = writable ? ( S_IWRITE | S_IREAD ) : ( S_IREAD );
|
int pmode = writable ? ( S_IWRITE | S_IREAD ) : ( S_IREAD );
|
||||||
#endif
|
#endif
|
||||||
|
@ -972,7 +972,11 @@ void CStdioFile::FS_fclose()
|
|||||||
AUTO_LOCK( m_MutexLockedFD );
|
AUTO_LOCK( m_MutexLockedFD );
|
||||||
|
|
||||||
struct _stat buf;
|
struct _stat buf;
|
||||||
|
#ifdef ANDROID
|
||||||
|
int fd = fileno( m_pFile ); // need to test this
|
||||||
|
#else
|
||||||
int fd = fileno_unlocked( m_pFile );
|
int fd = fileno_unlocked( m_pFile );
|
||||||
|
#endif
|
||||||
fstat( fd, &buf );
|
fstat( fd, &buf );
|
||||||
|
|
||||||
fflush( m_pFile );
|
fflush( m_pFile );
|
||||||
|
@ -98,6 +98,8 @@ void CMumbleSystem::LevelInitPostEntity()
|
|||||||
g_hMapObject = NULL;
|
g_hMapObject = NULL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#elif defined( ANDROID )
|
||||||
|
return; // TODO: implement
|
||||||
#elif defined( POSIX )
|
#elif defined( POSIX )
|
||||||
char memname[256];
|
char memname[256];
|
||||||
V_sprintf_safe( memname, "/MumbleLink.%d", getuid() );
|
V_sprintf_safe( memname, "/MumbleLink.%d", getuid() );
|
||||||
|
@ -642,6 +642,8 @@ void ReportDirtyDiskNoMaterialSystem()
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
bool CSourceAppSystemGroup::Create()
|
bool CSourceAppSystemGroup::Create()
|
||||||
{
|
{
|
||||||
|
Warning( "CSourceAppSystemGroup::Create\n" );
|
||||||
|
|
||||||
IFileSystem *pFileSystem = (IFileSystem*)FindSystem( FILESYSTEM_INTERFACE_VERSION );
|
IFileSystem *pFileSystem = (IFileSystem*)FindSystem( FILESYSTEM_INTERFACE_VERSION );
|
||||||
pFileSystem->InstallDirtyDiskReportFunc( ReportDirtyDiskNoMaterialSystem );
|
pFileSystem->InstallDirtyDiskReportFunc( ReportDirtyDiskNoMaterialSystem );
|
||||||
|
|
||||||
@ -674,13 +676,18 @@ bool CSourceAppSystemGroup::Create()
|
|||||||
{ "", "" } // Required to terminate the list
|
{ "", "" } // Required to terminate the list
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Warning( "PreAddSystem\n" );
|
||||||
|
|
||||||
#if defined( USE_SDL )
|
#if defined( USE_SDL )
|
||||||
AddSystem( (IAppSystem *)CreateSDLMgr(), SDLMGR_INTERFACE_VERSION );
|
AddSystem( (IAppSystem *)CreateSDLMgr(), SDLMGR_INTERFACE_VERSION );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Warning( "PreAddSystems\n" );
|
||||||
|
|
||||||
if ( !AddSystems( appSystems ) )
|
if ( !AddSystems( appSystems ) )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
Warning( "PostAddSystems\n" );
|
||||||
|
|
||||||
// This will be NULL for games that don't support VR. That's ok. Just don't load the DLL
|
// This will be NULL for games that don't support VR. That's ok. Just don't load the DLL
|
||||||
AppModule_t sourceVRModule = LoadModule( "sourcevr" DLL_EXT_STRING );
|
AppModule_t sourceVRModule = LoadModule( "sourcevr" DLL_EXT_STRING );
|
||||||
@ -757,6 +764,8 @@ bool CSourceAppSystemGroup::Create()
|
|||||||
|
|
||||||
bool CSourceAppSystemGroup::PreInit()
|
bool CSourceAppSystemGroup::PreInit()
|
||||||
{
|
{
|
||||||
|
Warning( "CSourceAppSystemGroup::PreInit\n" );
|
||||||
|
|
||||||
CreateInterfaceFn factory = GetFactory();
|
CreateInterfaceFn factory = GetFactory();
|
||||||
ConnectTier1Libraries( &factory, 1 );
|
ConnectTier1Libraries( &factory, 1 );
|
||||||
ConVar_Register( );
|
ConVar_Register( );
|
||||||
@ -934,7 +943,9 @@ bool GrabSourceMutex()
|
|||||||
CRC32_ProcessBuffer( &gameCRC, (void *)pchGameParam, Q_strlen( pchGameParam ) );
|
CRC32_ProcessBuffer( &gameCRC, (void *)pchGameParam, Q_strlen( pchGameParam ) );
|
||||||
CRC32_Final( &gameCRC );
|
CRC32_Final( &gameCRC );
|
||||||
|
|
||||||
#ifdef LINUX
|
#ifdef ANDROID
|
||||||
|
return true;
|
||||||
|
#elif defined (LINUX)
|
||||||
/*
|
/*
|
||||||
* Linux
|
* Linux
|
||||||
*/
|
*/
|
||||||
@ -1166,6 +1177,306 @@ static const char *BuildCommand()
|
|||||||
return (const char *)build.Base();
|
return (const char *)build.Base();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ANDROID
|
||||||
|
#include <android/log.h>
|
||||||
|
#include "jni.h"
|
||||||
|
|
||||||
|
char dataDir[512];
|
||||||
|
|
||||||
|
const char *LauncherArgv[512];
|
||||||
|
char javaArgv[2048];
|
||||||
|
char gameName[512];
|
||||||
|
char startArgs[256][128];
|
||||||
|
char language[1024] = "english";
|
||||||
|
int iLastArgs = 0;
|
||||||
|
static int scr_width,scr_height;
|
||||||
|
|
||||||
|
bool bClient_loaded = false;
|
||||||
|
bool bShowTouch = true;
|
||||||
|
void *libclient;
|
||||||
|
|
||||||
|
static struct jnimethods_s
|
||||||
|
{
|
||||||
|
jclass actcls;
|
||||||
|
JavaVM *vm;
|
||||||
|
JNIEnv *env;
|
||||||
|
jmethodID enableTextInput;
|
||||||
|
} jni;
|
||||||
|
|
||||||
|
|
||||||
|
DLL_EXPORT int Java_com_valvesoftware_ValveActivity2_setMainPackFilePath(JNIEnv *env, jclass *clazz, jstring str)
|
||||||
|
{
|
||||||
|
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity_setMainPackFilePath" );
|
||||||
|
return setenv( "VALVE_PAK0_PATH", env->GetStringUTFChars(str, NULL), 1 );
|
||||||
|
}
|
||||||
|
DLL_EXPORT int Java_com_valvesoftware_ValveActivity2_setPatchPackFilePath(JNIEnv *env, jclass *clazz, jstring str)
|
||||||
|
{
|
||||||
|
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity_setPatchPackFilePath" );
|
||||||
|
return setenv( "VALVE_PAK1_PATH", env->GetStringUTFChars(str, NULL), 1 );
|
||||||
|
}
|
||||||
|
DLL_EXPORT void Java_com_valvesoftware_ValveActivity2_setCacheDirectoryPath(JNIEnv *env, jclass *clazz, jstring str)
|
||||||
|
{
|
||||||
|
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity_setCacheDirectoryPath" );
|
||||||
|
//return setenv( "VALVE_CACHE_PATH", env->GetStringUTFChars(str, NULL), 1 );
|
||||||
|
}
|
||||||
|
DLL_EXPORT void Java_com_valvesoftware_ValveActivity2_gpgsStart()
|
||||||
|
{
|
||||||
|
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity_gpgsStart" );
|
||||||
|
}
|
||||||
|
DLL_EXPORT void Java_com_valvesoftware_ValveActivity2_nativeOnActivityResult()
|
||||||
|
{
|
||||||
|
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity_nativeOnActivityResult" );
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_EXPORT void Java_com_valvesoftware_ValveActivity2_setNativeLibPath(JNIEnv *env, jclass *clazz, jstring str)
|
||||||
|
{
|
||||||
|
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity_setNativeLibPath" );
|
||||||
|
// snprintf(dataDir, sizeof dataDir, env->GetStringUTFChars(str, NULL));
|
||||||
|
}
|
||||||
|
DLL_EXPORT void Java_com_valvesoftware_ValveActivity2_setLanguage(JNIEnv *env, jclass *clazz, jstring str)
|
||||||
|
{
|
||||||
|
snprintf(language, sizeof language, "%s", env->GetStringUTFChars(str, NULL));
|
||||||
|
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity_setLanguage" );
|
||||||
|
}
|
||||||
|
DLL_EXPORT int Java_com_valvesoftware_ValveActivity2_setDocumentDirectoryPath(JNIEnv *env, jclass *clazz, jstring str)
|
||||||
|
{
|
||||||
|
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity_setDocumentDirectoryPath" );
|
||||||
|
setenv( "HOME", env->GetStringUTFChars(str, NULL), 1);
|
||||||
|
return setenv( "VALVE_CACHE_PATH", env->GetStringUTFChars(str, NULL), 1 );
|
||||||
|
}
|
||||||
|
DLL_EXPORT int Java_com_valvesoftware_ValveActivity2_setDropMip(int a1, int a2, signed int a3)
|
||||||
|
{
|
||||||
|
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity_setDropMip" );
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_EXPORT int Java_com_valvesoftware_ValveActivity2_saveGame()
|
||||||
|
{
|
||||||
|
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity_saveGame" );
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_EXPORT int Java_com_valvesoftware_ValveActivity2_setDataDirectoryPath(JNIEnv *env, jclass *clazz, jstring str)
|
||||||
|
{
|
||||||
|
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity_setDataDirectoryPath" );
|
||||||
|
snprintf(dataDir, sizeof dataDir, env->GetStringUTFChars(str, NULL));
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_EXPORT int Java_com_valvesoftware_ValveActivity2_setExtrasPackFilePath(JNIEnv *env, jclass *clazz, jstring str)
|
||||||
|
{
|
||||||
|
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity2_setExtrasPackFilePath" );
|
||||||
|
return setenv( "VALVE_PAK2_PATH", env->GetStringUTFChars(str, NULL), 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_EXPORT int Java_com_valvesoftware_ValveActivity2_setenv(JNIEnv *jenv, jclass *jclass, jstring env, jstring value, jint over)
|
||||||
|
{
|
||||||
|
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity2_setenv %s=%s", jenv->GetStringUTFChars(env, NULL),jenv->GetStringUTFChars(value, NULL) );
|
||||||
|
return setenv( jenv->GetStringUTFChars(env, NULL), jenv->GetStringUTFChars(value, NULL), over );
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_EXPORT int Java_com_valvesoftware_ValveActivity2_setGame(JNIEnv *jenv, jclass *jclass, jstring game)
|
||||||
|
{
|
||||||
|
snprintf(gameName, sizeof dataDir, "-game %s", jenv->GetStringUTFChars(game, NULL));
|
||||||
|
return setenv( "VALVE_MOD", jenv->GetStringUTFChars(game, NULL), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef void (*t_TouchEvent)(int finger, int x, int y, int act);
|
||||||
|
t_TouchEvent TouchEvent;
|
||||||
|
|
||||||
|
DLL_EXPORT void clientLoaded( void )
|
||||||
|
{
|
||||||
|
bClient_loaded = true;
|
||||||
|
libclient = dlopen("libclient.so",0);
|
||||||
|
TouchEvent = (t_TouchEvent)dlsym(libclient, "TouchEvent");
|
||||||
|
((void (*)(bool, int, int))dlsym(libclient, "showTouch"))(bShowTouch, scr_width, scr_height);
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_EXPORT void showKeyboard( int show )
|
||||||
|
{
|
||||||
|
jni.env->CallStaticVoidMethod( jni.actcls, jni.enableTextInput, show );
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_EXPORT void JNICALL Java_com_valvesoftware_ValveActivity2_showTouch(JNIEnv *env, jobject obj, jboolean show_touch, jint width, jint height)
|
||||||
|
{
|
||||||
|
scr_width = width;
|
||||||
|
scr_height = height;
|
||||||
|
bShowTouch = show_touch;
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_EXPORT void JNICALL Java_com_valvesoftware_ValveActivity2_TouchEvent(JNIEnv *env, jobject obj, jint fingerid, jint x, jint y, jint action)
|
||||||
|
{
|
||||||
|
if( !bClient_loaded )
|
||||||
|
return;
|
||||||
|
|
||||||
|
TouchEvent( fingerid, x, y, action );
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_EXPORT const char* getSystemLanguage()
|
||||||
|
{
|
||||||
|
return language;
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef void (*t_SDL_Android_Init)(JNIEnv* env, jclass cls);
|
||||||
|
t_SDL_Android_Init SDL_Android_Init;
|
||||||
|
|
||||||
|
//typedef void *(*t_SDL_StartTextInput)();
|
||||||
|
//t_SDL_StartTextInput SDL_StartTextInput;
|
||||||
|
|
||||||
|
typedef void (*t_egl_init)();
|
||||||
|
t_egl_init egl_init;
|
||||||
|
|
||||||
|
bool bUseGL;
|
||||||
|
|
||||||
|
void SetRenderer()
|
||||||
|
{
|
||||||
|
if ( bUseGL )
|
||||||
|
{
|
||||||
|
//setenv("USE_BIG_GL", "1", 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setenv("REGAL_LOG", "0", 1);
|
||||||
|
setenv("REGAL_LOG_ERROR", "0", 1);
|
||||||
|
setenv("REGAL_LOG_WARNING", "0", 1);
|
||||||
|
setenv("REGAL_LOG_INFO", "0", 1);
|
||||||
|
setenv("REGAL_LOG_HTTP", "0", 1);
|
||||||
|
setenv("REGAL_LOG_JSON", "0", 1);
|
||||||
|
setenv("REGAL_LOG_CALLBACK", "0", 1);
|
||||||
|
setenv("REGAL_LOG_ONCE", "0", 1);
|
||||||
|
setenv("REGAL_LOG_POINTERS", "0", 1);
|
||||||
|
setenv("REGAL_LOG_THREAD", "0", 1);
|
||||||
|
setenv("REGAL_LOG_PROCESS", "0", 1);
|
||||||
|
setenv("REGAL_LOG_ALL", "0", 1);
|
||||||
|
setenv("REGAL_DEBUG", "0", 1);
|
||||||
|
setenv("REGAL_ERROR", "0", 1);
|
||||||
|
setenv("REGAL_LOG_FILE", "/dev/null", 1);
|
||||||
|
setenv("REGAL_EMU_SO", "0", 1);
|
||||||
|
setenv("REGAL_THREAD_LOCKING", "0", 1);
|
||||||
|
setenv("REGAL_FORCE_ES2_PROFILE", "1", 1);
|
||||||
|
setenv("REGAL_SYS_GLX", "0", 1);
|
||||||
|
setenv("REGAL_SYS_ES2", "1", 1);
|
||||||
|
setenv("REGAL_SYS_EGL", "1", 1);
|
||||||
|
setenv("REGAL_SYS_GL", "0", 1);
|
||||||
|
setenv("REGAL_GL_VERSION", "2.1", 1);
|
||||||
|
setenv("REGAL_GL_EXTENSIONS", "GL_EXT_framebuffer_object GL_EXT_framebuffer_blit GL_OES_mapbuffer GL_EXT_texture_sRGB_decode GL_EXT_texture_compression_s3tc GL_EXT_texture_compression_dxt1", 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetArg( const char *arg )
|
||||||
|
{
|
||||||
|
char *pch;
|
||||||
|
char str[1024];
|
||||||
|
strncpy( str, arg, sizeof str );
|
||||||
|
pch = strtok (str," ");
|
||||||
|
while (pch != NULL)
|
||||||
|
{
|
||||||
|
strncpy( startArgs[iLastArgs], pch, sizeof startArgs[0] );
|
||||||
|
LauncherArgv[iLastArgs] = startArgs[iLastArgs];
|
||||||
|
iLastArgs++;
|
||||||
|
pch = strtok (NULL, " ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_EXPORT int Java_com_valvesoftware_ValveActivity2_setArgs(JNIEnv *env, jclass *clazz, jstring str)
|
||||||
|
{
|
||||||
|
snprintf( javaArgv, sizeof javaArgv, env->GetStringUTFChars(str, NULL) );
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetStartArgs()
|
||||||
|
{
|
||||||
|
char lang[2048];
|
||||||
|
snprintf(lang, sizeof lang, "-language %s +cc_lang %s", language, language);
|
||||||
|
|
||||||
|
SetArg(dataDir);
|
||||||
|
SetArg(lang);
|
||||||
|
SetArg(gameName);
|
||||||
|
SetArg(javaArgv);
|
||||||
|
SetArg("-window "
|
||||||
|
"-nosteam "
|
||||||
|
"-nouserclip "
|
||||||
|
"+sv_unlockedchapters 99 "
|
||||||
|
"+mat_queue_mode 2 "
|
||||||
|
"-ignoredxsupportcfg "
|
||||||
|
"-regal "
|
||||||
|
"+gl_rt_forcergba 1 "
|
||||||
|
"+mat_antialias 1 "
|
||||||
|
"-mat_antialias 1 "
|
||||||
|
"+r_flashlightdepthtexture 1 "
|
||||||
|
"+gl_dropmips 1 "
|
||||||
|
"-insecure");
|
||||||
|
|
||||||
|
if( bUseGL )
|
||||||
|
SetArg("-userclip "
|
||||||
|
"-gl_disablesamplerobjects "
|
||||||
|
// "-egl "
|
||||||
|
"+gl_enabletexsubimage 1 "
|
||||||
|
"+gl_blitmode 1 "
|
||||||
|
"+gl_supportMapBuffer 0 "
|
||||||
|
"-gl_separatedepthstencil 0 "
|
||||||
|
"-gl_nodepthtexture 0 "
|
||||||
|
"+r_flashlight_version2 0 "
|
||||||
|
"+gl_emurgba16 0 "
|
||||||
|
"+gl_emunooverwrite 0");
|
||||||
|
else
|
||||||
|
SetArg("-nouserclip "
|
||||||
|
"-gl_disablesamplerobjects "
|
||||||
|
"+gl_enabletexsubimage 0 "
|
||||||
|
"+mat_reducefillrate 1 "
|
||||||
|
"+gl_blitmode 1 "
|
||||||
|
"+gl_supportMapBuffer 1 "
|
||||||
|
"-gl_separatedepthstencil 0 "// default is 1
|
||||||
|
"-gl_nodepthtexture 1 "
|
||||||
|
"+r_flashlight_version2 1 "
|
||||||
|
"+gl_emurgba16 1 "
|
||||||
|
"+gl_emunooverwrite 1");
|
||||||
|
}
|
||||||
|
|
||||||
|
int LauncherMain( int argc, char **argv );
|
||||||
|
|
||||||
|
DLL_EXPORT int SDL_main()
|
||||||
|
{
|
||||||
|
// init sdl
|
||||||
|
void *sdlHandle = dlopen("libSDL2.so", 0);
|
||||||
|
|
||||||
|
SDL_Android_Init = (t_SDL_Android_Init)dlsym(sdlHandle, "SDL_Android_Init");
|
||||||
|
SDL_Android_Init(env, cls);
|
||||||
|
|
||||||
|
//SDL_StartTextInput = (t_SDL_StartTextInput)dlsym(sdlHandle, "SDL_StartTextInput");
|
||||||
|
//SDL_StartTextInput();
|
||||||
|
|
||||||
|
chdir(dataDir);
|
||||||
|
getcwd(dataDir, sizeof dataDir);
|
||||||
|
setenv( "VALVE_GAME_PATH", dataDir, 1 );
|
||||||
|
snprintf(dataDir, sizeof dataDir, "%s/hl2_linux", dataDir);
|
||||||
|
|
||||||
|
bUseGL = false;
|
||||||
|
|
||||||
|
SetRenderer();
|
||||||
|
SetStartArgs();
|
||||||
|
|
||||||
|
void *engineHandle = dlopen("libengine.so", 0);
|
||||||
|
void *launcherHandle = dlopen("liblauncher.so", 0);
|
||||||
|
|
||||||
|
#ifdef GL4ES
|
||||||
|
|
||||||
|
void *glHandle = dlopen("libRegal.so", 0);
|
||||||
|
egl_init = (t_egl_init)dlsym(glHandle, "egl_init");
|
||||||
|
if( egl_init )
|
||||||
|
egl_init();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
jni.env = env;
|
||||||
|
jni.actcls = env->FindClass("org/libsdl/app/SDLActivity");
|
||||||
|
jni.enableTextInput = env->GetStaticMethodID(jni.actcls, "showKeyboard", "(I)V");
|
||||||
|
|
||||||
|
LauncherMain(iLastArgs, LauncherArgv);
|
||||||
|
|
||||||
|
dlclose(launcherHandle);
|
||||||
|
dlclose(engineHandle);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Purpose: The real entry point for the application
|
// Purpose: The real entry point for the application
|
||||||
// Input : hInstance -
|
// Input : hInstance -
|
||||||
@ -1175,7 +1486,7 @@ static const char *BuildCommand()
|
|||||||
// Output : int APIENTRY
|
// Output : int APIENTRY
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
extern "C" __declspec(dllexport) int LauncherMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
|
extern "C" __declspec(DLL_EXPORT) int LauncherMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
|
||||||
#else
|
#else
|
||||||
DLL_EXPORT int LauncherMain( int argc, char **argv )
|
DLL_EXPORT int LauncherMain( int argc, char **argv )
|
||||||
#endif
|
#endif
|
||||||
@ -1229,7 +1540,7 @@ DLL_EXPORT int LauncherMain( int argc, char **argv )
|
|||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *filename;
|
const char *filename;
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
CommandLine()->CreateCmdLine( IsPC() ? VCRHook_GetCommandLine() : lpCmdLine );
|
CommandLine()->CreateCmdLine( IsPC() ? VCRHook_GetCommandLine() : lpCmdLine );
|
||||||
|
@ -341,14 +341,20 @@ bool FileSystem_GetExecutableDir( char *exedir, int exeDirLen )
|
|||||||
|
|
||||||
Q_FixSlashes( exedir );
|
Q_FixSlashes( exedir );
|
||||||
|
|
||||||
|
#ifdef ANDROID
|
||||||
|
const char* libDir = "lib";
|
||||||
|
#else
|
||||||
|
const char* libDir = "bin";
|
||||||
|
#endif
|
||||||
|
|
||||||
// Return the bin directory as the executable dir if it's not in there
|
// Return the bin directory as the executable dir if it's not in there
|
||||||
// because that's really where we're running from...
|
// because that's really where we're running from...
|
||||||
char ext[MAX_PATH];
|
char ext[MAX_PATH];
|
||||||
Q_StrRight( exedir, 4, ext, sizeof( ext ) );
|
Q_StrRight( exedir, 4, ext, sizeof( ext ) );
|
||||||
if ( ext[0] != CORRECT_PATH_SEPARATOR || Q_stricmp( ext+1, "bin" ) != 0 )
|
if ( ext[0] != CORRECT_PATH_SEPARATOR || Q_stricmp( ext+1, libDir ) != 0 )
|
||||||
{
|
{
|
||||||
Q_strncat( exedir, CORRECT_PATH_SEPARATOR_S, exeDirLen, COPY_ALL_CHARACTERS );
|
Q_strncat( exedir, CORRECT_PATH_SEPARATOR_S, exeDirLen, COPY_ALL_CHARACTERS );
|
||||||
Q_strncat( exedir, "bin", exeDirLen, COPY_ALL_CHARACTERS );
|
Q_strncat( exedir, libDir, exeDirLen, COPY_ALL_CHARACTERS );
|
||||||
Q_FixSlashes( exedir );
|
Q_FixSlashes( exedir );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -392,6 +392,8 @@ extern "C"
|
|||||||
#ifndef NO_MEMOVERRIDE_NEW_DELETE
|
#ifndef NO_MEMOVERRIDE_NEW_DELETE
|
||||||
#ifdef OSX
|
#ifdef OSX
|
||||||
void *__cdecl operator new( size_t nSize ) throw (std::bad_alloc)
|
void *__cdecl operator new( size_t nSize ) throw (std::bad_alloc)
|
||||||
|
#elif ANDROID
|
||||||
|
void *__cdecl operator new( size_t nSize ) throw (std::bad_alloc)
|
||||||
#else
|
#else
|
||||||
void *__cdecl operator new( size_t nSize )
|
void *__cdecl operator new( size_t nSize )
|
||||||
#endif
|
#endif
|
||||||
@ -406,6 +408,8 @@ void *__cdecl operator new( size_t nSize, int nBlockUse, const char *pFileName,
|
|||||||
|
|
||||||
#ifdef OSX
|
#ifdef OSX
|
||||||
void __cdecl operator delete( void *pMem ) throw()
|
void __cdecl operator delete( void *pMem ) throw()
|
||||||
|
#elif ANDROID
|
||||||
|
void __cdecl operator delete( void *pMem ) throw()
|
||||||
#else
|
#else
|
||||||
void __cdecl operator delete( void *pMem )
|
void __cdecl operator delete( void *pMem )
|
||||||
#endif
|
#endif
|
||||||
@ -415,6 +419,8 @@ void __cdecl operator delete( void *pMem )
|
|||||||
|
|
||||||
#ifdef OSX
|
#ifdef OSX
|
||||||
void operator delete(void*pMem, std::size_t)
|
void operator delete(void*pMem, std::size_t)
|
||||||
|
#elif ANDROID
|
||||||
|
void operator delete(void*pMem, std::size_t)
|
||||||
#else
|
#else
|
||||||
void operator delete(void*pMem, std::size_t) throw()
|
void operator delete(void*pMem, std::size_t) throw()
|
||||||
#endif
|
#endif
|
||||||
@ -424,6 +430,8 @@ void operator delete(void*pMem, std::size_t) throw()
|
|||||||
|
|
||||||
#ifdef OSX
|
#ifdef OSX
|
||||||
void *__cdecl operator new[]( size_t nSize ) throw (std::bad_alloc)
|
void *__cdecl operator new[]( size_t nSize ) throw (std::bad_alloc)
|
||||||
|
#elif ANDROID
|
||||||
|
void *__cdecl operator new[]( size_t nSize ) throw (std::bad_alloc)
|
||||||
#else
|
#else
|
||||||
void *__cdecl operator new[]( size_t nSize )
|
void *__cdecl operator new[]( size_t nSize )
|
||||||
#endif
|
#endif
|
||||||
@ -438,6 +446,8 @@ void *__cdecl operator new[] ( size_t nSize, int nBlockUse, const char *pFileNam
|
|||||||
|
|
||||||
#ifdef OSX
|
#ifdef OSX
|
||||||
void __cdecl operator delete[]( void *pMem ) throw()
|
void __cdecl operator delete[]( void *pMem ) throw()
|
||||||
|
#elif ANDROID
|
||||||
|
void __cdecl operator delete[]( void *pMem ) throw()
|
||||||
#else
|
#else
|
||||||
void __cdecl operator delete[]( void *pMem )
|
void __cdecl operator delete[]( void *pMem )
|
||||||
#endif
|
#endif
|
||||||
|
BIN
scripts/waifulib/compiler_optimizations.pyc
Normal file
BIN
scripts/waifulib/compiler_optimizations.pyc
Normal file
Binary file not shown.
BIN
scripts/waifulib/fwgslib.pyc
Normal file
BIN
scripts/waifulib/fwgslib.pyc
Normal file
Binary file not shown.
BIN
scripts/waifulib/xcompile.pyc
Normal file
BIN
scripts/waifulib/xcompile.pyc
Normal file
Binary file not shown.
@ -23,7 +23,7 @@
|
|||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined( USE_SDL )
|
#if defined( LINUX ) || defined( USE_SDL )
|
||||||
|
|
||||||
// We lazily load the SDL shared object, and only reference functions if it's
|
// We lazily load the SDL shared object, and only reference functions if it's
|
||||||
// available, so this can be included on the dedicated server too.
|
// available, so this can be included on the dedicated server too.
|
||||||
|
@ -31,6 +31,10 @@
|
|||||||
#include "xbox/xbox_console.h"
|
#include "xbox/xbox_console.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef ANDROID
|
||||||
|
#include <android/log.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "tier0/etwprof.h"
|
#include "tier0/etwprof.h"
|
||||||
|
|
||||||
#ifndef STEAM
|
#ifndef STEAM
|
||||||
@ -313,6 +317,10 @@ static SpewRetval_t _SpewMessage( SpewType_t spewType, const char *pGroupName, i
|
|||||||
ret = s_SpewOutputFunc( spewType, pTempBuffer );
|
ret = s_SpewOutputFunc( spewType, pTempBuffer );
|
||||||
g_pSpewInfo = (int)NULL;
|
g_pSpewInfo = (int)NULL;
|
||||||
|
|
||||||
|
#ifdef ANDROID
|
||||||
|
__android_log_print( ANDROID_LOG_INFO, "SRCENGINE", "%s", pTempBuffer );
|
||||||
|
#endif
|
||||||
|
|
||||||
switch (ret)
|
switch (ret)
|
||||||
{
|
{
|
||||||
// Asserts put the break into the macro so it occurs in the right place
|
// Asserts put the break into the macro so it occurs in the right place
|
||||||
@ -903,6 +911,10 @@ void COM_TimestampedLog( char const *fmt, ... )
|
|||||||
XBX_rTimeStampLog( curStamp, string );
|
XBX_rTimeStampLog( curStamp, string );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef ANDROID
|
||||||
|
__android_log_print( ANDROID_LOG_INFO, "SRCENGINE", "%s", string );
|
||||||
|
#endif
|
||||||
|
|
||||||
if ( IsPC() )
|
if ( IsPC() )
|
||||||
{
|
{
|
||||||
// If ETW profiling is enabled then do it only.
|
// If ETW profiling is enabled then do it only.
|
||||||
|
@ -28,6 +28,9 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ANDROID
|
||||||
|
#include <linux/stat.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "tier0/memdbgon.h"
|
#include "tier0/memdbgon.h"
|
||||||
// Benchmark mode uses this heavy-handed method
|
// Benchmark mode uses this heavy-handed method
|
||||||
|
@ -23,8 +23,13 @@
|
|||||||
#elif defined(POSIX)
|
#elif defined(POSIX)
|
||||||
|
|
||||||
#if !defined(OSX)
|
#if !defined(OSX)
|
||||||
|
#if defined(ANDROID)
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#else
|
||||||
#include <sys/fcntl.h>
|
#include <sys/fcntl.h>
|
||||||
#include <sys/unistd.h>
|
#include <sys/unistd.h>
|
||||||
|
#endif
|
||||||
#define sem_unlink( arg )
|
#define sem_unlink( arg )
|
||||||
#define OS_TO_PTHREAD(x) (x)
|
#define OS_TO_PTHREAD(x) (x)
|
||||||
#else
|
#else
|
||||||
|
@ -304,15 +304,26 @@ CSysModule *Sys_LoadModule( const char *pModuleName, Sys_Flags flags /* = SYS_NO
|
|||||||
|
|
||||||
#ifdef POSIX
|
#ifdef POSIX
|
||||||
struct stat statBuf;
|
struct stat statBuf;
|
||||||
|
#ifdef ANDROID
|
||||||
|
Q_snprintf(szModuleName, sizeof(szModuleName), "lib/lib%s", pModuleName);
|
||||||
|
#else
|
||||||
Q_snprintf(szModuleName, sizeof(szModuleName), "bin/lib%s", pModuleName);
|
Q_snprintf(szModuleName, sizeof(szModuleName), "bin/lib%s", pModuleName);
|
||||||
|
#endif
|
||||||
bUseLibPrefix |= stat(szModuleName, &statBuf) == 0;
|
bUseLibPrefix |= stat(szModuleName, &statBuf) == 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if( bUseLibPrefix )
|
#ifdef ANDROID
|
||||||
Q_snprintf( szAbsoluteModuleName, sizeof(szAbsoluteModuleName), "%s/bin/lib%s", szCwd, pModuleName );
|
char* szModulePath = "%s/lib/lib%s";
|
||||||
else
|
if (!bUseLibPrefix)
|
||||||
Q_snprintf( szAbsoluteModuleName, sizeof(szAbsoluteModuleName), "%s/bin/%s", szCwd, pModuleName );
|
szModulePath = "%s/lib/%s";
|
||||||
|
#else
|
||||||
|
char* szModulePath = "%s/bin/lib%s";
|
||||||
|
if (!bUseLibPrefix)
|
||||||
|
szModulePath = "%s/bin/%s";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Q_snprintf( szAbsoluteModuleName, sizeof(szAbsoluteModuleName), szModulePath, szCwd, pModuleName );
|
||||||
|
|
||||||
hDLL = Sys_LoadLibrary( szAbsoluteModuleName, flags );
|
hDLL = Sys_LoadLibrary( szAbsoluteModuleName, flags );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -750,7 +750,7 @@ extern "C" {
|
|||||||
|
|
||||||
return CALL(freopen)( mpath, mode, stream );
|
return CALL(freopen)( mpath, mode, stream );
|
||||||
}
|
}
|
||||||
|
#ifndef ANDROID
|
||||||
WRAP(fopen, FILE *, const char *path, const char *mode)
|
WRAP(fopen, FILE *, const char *path, const char *mode)
|
||||||
{
|
{
|
||||||
// if mode does not have w, a, or +, it's open for read.
|
// if mode does not have w, a, or +, it's open for read.
|
||||||
@ -788,7 +788,7 @@ extern "C" {
|
|||||||
{
|
{
|
||||||
return __wrap_open( pathname, O_CREAT|O_WRONLY|O_TRUNC, mode );
|
return __wrap_open( pathname, O_CREAT|O_WRONLY|O_TRUNC, mode );
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
int __wrap_access(const char *pathname, int mode)
|
int __wrap_access(const char *pathname, int mode)
|
||||||
{
|
{
|
||||||
return __real_access( CWrap( pathname, false ), mode );
|
return __real_access( CWrap( pathname, false ), mode );
|
||||||
@ -815,6 +815,7 @@ extern "C" {
|
|||||||
{
|
{
|
||||||
return CALL(opendir)( CWrap( name, false ) );
|
return CALL(opendir)( CWrap( name, false ) );
|
||||||
}
|
}
|
||||||
|
#ifndef ANDROID
|
||||||
|
|
||||||
WRAP(__xstat, int, int __ver, __const char *__filename, struct stat *__stat_buf)
|
WRAP(__xstat, int, int __ver, __const char *__filename, struct stat *__stat_buf)
|
||||||
{
|
{
|
||||||
@ -835,7 +836,7 @@ extern "C" {
|
|||||||
{
|
{
|
||||||
return CALL(__lxstat64)( __ver, CWrap( __filename, false), __stat_buf );
|
return CALL(__lxstat64)( __ver, CWrap( __filename, false), __stat_buf );
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
WRAP(chmod, int, const char *path, mode_t mode)
|
WRAP(chmod, int, const char *path, mode_t mode)
|
||||||
{
|
{
|
||||||
return CALL(chmod)( CWrap( path, false), mode );
|
return CALL(chmod)( CWrap( path, false), mode );
|
||||||
|
@ -47,7 +47,11 @@
|
|||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
#ifdef POSIX
|
#ifdef POSIX
|
||||||
|
#ifdef ANDROID
|
||||||
|
#include <../thirdparty/libiconv-1.14/include/iconv.h>
|
||||||
|
#else
|
||||||
#include <iconv.h>
|
#include <iconv.h>
|
||||||
|
#endif
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -43,7 +43,7 @@
|
|||||||
#include "tier1.h"
|
#include "tier1.h"
|
||||||
#include "tier2/tier2.h"
|
#include "tier2/tier2.h"
|
||||||
|
|
||||||
#ifdef _LINUX
|
#if defined(_LINUX) && !defined(__ANDROID__)
|
||||||
#include <GL/glx.h>
|
#include <GL/glx.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -296,7 +296,7 @@ static bool CheckOpenGLExtension_internal(const char *ext, const int coremajor,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#elif !defined ( OSX )
|
#elif !defined ( OSX ) && !defined( __ANDROID__ )
|
||||||
if (!ptr)
|
if (!ptr)
|
||||||
{
|
{
|
||||||
static CDynamicFunctionOpenGL< true, Display *( APIENTRY *)( ), Display* > glXGetCurrentDisplay("glXGetCurrentDisplay");
|
static CDynamicFunctionOpenGL< true, Display *( APIENTRY *)( ), Display* > glXGetCurrentDisplay("glXGetCurrentDisplay");
|
||||||
|
Loading…
Reference in New Issue
Block a user