mirror of
https://github.com/DrBeef/JKXR.git
synced 2025-02-16 08:51:50 +00:00
It now builds!!
but won't run obviously, long way before that happens, but it is at least compiling and linking, which is good
This commit is contained in:
parent
cf2aa201ee
commit
f894efd296
13 changed files with 489 additions and 793 deletions
|
@ -39,7 +39,9 @@ Copyright : Copyright 2015 Oculus VR, LLC. All Rights reserved.
|
||||||
#include "VrApi_Input.h"
|
#include "VrApi_Input.h"
|
||||||
#include "VrApi_Types.h"
|
#include "VrApi_Types.h"
|
||||||
|
|
||||||
#include <src/gl/loader.h>
|
extern "C" {
|
||||||
|
#include "src/gl/loader.h"
|
||||||
|
}
|
||||||
|
|
||||||
//#include <SDL2/SDL.h>
|
//#include <SDL2/SDL.h>
|
||||||
//#include <SDL2/SDL_main.h>
|
//#include <SDL2/SDL_main.h>
|
||||||
|
@ -1250,7 +1252,9 @@ void Android_MessageBox(const char *title, const char *text)
|
||||||
ALOGE("%s %s", title, text);
|
ALOGE("%s %s", title, text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
void initialize_gl4es();
|
void initialize_gl4es();
|
||||||
|
}
|
||||||
|
|
||||||
void JKVR_ResyncClientYawWithGameYaw()
|
void JKVR_ResyncClientYawWithGameYaw()
|
||||||
{
|
{
|
||||||
|
@ -1766,7 +1770,6 @@ void JKVR_submitFrame()
|
||||||
|
|
||||||
|
|
||||||
JKVR_incrementFrameIndex();
|
JKVR_incrementFrameIndex();
|
||||||
JKVR_HapticEndFrame();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ovrAppThread_Create( ovrAppThread * appThread, JNIEnv * env, jobject activityObject, jclass activityClass )
|
static void ovrAppThread_Create( ovrAppThread * appThread, JNIEnv * env, jobject activityObject, jclass activityClass )
|
||||||
|
|
|
@ -9,21 +9,21 @@ LOCAL_MODULE := openjk_sp
|
||||||
|
|
||||||
|
|
||||||
LOCAL_CFLAGS := $(JK3_BASE_CFLAGS)
|
LOCAL_CFLAGS := $(JK3_BASE_CFLAGS)
|
||||||
LOCAL_CPPFLAGS := $(JK3_BASE_CPPFLAGS) -DBOTLIB -D_JK2EXE -DSP_GAME -DUSE_OPENAL
|
LOCAL_CPPFLAGS := $(JK3_BASE_CPPFLAGS) -DBOTLIB -D_JK2EXE
|
||||||
|
|
||||||
LOCAL_LDLIBS := $(JK3_BASE_LDLIBS)
|
LOCAL_LDLIBS := $(JK3_BASE_LDLIBS)
|
||||||
|
|
||||||
|
|
||||||
LOCAL_LDLIBS += -lGLESv3 -landroid -lEGL -llog -lz
|
LOCAL_LDLIBS += -lGLESv3 -landroid -lEGL -llog -lz -lOpenSLES
|
||||||
|
|
||||||
#Needed so lib can be loaded (_exit error)
|
#Needed so lib can be loaded (_exit error)
|
||||||
LOCAL_LDLIBS += -fuse-ld=bfd
|
LOCAL_LDLIBS += -fuse-ld=bfd
|
||||||
|
|
||||||
LOCAL_STATIC_LIBRARIES := sigc libzip libpng libminizip
|
LOCAL_STATIC_LIBRARIES := sigc libzip libpng libminizip
|
||||||
LOCAL_SHARED_LIBRARIES := openal vrapi gl4es
|
LOCAL_SHARED_LIBRARIES := vrapi gl4es
|
||||||
|
|
||||||
|
|
||||||
LOCAL_C_INCLUDES := $(JK3_BASE_C_INCLUDES) $(TOP_DIR) $(GL4ES_PATH) $(GL4ES_PATH)/include $(SUPPORT_LIBS)/openal/include $(SUPPORT_LIBS)/minizip/include $(SPDir)/rd-vanilla $(SPDir)/rd-common
|
LOCAL_C_INCLUDES := $(JK3_BASE_C_INCLUDES) $(TOP_DIR) $(GL4ES_PATH) $(GL4ES_PATH)/include $(SUPPORT_LIBS)/minizip/include $(SPDir)/rd-vanilla $(SPDir)/rd-common
|
||||||
|
|
||||||
|
|
||||||
#############################################################################
|
#############################################################################
|
||||||
|
@ -36,6 +36,8 @@ LOCAL_C_INCLUDES := $(JK3_BASE_C_INCLUDES) $(TOP_DIR) $(GL4ES_PATH) $(GL4ES_PAT
|
||||||
JK3_SRC = \
|
JK3_SRC = \
|
||||||
${SPDir}/android/in_android.cpp \
|
${SPDir}/android/in_android.cpp \
|
||||||
${SPDir}/android/android_main.cpp \
|
${SPDir}/android/android_main.cpp \
|
||||||
|
${SPDir}/android/android_snd.cpp \
|
||||||
|
${SPDir}/android/android_window.cpp \
|
||||||
\
|
\
|
||||||
${SPDir}/client/cl_cgame.cpp \
|
${SPDir}/client/cl_cgame.cpp \
|
||||||
${SPDir}/client/cl_cin.cpp \
|
${SPDir}/client/cl_cin.cpp \
|
||||||
|
|
|
@ -15,8 +15,8 @@ LOCAL_LDLIBS := $(JK3_BASE_LDLIBS)
|
||||||
|
|
||||||
|
|
||||||
LOCAL_LDLIBS += -lGLESv3 -landroid -lEGL -ldl -llog
|
LOCAL_LDLIBS += -lGLESv3 -landroid -lEGL -ldl -llog
|
||||||
LOCAL_STATIC_LIBRARIES := libpng libjpeg gl4es
|
LOCAL_STATIC_LIBRARIES := libpng libjpeg
|
||||||
#LOCAL_SHARED_LIBRARIES :=
|
LOCAL_SHARED_LIBRARIES := gl4es
|
||||||
|
|
||||||
LOCAL_C_INCLUDES := $(JK3_BASE_C_INCLUDES) $(SUPPORT_LIBS)/libpng $(TOP_DIR) $(SPDir)/rd-vanilla $(SPDir)/rd-common
|
LOCAL_C_INCLUDES := $(JK3_BASE_C_INCLUDES) $(SUPPORT_LIBS)/libpng $(TOP_DIR) $(SPDir)/rd-vanilla $(SPDir)/rd-common
|
||||||
|
|
||||||
|
|
|
@ -1,736 +0,0 @@
|
||||||
/*
|
|
||||||
===========================================================================
|
|
||||||
|
|
||||||
Return to Castle Wolfenstein single player GPL Source Code
|
|
||||||
Copyright (C) 1999-2010 id Software LLC, a ZeniMax Media company.
|
|
||||||
|
|
||||||
This file is part of the Return to Castle Wolfenstein single player GPL Source Code (RTCW SP Source Code).
|
|
||||||
|
|
||||||
RTCW SP Source Code is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
RTCW SP Source Code is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with RTCW SP Source Code. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
In addition, the RTCW SP Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the RTCW SP Source Code. If not, please request a copy in writing from id Software at the address below.
|
|
||||||
|
|
||||||
If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.
|
|
||||||
|
|
||||||
===========================================================================
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
** GLW_IMP.C
|
|
||||||
**
|
|
||||||
** This file contains ALL Linux specific stuff having to do with the
|
|
||||||
** OpenGL refresh. When a port is being made the following functions
|
|
||||||
** must be implemented by the port:
|
|
||||||
**
|
|
||||||
** GLimp_EndFrame
|
|
||||||
** GLimp_Init
|
|
||||||
** GLimp_Shutdown
|
|
||||||
** GLimp_SwitchFullscreen
|
|
||||||
** GLimp_SetGamma
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <termios.h>
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
#ifdef __linux__
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <sys/vt.h>
|
|
||||||
#endif
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <signal.h>
|
|
||||||
#include <pthread.h>
|
|
||||||
#include <semaphore.h>
|
|
||||||
|
|
||||||
// bk001204
|
|
||||||
#include <dlfcn.h>
|
|
||||||
|
|
||||||
// bk001206 - from my Heretic2 by way of Ryan's Fakk2
|
|
||||||
// Needed for the new X11_PendingInput() function.
|
|
||||||
#include <sys/time.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include "../renderer/tr_local.h"
|
|
||||||
#include "../client/client.h"
|
|
||||||
#include "android_local.h" // bk001130
|
|
||||||
#include "EGL/egl.h"
|
|
||||||
|
|
||||||
#define WINDOW_CLASS_NAME "Return to Castle Wolfenstein"
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
RSERR_OK,
|
|
||||||
|
|
||||||
RSERR_INVALID_FULLSCREEN,
|
|
||||||
RSERR_INVALID_MODE,
|
|
||||||
|
|
||||||
RSERR_UNKNOWN
|
|
||||||
} rserr_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void myglMultiTexCoord2f( GLenum texture, GLfloat s, GLfloat t )
|
|
||||||
{
|
|
||||||
glMultiTexCoord4f(texture, s, t, 0, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static cvar_t *in_mouse;
|
|
||||||
static cvar_t *in_dgamouse;
|
|
||||||
|
|
||||||
// bk001130 - from cvs1.17 (mkv), but not static
|
|
||||||
cvar_t *in_joystick = NULL;
|
|
||||||
cvar_t *in_joystickDebug = NULL;
|
|
||||||
cvar_t *joy_threshold = NULL;
|
|
||||||
|
|
||||||
cvar_t *r_allowSoftwareGL; // don't abort out if the pixelformat claims software
|
|
||||||
cvar_t *r_previousglDriver;
|
|
||||||
|
|
||||||
//static int default_dotclock_vidmode; // bk001204 - unused
|
|
||||||
static int num_vidmodes;
|
|
||||||
static qboolean vidmode_active = qfalse;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Find the first occurrence of find in s.
|
|
||||||
*/
|
|
||||||
// bk001130 - from cvs1.17 (mkv), const
|
|
||||||
// bk001130 - made first argument const
|
|
||||||
static const char *Q_stristr( const char *s, const char *find ) {
|
|
||||||
register char c, sc;
|
|
||||||
register size_t len;
|
|
||||||
|
|
||||||
if ( ( c = *find++ ) != 0 ) {
|
|
||||||
if ( c >= 'a' && c <= 'z' ) {
|
|
||||||
c -= ( 'a' - 'A' );
|
|
||||||
}
|
|
||||||
len = strlen( find );
|
|
||||||
do
|
|
||||||
{
|
|
||||||
do
|
|
||||||
{
|
|
||||||
if ( ( sc = *s++ ) == 0 ) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if ( sc >= 'a' && sc <= 'z' ) {
|
|
||||||
sc -= ( 'a' - 'A' );
|
|
||||||
}
|
|
||||||
} while ( sc != c );
|
|
||||||
} while ( Q_stricmpn( s, find, len ) != 0 );
|
|
||||||
s--;
|
|
||||||
}
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void IN_ActivateMouse( void ) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void IN_DeactivateMouse( void ) {
|
|
||||||
|
|
||||||
}
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
static qboolean signalcaught = qfalse;;
|
|
||||||
|
|
||||||
void Sys_Exit( int ); // bk010104 - abstraction
|
|
||||||
|
|
||||||
static void signal_handler( int sig ) { // bk010104 - replace this... (NOTE TTimo huh?)
|
|
||||||
if ( signalcaught ) {
|
|
||||||
printf( "DOUBLE SIGNAL FAULT: Received signal %d, exiting...\n", sig );
|
|
||||||
Sys_Exit( 1 ); // bk010104 - abstraction
|
|
||||||
}
|
|
||||||
|
|
||||||
signalcaught = qtrue;
|
|
||||||
printf( "Received signal %d, exiting...\n", sig );
|
|
||||||
GLimp_Shutdown(); // bk010104 - shouldn't this be CL_Shutdown
|
|
||||||
Sys_Exit( 0 ); // bk010104 - abstraction NOTE TTimo send a 0 to avoid DOUBLE SIGNAL FAULT
|
|
||||||
}
|
|
||||||
|
|
||||||
static void InitSig( void ) {
|
|
||||||
|
|
||||||
return;
|
|
||||||
|
|
||||||
|
|
||||||
signal( SIGHUP, signal_handler );
|
|
||||||
signal( SIGQUIT, signal_handler );
|
|
||||||
signal( SIGILL, signal_handler );
|
|
||||||
signal( SIGTRAP, signal_handler );
|
|
||||||
signal( SIGIOT, signal_handler );
|
|
||||||
signal( SIGBUS, signal_handler );
|
|
||||||
signal( SIGFPE, signal_handler );
|
|
||||||
signal( SIGSEGV, signal_handler );
|
|
||||||
signal( SIGTERM, signal_handler );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
** GLimp_SetGamma
|
|
||||||
**
|
|
||||||
** This routine should only be called if glConfig.deviceSupportsGamma is TRUE
|
|
||||||
*/
|
|
||||||
void GLimp_SetGamma( unsigned char red[256], unsigned char green[256], unsigned char blue[256] ) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
** GLimp_Shutdown
|
|
||||||
**
|
|
||||||
** This routine does all OS specific shutdown procedures for the OpenGL
|
|
||||||
** subsystem. Under OpenGL this means NULLing out the current DC and
|
|
||||||
** HGLRC, deleting the rendering context, and releasing the DC acquired
|
|
||||||
** for the window. The state structure is also nulled out.
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
void GLimp_Shutdown( void ) {
|
|
||||||
|
|
||||||
memset( &glConfig, 0, sizeof( glConfig ) );
|
|
||||||
memset( &glState, 0, sizeof( glState ) );
|
|
||||||
|
|
||||||
QGL_Shutdown();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
** GLimp_LogComment
|
|
||||||
*/
|
|
||||||
void GLimp_LogComment( char *comment ) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
** GLW_StartDriverAndSetMode
|
|
||||||
*/
|
|
||||||
// bk001204 - prototype needed
|
|
||||||
int GLW_SetMode( const char *drivername, int mode, qboolean fullscreen );
|
|
||||||
static qboolean GLW_StartDriverAndSetMode( const char *drivername,
|
|
||||||
int mode,
|
|
||||||
qboolean fullscreen ) {
|
|
||||||
rserr_t err;
|
|
||||||
|
|
||||||
// don't ever bother going into fullscreen with a voodoo card
|
|
||||||
#if 1 // JDC: I reenabled this
|
|
||||||
if ( Q_stristr( drivername, "Voodoo" ) ) {
|
|
||||||
ri.Cvar_Set( "r_fullscreen", "0" );
|
|
||||||
r_fullscreen->modified = qfalse;
|
|
||||||
fullscreen = qfalse;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
err = GLW_SetMode( drivername, mode, fullscreen );
|
|
||||||
|
|
||||||
switch ( err )
|
|
||||||
{
|
|
||||||
case RSERR_INVALID_FULLSCREEN:
|
|
||||||
ri.Printf( PRINT_ALL, "...WARNING: fullscreen unavailable in this mode\n" );
|
|
||||||
return qfalse;
|
|
||||||
case RSERR_INVALID_MODE:
|
|
||||||
ri.Printf( PRINT_ALL, "...WARNING: could not set the given mode (%d)\n", mode );
|
|
||||||
return qfalse;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return qtrue;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void JKVR_GetScreenRes(int *width, int *height);
|
|
||||||
|
|
||||||
/*
|
|
||||||
** GLW_InitExtensions
|
|
||||||
*/
|
|
||||||
static void GLW_InitExtensions( void ) {
|
|
||||||
if ( !r_allowExtensions->integer ) {
|
|
||||||
ri.Printf( PRINT_ALL, "*** IGNORING OPENGL EXTENSIONS ***\n" );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ri.Printf( PRINT_ALL, "Initializing OpenGL extensions\n" );
|
|
||||||
|
|
||||||
#ifndef HAVE_GLES
|
|
||||||
// GL_S3_s3tc
|
|
||||||
if ( Q_stristr( glConfig.extensions_string, "GL_S3_s3tc" ) ) {
|
|
||||||
if ( r_ext_compressed_textures->value ) {
|
|
||||||
glConfig.textureCompression = TC_S3TC;
|
|
||||||
ri.Printf( PRINT_ALL, "...using GL_S3_s3tc\n" );
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
glConfig.textureCompression = TC_NONE;
|
|
||||||
ri.Printf( PRINT_ALL, "...ignoring GL_S3_s3tc\n" );
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
glConfig.textureCompression = TC_NONE;
|
|
||||||
ri.Printf( PRINT_ALL, "...GL_S3_s3tc not found\n" );
|
|
||||||
}
|
|
||||||
|
|
||||||
// GL_EXT_texture_env_add
|
|
||||||
#ifdef HAVE_GLES
|
|
||||||
glConfig.textureEnvAddAvailable = qtrue;
|
|
||||||
ri.Printf( PRINT_ALL, "...using GL_EXT_texture_env_add\n" );
|
|
||||||
#else
|
|
||||||
glConfig.textureEnvAddAvailable = qfalse;
|
|
||||||
if ( Q_stristr( glConfig.extensions_string, "EXT_texture_env_add" ) ) {
|
|
||||||
if ( r_ext_texture_env_add->integer ) {
|
|
||||||
glConfig.textureEnvAddAvailable = qtrue;
|
|
||||||
ri.Printf( PRINT_ALL, "...using GL_EXT_texture_env_add\n" );
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
glConfig.textureEnvAddAvailable = qfalse;
|
|
||||||
ri.Printf( PRINT_ALL, "...ignoring GL_EXT_texture_env_add\n" );
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
ri.Printf( PRINT_ALL, "...GL_EXT_texture_env_add not found\n" );
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// GL_ARB_multitexture
|
|
||||||
qglMultiTexCoord2fARB = NULL;
|
|
||||||
qglActiveTextureARB = NULL;
|
|
||||||
qglClientActiveTextureARB = NULL;
|
|
||||||
#ifdef HAVE_GLES
|
|
||||||
qglGetIntegerv( GL_MAX_TEXTURE_UNITS, &glConfig.maxActiveTextures );
|
|
||||||
//ri.Printf( PRINT_ALL, "...not using GL_ARB_multitexture, %i texture units\n", glConfig.maxActiveTextures );
|
|
||||||
//glConfig.maxActiveTextures=4;
|
|
||||||
qglMultiTexCoord2fARB = myglMultiTexCoord2f;
|
|
||||||
qglActiveTextureARB = glActiveTexture;
|
|
||||||
qglClientActiveTextureARB = glClientActiveTexture;
|
|
||||||
if ( glConfig.maxActiveTextures > 1 )
|
|
||||||
{
|
|
||||||
ri.Printf( PRINT_ALL, "...using GL_ARB_multitexture (%i texture units)\n", glConfig.maxActiveTextures );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
qglMultiTexCoord2fARB = NULL;
|
|
||||||
qglActiveTextureARB = NULL;
|
|
||||||
qglClientActiveTextureARB = NULL;
|
|
||||||
ri.Printf( PRINT_ALL, "...not using GL_ARB_multitexture, < 2 texture units\n" );
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
if ( Q_stristr( glConfig.extensions_string, "GL_ARB_multitexture" ) ) {
|
|
||||||
if ( r_ext_multitexture->value ) {
|
|
||||||
qglMultiTexCoord2fARB = ( PFNGLMULTITEXCOORD2FARBPROC ) dlsym( glw_state.OpenGLLib, "glMultiTexCoord2fARB" );
|
|
||||||
qglActiveTextureARB = ( PFNGLACTIVETEXTUREARBPROC ) dlsym( glw_state.OpenGLLib, "glActiveTextureARB" );
|
|
||||||
qglClientActiveTextureARB = ( PFNGLCLIENTACTIVETEXTUREARBPROC ) dlsym( glw_state.OpenGLLib, "glClientActiveTextureARB" );
|
|
||||||
|
|
||||||
if ( qglActiveTextureARB ) {
|
|
||||||
qglGetIntegerv( GL_MAX_ACTIVE_TEXTURES_ARB, &glConfig.maxActiveTextures );
|
|
||||||
|
|
||||||
if ( glConfig.maxActiveTextures > 1 ) {
|
|
||||||
ri.Printf( PRINT_ALL, "...using GL_ARB_multitexture\n" );
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
qglMultiTexCoord2fARB = NULL;
|
|
||||||
qglActiveTextureARB = NULL;
|
|
||||||
qglClientActiveTextureARB = NULL;
|
|
||||||
ri.Printf( PRINT_ALL, "...not using GL_ARB_multitexture, < 2 texture units\n" );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
ri.Printf( PRINT_ALL, "...ignoring GL_ARB_multitexture\n" );
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
ri.Printf( PRINT_ALL, "...GL_ARB_multitexture not found\n" );
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// GL_EXT_compiled_vertex_array
|
|
||||||
#ifndef HAVE_GLES
|
|
||||||
if ( Q_stristr( glConfig.extensions_string, "GL_EXT_compiled_vertex_array" ) ) {
|
|
||||||
if ( r_ext_compiled_vertex_array->value ) {
|
|
||||||
ri.Printf( PRINT_ALL, "...using GL_EXT_compiled_vertex_array\n" );
|
|
||||||
qglLockArraysEXT = ( void ( APIENTRY * )( int, int ) )dlsym( glw_state.OpenGLLib, "glLockArraysEXT" );
|
|
||||||
qglUnlockArraysEXT = ( void ( APIENTRY * )( void ) )dlsym( glw_state.OpenGLLib, "glUnlockArraysEXT" );
|
|
||||||
if ( !qglLockArraysEXT || !qglUnlockArraysEXT ) {
|
|
||||||
ri.Error( ERR_FATAL, "bad getprocaddress" );
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
ri.Printf( PRINT_ALL, "...ignoring GL_EXT_compiled_vertex_array\n" );
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
ri.Printf( PRINT_ALL, "...GL_EXT_compiled_vertex_array not found\n" );
|
|
||||||
}
|
|
||||||
|
|
||||||
// GL_NV_fog_distance
|
|
||||||
#ifndef HAVE_GLES
|
|
||||||
if ( Q_stristr( glConfig.extensions_string, "GL_NV_fog_distance" ) ) {
|
|
||||||
if ( r_ext_NV_fog_dist->integer ) {
|
|
||||||
glConfig.NVFogAvailable = qtrue;
|
|
||||||
ri.Printf( PRINT_ALL, "...using GL_NV_fog_distance\n" );
|
|
||||||
} else {
|
|
||||||
ri.Printf( PRINT_ALL, "...ignoring GL_NV_fog_distance\n" );
|
|
||||||
ri.Cvar_Set( "r_ext_NV_fog_dist", "0" );
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
ri.Printf( PRINT_ALL, "...GL_NV_fog_distance not found\n" );
|
|
||||||
ri.Cvar_Set( "r_ext_NV_fog_dist", "0" );
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
static void GLW_InitGamma() {
|
|
||||||
|
|
||||||
glConfig.deviceSupportsGamma = qfalse;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
** GLW_LoadOpenGL
|
|
||||||
**
|
|
||||||
** GLimp_win.c internal function that that attempts to load and use
|
|
||||||
** a specific OpenGL DLL.
|
|
||||||
*/
|
|
||||||
static qboolean GLW_LoadOpenGL( const char *name ) {
|
|
||||||
qboolean fullscreen;
|
|
||||||
|
|
||||||
ri.Printf( PRINT_ALL, "...loading %s: ", name );
|
|
||||||
|
|
||||||
#ifndef HAVE_GLES
|
|
||||||
// disable the 3Dfx splash screen and set gamma
|
|
||||||
// we do this all the time, but it shouldn't hurt anything
|
|
||||||
// on non-3Dfx stuff
|
|
||||||
putenv( "FX_GLIDE_NO_SPLASH=0" );
|
|
||||||
|
|
||||||
// Mesa VooDoo hacks
|
|
||||||
putenv( "MESA_GLX_FX=fullscreen\n" );
|
|
||||||
#endif
|
|
||||||
// load the QGL layer
|
|
||||||
if ( QGL_Init( name ) ) {
|
|
||||||
#ifdef PANDORA
|
|
||||||
fullscreen = 1;
|
|
||||||
#else
|
|
||||||
fullscreen = r_fullscreen->integer;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// create the window and set up the context
|
|
||||||
if ( !GLW_StartDriverAndSetMode( name, r_mode->integer, fullscreen ) ) {
|
|
||||||
if ( r_mode->integer != 3 ) {
|
|
||||||
if ( !GLW_StartDriverAndSetMode( name, 3, fullscreen ) ) {
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return qtrue;
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
ri.Printf( PRINT_ALL, "failed\n" );
|
|
||||||
}
|
|
||||||
fail:
|
|
||||||
|
|
||||||
QGL_Shutdown();
|
|
||||||
|
|
||||||
return qfalse;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
** GLimp_Init
|
|
||||||
**
|
|
||||||
** This routine is responsible for initializing the OS specific portions
|
|
||||||
** of OpenGL.
|
|
||||||
*/
|
|
||||||
void GLimp_Init( void ) {
|
|
||||||
qboolean attemptedlibGL = qfalse;
|
|
||||||
qboolean attempted3Dfx = qfalse;
|
|
||||||
qboolean success = qfalse;
|
|
||||||
char buf[1024];
|
|
||||||
cvar_t *lastValidRenderer = ri.Cvar_Get( "r_lastValidRenderer", "(uninitialized)", CVAR_ARCHIVE );
|
|
||||||
// cvar_t *cv; // bk001204 - unused
|
|
||||||
|
|
||||||
r_allowSoftwareGL = ri.Cvar_Get( "r_allowSoftwareGL", "0", CVAR_LATCH );
|
|
||||||
|
|
||||||
r_previousglDriver = ri.Cvar_Get( "r_previousglDriver", "", CVAR_ROM );
|
|
||||||
|
|
||||||
InitSig();
|
|
||||||
|
|
||||||
// Hack here so that if the UI
|
|
||||||
if ( *r_previousglDriver->string ) {
|
|
||||||
// The UI changed it on us, hack it back
|
|
||||||
// This means the renderer can't be changed on the fly
|
|
||||||
ri.Cvar_Set( "r_glDriver", r_previousglDriver->string );
|
|
||||||
}
|
|
||||||
|
|
||||||
int android_screen_width;
|
|
||||||
int android_screen_height;
|
|
||||||
JKVR_GetScreenRes(&android_screen_width, &android_screen_height);
|
|
||||||
glConfig.vidWidth = android_screen_width;
|
|
||||||
glConfig.vidHeight = android_screen_height;
|
|
||||||
glConfig.colorBits = 32;
|
|
||||||
glConfig.depthBits = 16;
|
|
||||||
glConfig.stencilBits = 8;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Save it in case the UI stomps it
|
|
||||||
ri.Cvar_Set( "r_previousglDriver", r_glDriver->string );
|
|
||||||
|
|
||||||
// This values force the UI to disable driver selection
|
|
||||||
glConfig.driverType = GLDRV_ICD;
|
|
||||||
glConfig.hardwareType = GLHW_GENERIC;
|
|
||||||
|
|
||||||
// get our config strings
|
|
||||||
Q_strncpyz( glConfig.vendor_string, qglGetString( GL_VENDOR ), sizeof( glConfig.vendor_string ) );
|
|
||||||
Q_strncpyz( glConfig.renderer_string, qglGetString( GL_RENDERER ), sizeof( glConfig.renderer_string ) );
|
|
||||||
if ( *glConfig.renderer_string && glConfig.renderer_string[strlen( glConfig.renderer_string ) - 1] == '\n' ) {
|
|
||||||
glConfig.renderer_string[strlen( glConfig.renderer_string ) - 1] = 0;
|
|
||||||
}
|
|
||||||
Q_strncpyz( glConfig.version_string, qglGetString( GL_VERSION ), sizeof( glConfig.version_string ) );
|
|
||||||
Q_strncpyz( glConfig.extensions_string, qglGetString( GL_EXTENSIONS ), sizeof( glConfig.extensions_string ) );
|
|
||||||
|
|
||||||
//
|
|
||||||
// chipset specific configuration
|
|
||||||
//
|
|
||||||
strcpy( buf, glConfig.renderer_string );
|
|
||||||
strlwr( buf );
|
|
||||||
|
|
||||||
//
|
|
||||||
// NOTE: if changing cvars, do it within this block. This allows them
|
|
||||||
// to be overridden when testing driver fixes, etc. but only sets
|
|
||||||
// them to their default state when the hardware is first installed/run.
|
|
||||||
//
|
|
||||||
/*if ( Q_stricmp( lastValidRenderer->string, glConfig.renderer_string ) ) {
|
|
||||||
glConfig.hardwareType = GLHW_GENERIC;
|
|
||||||
|
|
||||||
ri.Cvar_Set( "r_textureMode", "GL_LINEAR_MIPMAP_LINEAR" );
|
|
||||||
|
|
||||||
// VOODOO GRAPHICS w/ 2MB
|
|
||||||
if ( Q_stristr( buf, "voodoo graphics/1 tmu/2 mb" ) ) {
|
|
||||||
ri.Cvar_Set( "r_picmip", "2" );
|
|
||||||
ri.Cvar_Get( "r_picmip", "1", CVAR_ARCHIVE | CVAR_LATCH );
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
ri.Cvar_Set( "r_picmip", "1" );
|
|
||||||
|
|
||||||
if ( Q_stristr( buf, "rage 128" ) || Q_stristr( buf, "rage128" ) ) {
|
|
||||||
ri.Cvar_Set( "r_finish", "0" );
|
|
||||||
}
|
|
||||||
// Savage3D and Savage4 should always have trilinear enabled
|
|
||||||
else if ( Q_stristr( buf, "savage3d" ) || Q_stristr( buf, "s3 savage4" ) ) {
|
|
||||||
ri.Cvar_Set( "r_texturemode", "GL_LINEAR_MIPMAP_LINEAR" );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
//
|
|
||||||
// this is where hardware specific workarounds that should be
|
|
||||||
// detected/initialized every startup should go.
|
|
||||||
//
|
|
||||||
if ( Q_stristr( buf, "banshee" ) || Q_stristr( buf, "Voodoo_Graphics" ) ) {
|
|
||||||
glConfig.hardwareType = GLHW_3DFX_2D3D;
|
|
||||||
} else if ( Q_stristr( buf, "rage pro" ) || Q_stristr( buf, "RagePro" ) ) {
|
|
||||||
glConfig.hardwareType = GLHW_RAGEPRO;
|
|
||||||
} else if ( Q_stristr( buf, "permedia2" ) ) {
|
|
||||||
glConfig.hardwareType = GLHW_PERMEDIA2;
|
|
||||||
} else if ( Q_stristr( buf, "riva 128" ) ) {
|
|
||||||
glConfig.hardwareType = GLHW_RIVA128;
|
|
||||||
} else if ( Q_stristr( buf, "riva tnt " ) ) {
|
|
||||||
}
|
|
||||||
|
|
||||||
ri.Cvar_Set( "r_lastValidRenderer", glConfig.renderer_string );
|
|
||||||
|
|
||||||
//TEST!!!
|
|
||||||
//ri.Cvar_Set( "r_picmip", "0" );
|
|
||||||
//ri.Cvar_Set( "r_texturemode", "GL_LINEAR_MIPMAP_LINEAR" );
|
|
||||||
//!!!!
|
|
||||||
|
|
||||||
|
|
||||||
// initialize extensions
|
|
||||||
GLW_InitExtensions();
|
|
||||||
GLW_InitGamma();
|
|
||||||
|
|
||||||
InitSig();
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
void RTCWVR_submitFrame();
|
|
||||||
|
|
||||||
//int androidSwapped = 1; //If loading, then draw frame does not return, so detect this
|
|
||||||
/*
|
|
||||||
** GLimp_EndFrame
|
|
||||||
**
|
|
||||||
** Responsible for doing a swapbuffers and possibly for other stuff
|
|
||||||
** as yet to be determined. Probably better not to make this a GLimp
|
|
||||||
** function and instead do a call to GLimp_SwapBuffers.
|
|
||||||
*/
|
|
||||||
void GLimp_EndFrame( void ) {
|
|
||||||
|
|
||||||
// check logging
|
|
||||||
//QGL_EnableLogging( (qboolean)r_logFile->integer ); // bk001205 - was ->value
|
|
||||||
// if (!androidSwapped)
|
|
||||||
// eglSwapBuffers( eglGetCurrentDisplay(), eglGetCurrentSurface( EGL_DRAW ) );
|
|
||||||
|
|
||||||
//androidSwapped = 0;
|
|
||||||
RTCWVR_submitFrame();
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef SMP
|
|
||||||
/*
|
|
||||||
===========================================================
|
|
||||||
|
|
||||||
SMP acceleration
|
|
||||||
|
|
||||||
===========================================================
|
|
||||||
*/
|
|
||||||
|
|
||||||
sem_t renderCommandsEvent;
|
|
||||||
sem_t renderCompletedEvent;
|
|
||||||
sem_t renderActiveEvent;
|
|
||||||
|
|
||||||
void ( *glimpRenderThread )( void );
|
|
||||||
|
|
||||||
void *GLimp_RenderThreadWrapper( void *stub ) {
|
|
||||||
glimpRenderThread();
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
=======================
|
|
||||||
GLimp_SpawnRenderThread
|
|
||||||
=======================
|
|
||||||
*/
|
|
||||||
pthread_t renderThreadHandle;
|
|
||||||
qboolean GLimp_SpawnRenderThread( void ( *function )( void ) ) {
|
|
||||||
|
|
||||||
sem_init( &renderCommandsEvent, 0, 0 );
|
|
||||||
sem_init( &renderCompletedEvent, 0, 0 );
|
|
||||||
sem_init( &renderActiveEvent, 0, 0 );
|
|
||||||
|
|
||||||
glimpRenderThread = function;
|
|
||||||
|
|
||||||
if ( pthread_create( &renderThreadHandle, NULL,
|
|
||||||
GLimp_RenderThreadWrapper, NULL ) ) {
|
|
||||||
return qfalse;
|
|
||||||
}
|
|
||||||
|
|
||||||
return qtrue;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void *smpData;
|
|
||||||
//static int glXErrors; // bk001204 - unused
|
|
||||||
|
|
||||||
void *GLimp_RendererSleep( void ) {
|
|
||||||
void *data;
|
|
||||||
|
|
||||||
// after this, the front end can exit GLimp_FrontEndSleep
|
|
||||||
sem_post( &renderCompletedEvent );
|
|
||||||
|
|
||||||
sem_wait( &renderCommandsEvent );
|
|
||||||
|
|
||||||
data = smpData;
|
|
||||||
|
|
||||||
// after this, the main thread can exit GLimp_WakeRenderer
|
|
||||||
sem_post( &renderActiveEvent );
|
|
||||||
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void GLimp_FrontEndSleep( void ) {
|
|
||||||
sem_wait( &renderCompletedEvent );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void GLimp_WakeRenderer( void *data ) {
|
|
||||||
smpData = data;
|
|
||||||
|
|
||||||
// after this, the renderer can continue through GLimp_RendererSleep
|
|
||||||
sem_post( &renderCommandsEvent );
|
|
||||||
|
|
||||||
sem_wait( &renderActiveEvent );
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
void GLimp_RenderThreadWrapper( void *stub ) {}
|
|
||||||
qboolean GLimp_SpawnRenderThread( void ( *function )( void ) ) {
|
|
||||||
return qfalse;
|
|
||||||
}
|
|
||||||
void *GLimp_RendererSleep( void ) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
void GLimp_FrontEndSleep( void ) {}
|
|
||||||
void GLimp_WakeRenderer( void *data ) {}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/* MOUSE */
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void IN_Init( void ) {
|
|
||||||
// mouse variables
|
|
||||||
in_mouse = Cvar_Get( "in_mouse", "1", CVAR_ARCHIVE );
|
|
||||||
in_dgamouse = Cvar_Get( "in_dgamouse", "1", CVAR_ARCHIVE );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void IN_Shutdown( void ) {
|
|
||||||
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
void IN_Frame( void ) {
|
|
||||||
|
|
||||||
|
|
||||||
if ( cls.keyCatchers & KEYCATCH_CONSOLE ) {
|
|
||||||
// temporarily deactivate if not in the game and
|
|
||||||
// running on the desktop
|
|
||||||
// voodoo always counts as full screen
|
|
||||||
if ( Cvar_VariableValue( "r_fullscreen" ) == 0
|
|
||||||
&& strcmp( Cvar_VariableString( "r_glDriver" ), _3DFX_DRIVER_NAME ) ) {
|
|
||||||
IN_DeactivateMouse();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
IN_ActivateMouse();
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
void IN_Activate( void ) {
|
|
||||||
}
|
|
||||||
|
|
||||||
// bk001130 - cvs1.17 joystick code (mkv) was here, no linux_joystick.c
|
|
||||||
|
|
||||||
void Sys_SendKeyEvents( void ) {
|
|
||||||
// XEvent event; // bk001204 - unused
|
|
||||||
|
|
||||||
|
|
||||||
//HandleEvents();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// bk010216 - added stubs for non-Linux UNIXes here
|
|
||||||
// FIXME - use NO_JOYSTICK or something else generic
|
|
||||||
|
|
||||||
#if defined( __FreeBSD__ ) // rb010123
|
|
||||||
void IN_StartupJoystick( void ) {}
|
|
||||||
void IN_JoyMove( void ) {}
|
|
||||||
#endif
|
|
|
@ -20,6 +20,12 @@
|
||||||
static char binaryPath[ MAX_OSPATH ] = { 0 };
|
static char binaryPath[ MAX_OSPATH ] = { 0 };
|
||||||
static char installPath[ MAX_OSPATH ] = { 0 };
|
static char installPath[ MAX_OSPATH ] = { 0 };
|
||||||
|
|
||||||
|
cvar_t *com_minimized;
|
||||||
|
cvar_t *com_unfocused;
|
||||||
|
cvar_t *com_maxfps;
|
||||||
|
cvar_t *com_maxfpsMinimized;
|
||||||
|
cvar_t *com_maxfpsUnfocused;
|
||||||
|
|
||||||
char *Sys_Cwd( void ) {
|
char *Sys_Cwd( void ) {
|
||||||
static char cwd[MAX_OSPATH];
|
static char cwd[MAX_OSPATH];
|
||||||
|
|
||||||
|
@ -29,6 +35,19 @@ char *Sys_Cwd( void ) {
|
||||||
return cwd;
|
return cwd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
=================
|
||||||
|
Sys_ConsoleInput
|
||||||
|
|
||||||
|
Handle new console input
|
||||||
|
=================
|
||||||
|
*/
|
||||||
|
char *CON_Input( void );
|
||||||
|
char *Sys_ConsoleInput(void)
|
||||||
|
{
|
||||||
|
return CON_Input( );
|
||||||
|
}
|
||||||
|
|
||||||
#if defined( DO_LOADDLL_WRAP )
|
#if defined( DO_LOADDLL_WRAP )
|
||||||
void *Sys_LoadDll_Wrapped( const char *name,
|
void *Sys_LoadDll_Wrapped( const char *name,
|
||||||
int( **entryPoint ) ( int, ... ),
|
int( **entryPoint ) ( int, ... ),
|
||||||
|
@ -345,11 +364,90 @@ void Sys_UnloadDll( void *dllHandle )
|
||||||
//Sys_UnloadLibrary(dllHandle);
|
//Sys_UnloadLibrary(dllHandle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum SearchPathFlag
|
||||||
|
|
||||||
extern "C"
|
|
||||||
{
|
{
|
||||||
extern const char * getLibPath();
|
SEARCH_PATH_MOD = 1 << 0,
|
||||||
|
SEARCH_PATH_BASE = 1 << 1,
|
||||||
|
SEARCH_PATH_OPENJK = 1 << 2,
|
||||||
|
SEARCH_PATH_ROOT = 1 << 3
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static void *Sys_LoadDllFromPaths( const char *filename, const char *gamedir, const char **searchPaths,
|
||||||
|
size_t numPaths, uint32_t searchFlags, const char *callerName )
|
||||||
|
{
|
||||||
|
char *fn;
|
||||||
|
void *libHandle;
|
||||||
|
|
||||||
|
if ( searchFlags & SEARCH_PATH_MOD )
|
||||||
|
{
|
||||||
|
for ( size_t i = 0; i < numPaths; i++ )
|
||||||
|
{
|
||||||
|
const char *libDir = searchPaths[i];
|
||||||
|
if ( !libDir[0] )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
fn = FS_BuildOSPath( libDir, gamedir, filename );
|
||||||
|
libHandle = Sys_LoadLibrary( fn );
|
||||||
|
if ( libHandle )
|
||||||
|
return libHandle;
|
||||||
|
|
||||||
|
Com_Printf( "%s(%s) failed: \"%s\"\n", callerName, fn, Sys_LibraryError() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( searchFlags & SEARCH_PATH_BASE )
|
||||||
|
{
|
||||||
|
for ( size_t i = 0; i < numPaths; i++ )
|
||||||
|
{
|
||||||
|
const char *libDir = searchPaths[i];
|
||||||
|
if ( !libDir[0] )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
fn = FS_BuildOSPath( libDir, BASEGAME, filename );
|
||||||
|
libHandle = Sys_LoadLibrary( fn );
|
||||||
|
if ( libHandle )
|
||||||
|
return libHandle;
|
||||||
|
|
||||||
|
Com_Printf( "%s(%s) failed: \"%s\"\n", callerName, fn, Sys_LibraryError() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( searchFlags & SEARCH_PATH_OPENJK )
|
||||||
|
{
|
||||||
|
for ( size_t i = 0; i < numPaths; i++ )
|
||||||
|
{
|
||||||
|
const char *libDir = searchPaths[i];
|
||||||
|
if ( !libDir[0] )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
fn = FS_BuildOSPath( libDir, OPENJKGAME, filename );
|
||||||
|
libHandle = Sys_LoadLibrary( fn );
|
||||||
|
if ( libHandle )
|
||||||
|
return libHandle;
|
||||||
|
|
||||||
|
Com_Printf( "%s(%s) failed: \"%s\"\n", callerName, fn, Sys_LibraryError() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( searchFlags & SEARCH_PATH_ROOT )
|
||||||
|
{
|
||||||
|
for ( size_t i = 0; i < numPaths; i++ )
|
||||||
|
{
|
||||||
|
const char *libDir = searchPaths[i];
|
||||||
|
if ( !libDir[0] )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
fn = va( "%s%c%s", libDir, PATH_SEP, filename );
|
||||||
|
libHandle = Sys_LoadLibrary( fn );
|
||||||
|
if ( libHandle )
|
||||||
|
return libHandle;
|
||||||
|
|
||||||
|
Com_Printf( "%s(%s) failed: \"%s\"\n", callerName, fn, Sys_LibraryError() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -651,8 +749,8 @@ void *Sys_LoadGameDll( const char *name, void *(QDECL **moduleAPI)(int, ...) )
|
||||||
|
|
||||||
|
|
||||||
char lib_path[512];
|
char lib_path[512];
|
||||||
sprintf(lib_path,"%s/lib%s", getLibPath(),filename);
|
char *libdir = (char*)getenv("JK_GAMELIBDIR");
|
||||||
//LOGI("Trying to load Android lib: %s",lib_path);
|
sprintf(lib_path,"%s/lib%s", libdir,filename);
|
||||||
libHandle = dlopen (lib_path, RTLD_LAZY );
|
libHandle = dlopen (lib_path, RTLD_LAZY );
|
||||||
|
|
||||||
|
|
||||||
|
@ -744,6 +842,57 @@ void *Sys_LoadGameDll( const char *name, void *(QDECL **moduleAPI)(int, ...) )
|
||||||
return libHandle;
|
return libHandle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void *Sys_LoadSPGameDll( const char *name, GetGameAPIProc **GetGameAPI )
|
||||||
|
{
|
||||||
|
void *libHandle = NULL;
|
||||||
|
char filename[MAX_OSPATH];
|
||||||
|
|
||||||
|
assert( GetGameAPI );
|
||||||
|
|
||||||
|
Com_sprintf (filename, sizeof(filename), "%s" ARCH_STRING DLL_EXT, name);
|
||||||
|
|
||||||
|
#if defined(MACOS_X) && !defined(_JK2EXE)
|
||||||
|
//First, look for the old-style mac .bundle that's inside a pk3
|
||||||
|
//It's actually zipped, and the zipfile has the same name as 'name'
|
||||||
|
libHandle = Sys_LoadMachOBundle( filename );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (!libHandle) {
|
||||||
|
char *basepath = Cvar_VariableString( "fs_basepath" );
|
||||||
|
char *homepath = Cvar_VariableString( "fs_homepath" );
|
||||||
|
char *cdpath = Cvar_VariableString( "fs_cdpath" );
|
||||||
|
char *gamedir = Cvar_VariableString( "fs_game" );
|
||||||
|
#ifdef MACOS_X
|
||||||
|
char *apppath = Cvar_VariableString( "fs_apppath" );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *searchPaths[] = {
|
||||||
|
homepath,
|
||||||
|
#ifdef MACOS_X
|
||||||
|
apppath,
|
||||||
|
#endif
|
||||||
|
basepath,
|
||||||
|
cdpath,
|
||||||
|
};
|
||||||
|
size_t numPaths = ARRAY_LEN( searchPaths );
|
||||||
|
|
||||||
|
libHandle = Sys_LoadDllFromPaths( filename, gamedir, searchPaths, numPaths,
|
||||||
|
SEARCH_PATH_BASE | SEARCH_PATH_MOD | SEARCH_PATH_OPENJK | SEARCH_PATH_ROOT,
|
||||||
|
__FUNCTION__ );
|
||||||
|
if ( !libHandle )
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
*GetGameAPI = (GetGameAPIProc *)Sys_LoadFunction( libHandle, "GetGameAPI" );
|
||||||
|
if ( !*GetGameAPI ) {
|
||||||
|
Com_DPrintf ( "%s(%s) failed to find GetGameAPI function:\n...%s!\n", __FUNCTION__, name, Sys_LibraryError() );
|
||||||
|
Sys_UnloadLibrary( libHandle );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return libHandle;
|
||||||
|
}
|
||||||
|
|
||||||
void Sys_ConfigureFPU() { // bk001213 - divide by zero
|
void Sys_ConfigureFPU() { // bk001213 - divide by zero
|
||||||
#ifdef __linux2__
|
#ifdef __linux2__
|
||||||
#ifdef __i386
|
#ifdef __i386
|
||||||
|
@ -804,6 +953,53 @@ char *Sys_StripAppBundle( char *dir )
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "../client/client.h"
|
||||||
|
|
||||||
|
void JKVR_Init();
|
||||||
|
qboolean shutdown;
|
||||||
|
int VR_main( int argc, char* argv[] ) {
|
||||||
|
// int oldtime, newtime; // bk001204 - unused
|
||||||
|
int len, i;
|
||||||
|
char *cmdline;
|
||||||
|
|
||||||
|
// merge the command line, this is kinda silly
|
||||||
|
for ( len = 1, i = 1; i < argc; i++ )
|
||||||
|
len += strlen( argv[i] ) + 1;
|
||||||
|
cmdline = (char*)malloc( len );
|
||||||
|
*cmdline = 0;
|
||||||
|
for ( i = 1; i < argc; i++ )
|
||||||
|
{
|
||||||
|
if ( i > 1 ) {
|
||||||
|
strcat( cmdline, " " );
|
||||||
|
}
|
||||||
|
strcat( cmdline, argv[i] );
|
||||||
|
}
|
||||||
|
|
||||||
|
// bk000306 - clear queues
|
||||||
|
//memset( &eventQue[0], 0, MAX_QUED_EVENTS * sizeof( sysEvent_t ) );
|
||||||
|
//memset( &sys_packetReceived[0], 0, MAX_MSGLEN * sizeof( byte ) );
|
||||||
|
|
||||||
|
Com_Init( cmdline );
|
||||||
|
NET_Init();
|
||||||
|
JKVR_Init();
|
||||||
|
|
||||||
|
//Sys_ConsoleInputInit();
|
||||||
|
|
||||||
|
|
||||||
|
// fcntl( 0, F_SETFL, fcntl( 0, F_GETFL, 0 ) | FNDELAY );
|
||||||
|
|
||||||
|
shutdown = qfalse;
|
||||||
|
while ( !shutdown )
|
||||||
|
{
|
||||||
|
#ifdef __linux__
|
||||||
|
Sys_ConfigureFPU();
|
||||||
|
#endif
|
||||||
|
Com_Frame();
|
||||||
|
}
|
||||||
|
|
||||||
|
CL_ShutdownUI();
|
||||||
|
}
|
||||||
|
|
||||||
int main ( int argc, char* argv[] )
|
int main ( int argc, char* argv[] )
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
|
@ -1,30 +1,23 @@
|
||||||
/*
|
/*
|
||||||
===========================================================================
|
===========================================================================
|
||||||
|
Copyright (C) 2005 - 2015, ioquake3 contributors
|
||||||
|
Copyright (C) 2013 - 2015, OpenJK contributors
|
||||||
|
|
||||||
Return to Castle Wolfenstein single player GPL Source Code
|
This file is part of the OpenJK source code.
|
||||||
Copyright (C) 1999-2010 id Software LLC, a ZeniMax Media company.
|
|
||||||
|
|
||||||
This file is part of the Return to Castle Wolfenstein single player GPL Source Code (RTCW SP Source Code).
|
OpenJK is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License version 2 as
|
||||||
|
published by the Free Software Foundation.
|
||||||
|
|
||||||
RTCW SP Source Code is free software: you can redistribute it and/or modify
|
This program is distributed in the hope that it will be useful,
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
RTCW SP Source Code is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with RTCW SP Source Code. If not, see <http://www.gnu.org/licenses/>.
|
along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
In addition, the RTCW SP Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the RTCW SP Source Code. If not, please request a copy in writing from id Software at the address below.
|
|
||||||
|
|
||||||
If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.
|
|
||||||
|
|
||||||
===========================================================================
|
===========================================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
@ -42,8 +35,8 @@ If you have questions concerning this license or the applicable additional terms
|
||||||
#endif
|
#endif
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "../game/q_shared.h"
|
#include "qcommon/q_shared.h"
|
||||||
#include "../client/snd_local.h"
|
#include "client/snd_local.h"
|
||||||
|
|
||||||
//Updated by Emile Belanger for OpenSL
|
//Updated by Emile Belanger for OpenSL
|
||||||
|
|
||||||
|
@ -64,11 +57,7 @@ static SLObjectItf outputMixObject = NULL;
|
||||||
// buffer queue player interfaces
|
// buffer queue player interfaces
|
||||||
static SLObjectItf bqPlayerObject = NULL;
|
static SLObjectItf bqPlayerObject = NULL;
|
||||||
static SLPlayItf bqPlayerPlay;
|
static SLPlayItf bqPlayerPlay;
|
||||||
#ifdef ANDROID_NDK
|
|
||||||
static SLAndroidSimpleBufferQueueItf bqPlayerBufferQueue;
|
static SLAndroidSimpleBufferQueueItf bqPlayerBufferQueue;
|
||||||
#else
|
|
||||||
static SLBufferQueueItf bqPlayerBufferQueue;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static SLEffectSendItf bqPlayerEffectSend;
|
static SLEffectSendItf bqPlayerEffectSend;
|
||||||
static SLMuteSoloItf bqPlayerMuteSolo;
|
static SLMuteSoloItf bqPlayerMuteSolo;
|
||||||
|
@ -173,7 +162,7 @@ void bqPlayerCallback(SLAndroidSimpleBufferQueueItf bq, void *context)
|
||||||
// TEST pthread_mutex_unlock(&dma_mutex);
|
// TEST pthread_mutex_unlock(&dma_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
qboolean SNDDMA_Init( void ) {
|
int SNDDMA_Init( int sampleFrequencyInKHz ) {
|
||||||
int rc;
|
int rc;
|
||||||
int fmt;
|
int fmt;
|
||||||
int tmp;
|
int tmp;
|
||||||
|
@ -196,7 +185,7 @@ qboolean SNDDMA_Init( void ) {
|
||||||
dma.speed = 44100;
|
dma.speed = 44100;
|
||||||
dma.speed = 22050;
|
dma.speed = 22050;
|
||||||
dmasize = (dma.samples * (dma.samplebits/8));
|
dmasize = (dma.samples * (dma.samplebits/8));
|
||||||
dma.buffer = calloc(1, dmasize);
|
dma.buffer = (byte*)calloc(1, dmasize);
|
||||||
|
|
||||||
SLresult result;
|
SLresult result;
|
||||||
|
|
||||||
|
@ -290,7 +279,7 @@ int SNDDMA_GetDMAPos( void ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void SNDDMA_Shutdown( void ) {
|
void SNDDMA_Shutdown( void ) {
|
||||||
LOGI("shutdown Sound");
|
//LOGI("shutdown Sound");
|
||||||
bqPause(1);
|
bqPause(1);
|
||||||
(*bqPlayerObject)->Destroy(bqPlayerObject);
|
(*bqPlayerObject)->Destroy(bqPlayerObject);
|
||||||
(*outputMixObject)->Destroy(outputMixObject);
|
(*outputMixObject)->Destroy(outputMixObject);
|
247
Projects/Android/jni/OpenJK/code/android/android_window.cpp
Normal file
247
Projects/Android/jni/OpenJK/code/android/android_window.cpp
Normal file
|
@ -0,0 +1,247 @@
|
||||||
|
/*
|
||||||
|
===========================================================================
|
||||||
|
Copyright (C) 2005 - 2015, ioquake3 contributors
|
||||||
|
Copyright (C) 2013 - 2015, OpenJK contributors
|
||||||
|
|
||||||
|
This file is part of the OpenJK source code.
|
||||||
|
|
||||||
|
OpenJK is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License version 2 as
|
||||||
|
published by the Free Software Foundation.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
===========================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "qcommon/qcommon.h"
|
||||||
|
#include "rd-common/tr_types.h"
|
||||||
|
#include "sys/sys_local.h"
|
||||||
|
#include "qgl.h"
|
||||||
|
|
||||||
|
enum rserr_t
|
||||||
|
{
|
||||||
|
RSERR_OK,
|
||||||
|
|
||||||
|
RSERR_INVALID_FULLSCREEN,
|
||||||
|
RSERR_INVALID_MODE,
|
||||||
|
|
||||||
|
RSERR_UNKNOWN
|
||||||
|
};
|
||||||
|
|
||||||
|
static float displayAspect;
|
||||||
|
|
||||||
|
cvar_t *r_sdlDriver;
|
||||||
|
cvar_t *r_allowSoftwareGL;
|
||||||
|
|
||||||
|
// Window cvars
|
||||||
|
cvar_t *r_fullscreen = 0;
|
||||||
|
cvar_t *r_noborder;
|
||||||
|
cvar_t *r_centerWindow;
|
||||||
|
cvar_t *r_customwidth;
|
||||||
|
cvar_t *r_customheight;
|
||||||
|
cvar_t *r_swapInterval;
|
||||||
|
cvar_t *r_stereo;
|
||||||
|
cvar_t *r_mode;
|
||||||
|
cvar_t *r_displayRefresh;
|
||||||
|
|
||||||
|
// Window surface cvars
|
||||||
|
cvar_t *r_stencilbits;
|
||||||
|
cvar_t *r_depthbits;
|
||||||
|
cvar_t *r_colorbits;
|
||||||
|
cvar_t *r_ignorehwgamma;
|
||||||
|
cvar_t *r_ext_multisample;
|
||||||
|
|
||||||
|
void JKVR_GetScreenRes(int *width, int *height);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
** R_GetModeInfo
|
||||||
|
*/
|
||||||
|
typedef struct vidmode_s
|
||||||
|
{
|
||||||
|
const char *description;
|
||||||
|
int width, height;
|
||||||
|
} vidmode_t;
|
||||||
|
|
||||||
|
const vidmode_t r_vidModes[] = {
|
||||||
|
{ "Mode 0: 320x240", 320, 240 },
|
||||||
|
{ "Mode 1: 400x300", 400, 300 },
|
||||||
|
{ "Mode 2: 512x384", 512, 384 },
|
||||||
|
{ "Mode 3: 640x480", 640, 480 },
|
||||||
|
{ "Mode 4: 800x600", 800, 600 },
|
||||||
|
{ "Mode 5: 960x720", 960, 720 },
|
||||||
|
{ "Mode 6: 1024x768", 1024, 768 },
|
||||||
|
{ "Mode 7: 1152x864", 1152, 864 },
|
||||||
|
{ "Mode 8: 1280x1024", 1280, 1024 },
|
||||||
|
{ "Mode 9: 1600x1200", 1600, 1200 },
|
||||||
|
{ "Mode 10: 2048x1536", 2048, 1536 },
|
||||||
|
{ "Mode 11: 856x480 (wide)", 856, 480 },
|
||||||
|
{ "Mode 12: 2400x600(surround)",2400,600 }
|
||||||
|
};
|
||||||
|
static const int s_numVidModes = ARRAY_LEN( r_vidModes );
|
||||||
|
|
||||||
|
#define R_MODE_FALLBACK (4) // 640x480
|
||||||
|
|
||||||
|
qboolean R_GetModeInfo( int *width, int *height, int mode ) {
|
||||||
|
const vidmode_t *vm;
|
||||||
|
|
||||||
|
if ( mode < -1 ) {
|
||||||
|
return qfalse;
|
||||||
|
}
|
||||||
|
if ( mode >= s_numVidModes ) {
|
||||||
|
return qfalse;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( mode == -1 ) {
|
||||||
|
*width = r_customwidth->integer;
|
||||||
|
*height = r_customheight->integer;
|
||||||
|
return qtrue;
|
||||||
|
}
|
||||||
|
|
||||||
|
vm = &r_vidModes[mode];
|
||||||
|
|
||||||
|
*width = vm->width;
|
||||||
|
*height = vm->height;
|
||||||
|
|
||||||
|
return qtrue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** R_ModeList_f
|
||||||
|
*/
|
||||||
|
static void R_ModeList_f( void )
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
Com_Printf( "\n" );
|
||||||
|
Com_Printf( "Mode -2: Use desktop resolution\n" );
|
||||||
|
Com_Printf( "Mode -1: Use r_customWidth and r_customHeight variables\n" );
|
||||||
|
for ( i = 0; i < s_numVidModes; i++ )
|
||||||
|
{
|
||||||
|
Com_Printf( "%s\n", r_vidModes[i].description );
|
||||||
|
}
|
||||||
|
Com_Printf( "\n" );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
===============
|
||||||
|
GLimp_Minimize
|
||||||
|
|
||||||
|
Minimize the game so that user is back at the desktop
|
||||||
|
===============
|
||||||
|
*/
|
||||||
|
void GLimp_Minimize(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void JKVR_submitFrame();
|
||||||
|
|
||||||
|
void WIN_Present( window_t *window )
|
||||||
|
{
|
||||||
|
JKVR_submitFrame();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
window_t WIN_Init( const windowDesc_t *windowDesc, glconfig_t *glConfig )
|
||||||
|
{
|
||||||
|
Cmd_AddCommand("modelist", R_ModeList_f);
|
||||||
|
Cmd_AddCommand("minimize", GLimp_Minimize);
|
||||||
|
|
||||||
|
r_sdlDriver = Cvar_Get( "r_sdlDriver", "", CVAR_ROM );
|
||||||
|
r_allowSoftwareGL = Cvar_Get( "r_allowSoftwareGL", "0", CVAR_ARCHIVE_ND|CVAR_LATCH );
|
||||||
|
|
||||||
|
// Window cvars
|
||||||
|
r_fullscreen = Cvar_Get( "r_fullscreen", "0", CVAR_ARCHIVE|CVAR_LATCH );
|
||||||
|
r_noborder = Cvar_Get( "r_noborder", "0", CVAR_ARCHIVE|CVAR_LATCH );
|
||||||
|
r_centerWindow = Cvar_Get( "r_centerWindow", "0", CVAR_ARCHIVE|CVAR_LATCH );
|
||||||
|
r_customwidth = Cvar_Get( "r_customwidth", "1600", CVAR_ARCHIVE|CVAR_LATCH );
|
||||||
|
r_customheight = Cvar_Get( "r_customheight", "1024", CVAR_ARCHIVE|CVAR_LATCH );
|
||||||
|
r_swapInterval = Cvar_Get( "r_swapInterval", "0", CVAR_ARCHIVE_ND );
|
||||||
|
r_stereo = Cvar_Get( "r_stereo", "0", CVAR_ARCHIVE_ND|CVAR_LATCH );
|
||||||
|
r_mode = Cvar_Get( "r_mode", "4", CVAR_ARCHIVE|CVAR_LATCH );
|
||||||
|
r_displayRefresh = Cvar_Get( "r_displayRefresh", "0", CVAR_LATCH );
|
||||||
|
Cvar_CheckRange( r_displayRefresh, 0, 240, qtrue );
|
||||||
|
|
||||||
|
// Window render surface cvars
|
||||||
|
r_stencilbits = Cvar_Get( "r_stencilbits", "8", CVAR_ARCHIVE_ND|CVAR_LATCH );
|
||||||
|
r_depthbits = Cvar_Get( "r_depthbits", "0", CVAR_ARCHIVE_ND|CVAR_LATCH );
|
||||||
|
r_colorbits = Cvar_Get( "r_colorbits", "0", CVAR_ARCHIVE_ND|CVAR_LATCH );
|
||||||
|
r_ignorehwgamma = Cvar_Get( "r_ignorehwgamma", "0", CVAR_ARCHIVE_ND|CVAR_LATCH );
|
||||||
|
r_ext_multisample = Cvar_Get( "r_ext_multisample", "0", CVAR_ARCHIVE_ND|CVAR_LATCH );
|
||||||
|
Cvar_Get( "r_availableModes", "", CVAR_ROM );
|
||||||
|
|
||||||
|
|
||||||
|
glConfig->deviceSupportsGamma =
|
||||||
|
(qboolean)(!r_ignorehwgamma->integer);
|
||||||
|
|
||||||
|
// This depends on SDL_INIT_VIDEO, hence having it here
|
||||||
|
//IN_Init( screen );
|
||||||
|
|
||||||
|
// window_t is only really useful for Windows if the renderer wants to create a D3D context.
|
||||||
|
window_t window = {};
|
||||||
|
|
||||||
|
window.api = windowDesc->api;
|
||||||
|
|
||||||
|
#if defined(_WIN32)
|
||||||
|
SDL_SysWMinfo info;
|
||||||
|
SDL_VERSION(&info.version);
|
||||||
|
|
||||||
|
if ( SDL_GetWindowWMInfo(screen, &info) )
|
||||||
|
{
|
||||||
|
switch(info.subsystem) {
|
||||||
|
case SDL_SYSWM_WINDOWS:
|
||||||
|
window.handle = info.info.win.window;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return window;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
===============
|
||||||
|
GLimp_Shutdown
|
||||||
|
===============
|
||||||
|
*/
|
||||||
|
void WIN_Shutdown( void )
|
||||||
|
{
|
||||||
|
Cmd_RemoveCommand("modelist");
|
||||||
|
Cmd_RemoveCommand("minimize");
|
||||||
|
|
||||||
|
//IN_Shutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
void GLimp_EnableLogging( qboolean enable )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void GLimp_LogComment( char *comment )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void WIN_SetGamma( glconfig_t *glConfig, byte red[256], byte green[256], byte blue[256] )
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void *WIN_GL_GetProcAddress( const char *proc )
|
||||||
|
{
|
||||||
|
return NULL;//SDL_GL_GetProcAddress( proc );
|
||||||
|
}
|
||||||
|
|
||||||
|
qboolean WIN_GL_ExtensionSupported( const char *extension )
|
||||||
|
{
|
||||||
|
return ((Q_stristr( (const char *)glGetString (GL_EXTENSIONS), extension) ) != NULL) ? qtrue : qfalse;
|
||||||
|
}
|
|
@ -2,10 +2,6 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C"
|
|
||||||
{
|
|
||||||
#endif
|
|
||||||
int PortableKeyEvent(int state, int code ,int unitcode);
|
int PortableKeyEvent(int state, int code ,int unitcode);
|
||||||
void PortableAction(int state, int action);
|
void PortableAction(int state, int action);
|
||||||
|
|
||||||
|
@ -28,6 +24,3 @@ int PortableShowKeyboard(void);
|
||||||
int PortableInAutomap(void);
|
int PortableInAutomap(void);
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -477,10 +477,10 @@ CL_JoystickMove
|
||||||
void CL_JoystickMove( usercmd_t *cmd ) {
|
void CL_JoystickMove( usercmd_t *cmd ) {
|
||||||
float anglespeed;
|
float anglespeed;
|
||||||
|
|
||||||
if ( !in_joystick->integer )
|
/* if ( !in_joystick->integer )
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
if ( !(in_speed.active ^ cl_run->integer) ) {
|
if ( !(in_speed.active ^ cl_run->integer) ) {
|
||||||
cmd->buttons |= BUTTON_WALKING;
|
cmd->buttons |= BUTTON_WALKING;
|
||||||
|
|
|
@ -618,7 +618,7 @@ void S_Init( void ) {
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#endif
|
#endif
|
||||||
r = SNDDMA_Init(s_khz->integer);
|
r = static_cast<qboolean>(SNDDMA_Init(s_khz->integer));
|
||||||
|
|
||||||
if ( r ) {
|
if ( r ) {
|
||||||
s_soundStarted = 1;
|
s_soundStarted = 1;
|
||||||
|
|
|
@ -21,8 +21,9 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
#include "qcommon/q_shared.h"
|
#include "qcommon/q_shared.h"
|
||||||
|
|
||||||
|
|
||||||
// initializes cycling through a DMA buffer and returns information on it
|
// initializes cycling through a DMA buffer and returns information on it
|
||||||
qboolean SNDDMA_Init(int sampleFrequencyInKHz);
|
int SNDDMA_Init(int sampleFrequencyInKHz);
|
||||||
|
|
||||||
// gets the current DMA position
|
// gets the current DMA position
|
||||||
int SNDDMA_GetDMAPos(void);
|
int SNDDMA_GetDMAPos(void);
|
||||||
|
|
|
@ -44,7 +44,7 @@ static char homePath[ MAX_OSPATH ] = { 0 };
|
||||||
|
|
||||||
void Sys_PlatformInit( void )
|
void Sys_PlatformInit( void )
|
||||||
{
|
{
|
||||||
const char* term = getenv( "TERM" );
|
/* const char* term = getenv( "TERM" );
|
||||||
|
|
||||||
signal( SIGHUP, Sys_SigHandler );
|
signal( SIGHUP, Sys_SigHandler );
|
||||||
signal( SIGQUIT, Sys_SigHandler );
|
signal( SIGQUIT, Sys_SigHandler );
|
||||||
|
@ -56,6 +56,7 @@ void Sys_PlatformInit( void )
|
||||||
stdinIsATTY = qtrue;
|
stdinIsATTY = qtrue;
|
||||||
else
|
else
|
||||||
stdinIsATTY = qfalse;
|
stdinIsATTY = qfalse;
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void Sys_PlatformExit( void )
|
void Sys_PlatformExit( void )
|
||||||
|
|
|
@ -171,22 +171,22 @@ import static android.system.Os.setenv;
|
||||||
copy_asset("/sdcard/JKQuest", "commandline.txt", false);
|
copy_asset("/sdcard/JKQuest", "commandline.txt", false);
|
||||||
|
|
||||||
//Copy the weapon adjustment config
|
//Copy the weapon adjustment config
|
||||||
copy_asset("/sdcard/JKQuest/Main", "weapons_vr.cfg", false);
|
// copy_asset("/sdcard/JKQuest/Main", "weapons_vr.cfg", false);
|
||||||
|
|
||||||
//and the demo version - if required
|
//and the demo version - if required
|
||||||
copy_asset("/sdcard/JKQuest/Main", "pak0.pk3", false);
|
// copy_asset("/sdcard/JKQuest/Main", "pak0.pk3", false);
|
||||||
|
|
||||||
//and the vr weapons
|
//and the vr weapons
|
||||||
copy_asset("/sdcard/JKQuest/Main", "z_zvr_weapons.pk3", true);
|
// copy_asset("/sdcard/JKQuest/Main", "z_zvr_weapons.pk3", true);
|
||||||
|
|
||||||
//and the vr menu pk3
|
//and the vr menu pk3
|
||||||
copy_asset("/sdcard/JKQuest/Main", "z_jkquest_vrmenu.pk3", true);
|
// copy_asset("/sdcard/JKQuest/Main", "z_jkquest_vrmenu.pk3", true);
|
||||||
|
|
||||||
//and the venom scripting improvements pak (thank-you _HELLBARON_ !!)
|
//and the venom scripting improvements pak (thank-you _HELLBARON_ !!)
|
||||||
copy_asset("/sdcard/JKQuest/Main", "sp_vpak8.pk3", false);
|
// copy_asset("/sdcard/JKQuest/Main", "sp_vpak8.pk3", false);
|
||||||
|
|
||||||
//Read these from a file and pass through
|
//Read these from a file and pass through
|
||||||
commandLineParams = new String("jk2");
|
commandLineParams = new String("jk3");
|
||||||
|
|
||||||
//See if user is trying to use command line params
|
//See if user is trying to use command line params
|
||||||
if (new File("/sdcard/JKQuest/commandline.txt").exists()) // should exist!
|
if (new File("/sdcard/JKQuest/commandline.txt").exists()) // should exist!
|
||||||
|
|
Loading…
Reference in a new issue