mirror of
https://github.com/Shpoike/Quakespasm.git
synced 2025-04-20 09:55:38 +00:00
Merge branch 'master' into qss-r7
This commit is contained in:
commit
f7d9168a26
197 changed files with 996 additions and 4674 deletions
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
@ -149,6 +149,9 @@ void _ReadWriteBarrier(void);
|
|||
* For more information on these semantics, take a look at the blog post:
|
||||
* http://preshing.com/20120913/acquire-and-release-semantics
|
||||
*/
|
||||
extern DECLSPEC void SDLCALL SDL_MemoryBarrierReleaseFunction(void);
|
||||
extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquireFunction(void);
|
||||
|
||||
#if defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
|
||||
#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("lwsync" : : : "memory")
|
||||
#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("lwsync" : : : "memory")
|
||||
|
@ -156,11 +159,11 @@ void _ReadWriteBarrier(void);
|
|||
#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__)
|
||||
#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory")
|
||||
#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory")
|
||||
#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__)
|
||||
#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_5TE__)
|
||||
#ifdef __thumb__
|
||||
/* The mcr instruction isn't available in thumb mode, use real functions */
|
||||
extern DECLSPEC void SDLCALL SDL_MemoryBarrierRelease(void);
|
||||
extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquire(void);
|
||||
#define SDL_MemoryBarrierRelease() SDL_MemoryBarrierReleaseFunction()
|
||||
#define SDL_MemoryBarrierAcquire() SDL_MemoryBarrierAcquireFunction()
|
||||
#else
|
||||
#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory")
|
||||
#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory")
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
@ -185,6 +185,12 @@ typedef void (SDLCALL * SDL_AudioFilter) (struct SDL_AudioCVT * cvt,
|
|||
|
||||
/**
|
||||
* A structure to hold a set of audio conversion filters and buffers.
|
||||
*
|
||||
* Note that various parts of the conversion pipeline can take advantage
|
||||
* of SIMD operations (like SSE2, for example). SDL_AudioCVT doesn't require
|
||||
* you to pass it aligned data, but can possibly run much faster if you
|
||||
* set both its (buf) field to a pointer that is aligned to 16 bytes, and its
|
||||
* (len) field to something that's a multiple of 16, if possible.
|
||||
*/
|
||||
#ifdef __GNUC__
|
||||
/* This structure is 84 bytes on 32-bit architectures, make sure GCC doesn't
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* include/SDL_config.h. Generated from SDL_config.h.in by configure. */
|
||||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
@ -84,6 +84,7 @@
|
|||
/* #undef HAVE_DBUS_DBUS_H */
|
||||
/* #undef HAVE_IBUS_IBUS_H */
|
||||
/* #undef HAVE_FCITX_FRONTEND_H */
|
||||
/* #undef HAVE_LIBSAMPLERATE_H */
|
||||
|
||||
/* C library functions */
|
||||
#define HAVE_MALLOC 1
|
||||
|
@ -364,4 +365,7 @@
|
|||
/* Enable dynamic udev support */
|
||||
/* #undef SDL_UDEV_DYNAMIC */
|
||||
|
||||
/* Enable dynamic libsamplerate support */
|
||||
/* #undef SDL_LIBSAMPLERATE_DYNAMIC */
|
||||
|
||||
#endif /* SDL_config_h_ */
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
@ -61,6 +61,9 @@
|
|||
#ifdef __SSE2__
|
||||
#include <emmintrin.h>
|
||||
#endif
|
||||
#ifdef __SSE3__
|
||||
#include <pmmintrin.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "begin_code.h"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
@ -744,6 +744,63 @@ extern "C" {
|
|||
*/
|
||||
#define SDL_HINT_RPI_VIDEO_LAYER "SDL_RPI_VIDEO_LAYER"
|
||||
|
||||
/**
|
||||
* \brief A variable controlling what driver to use for OpenGL ES contexts.
|
||||
*
|
||||
* On some platforms, currently Windows and X11, OpenGL drivers may support
|
||||
* creating contexts with an OpenGL ES profile. By default SDL uses these
|
||||
* profiles, when available, otherwise it attempts to load an OpenGL ES
|
||||
* library, e.g. that provided by the ANGLE project. This variable controls
|
||||
* whether SDL follows this default behaviour or will always load an
|
||||
* OpenGL ES library.
|
||||
*
|
||||
* Circumstances where this is useful include
|
||||
* - Testing an app with a particular OpenGL ES implementation, e.g ANGLE,
|
||||
* or emulator, e.g. those from ARM, Imagination or Qualcomm.
|
||||
* - Resolving OpenGL ES function addresses at link time by linking with
|
||||
* the OpenGL ES library instead of querying them at run time with
|
||||
* SDL_GL_GetProcAddress().
|
||||
*
|
||||
* Caution: for an application to work with the default behaviour across
|
||||
* different OpenGL drivers it must query the OpenGL ES function
|
||||
* addresses at run time using SDL_GL_GetProcAddress().
|
||||
*
|
||||
* This variable is ignored on most platforms because OpenGL ES is native
|
||||
* or not supported.
|
||||
*
|
||||
* This variable can be set to the following values:
|
||||
* "0" - Use ES profile of OpenGL, if available. (Default when not set.)
|
||||
* "1" - Load OpenGL ES library using the default library names.
|
||||
*
|
||||
*/
|
||||
#define SDL_HINT_OPENGL_ES_DRIVER "SDL_OPENGL_ES_DRIVER"
|
||||
|
||||
/**
|
||||
* \brief A variable controlling speed/quality tradeoff of audio resampling.
|
||||
*
|
||||
* If available, SDL can use libsamplerate ( http://www.mega-nerd.com/SRC/ )
|
||||
* to handle audio resampling. There are different resampling modes available
|
||||
* that produce different levels of quality, using more CPU.
|
||||
*
|
||||
* If this hint isn't specified to a valid setting, or libsamplerate isn't
|
||||
* available, SDL will use the default, internal resampling algorithm.
|
||||
*
|
||||
* Note that this is currently only applicable to resampling audio that is
|
||||
* being written to a device for playback or audio being read from a device
|
||||
* for capture. SDL_AudioCVT always uses the default resampler (although this
|
||||
* might change for SDL 2.1).
|
||||
*
|
||||
* This hint is currently only checked at audio subsystem initialization.
|
||||
*
|
||||
* This variable can be set to the following values:
|
||||
*
|
||||
* "0" or "default" - Use SDL's internal resampling (Default when not set - low quality, fast)
|
||||
* "1" or "fast" - Use fast, slightly higher quality resampling, if available
|
||||
* "2" or "medium" - Use medium quality resampling, if available
|
||||
* "3" or "best" - Use high quality resampling, if available
|
||||
*/
|
||||
#define SDL_HINT_AUDIO_RESAMPLING_MODE "SDL_AUDIO_RESAMPLING_MODE"
|
||||
|
||||
/**
|
||||
* \brief An enumeration of hint priorities
|
||||
*/
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
@ -73,6 +73,20 @@ typedef struct {
|
|||
|
||||
typedef Sint32 SDL_JoystickID;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SDL_JOYSTICK_TYPE_UNKNOWN,
|
||||
SDL_JOYSTICK_TYPE_GAMECONTROLLER,
|
||||
SDL_JOYSTICK_TYPE_WHEEL,
|
||||
SDL_JOYSTICK_TYPE_ARCADE_STICK,
|
||||
SDL_JOYSTICK_TYPE_FLIGHT_STICK,
|
||||
SDL_JOYSTICK_TYPE_DANCE_PAD,
|
||||
SDL_JOYSTICK_TYPE_GUITAR,
|
||||
SDL_JOYSTICK_TYPE_DRUM_KIT,
|
||||
SDL_JOYSTICK_TYPE_ARCADE_PAD,
|
||||
SDL_JOYSTICK_TYPE_THROTTLE
|
||||
} SDL_JoystickType;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SDL_JOYSTICK_POWER_UNKNOWN = -1,
|
||||
|
@ -124,6 +138,12 @@ extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProduct(int device_index);
|
|||
*/
|
||||
extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProductVersion(int device_index);
|
||||
|
||||
/**
|
||||
* Get the type of a joystick, if available.
|
||||
* This can be called before any joysticks are opened.
|
||||
*/
|
||||
extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetDeviceType(int device_index);
|
||||
|
||||
/**
|
||||
* Open a joystick for use.
|
||||
* The index passed as an argument refers to the N'th joystick on the system.
|
||||
|
@ -169,6 +189,11 @@ extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProduct(SDL_Joystick * joystick);
|
|||
*/
|
||||
extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProductVersion(SDL_Joystick * joystick);
|
||||
|
||||
/**
|
||||
* Get the type of an opened joystick.
|
||||
*/
|
||||
extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetType(SDL_Joystick * joystick);
|
||||
|
||||
/**
|
||||
* Return a string representation for this guid. pszGUID must point to at least 33 bytes
|
||||
* (32 for the string plus a NULL terminator).
|
||||
|
@ -244,6 +269,18 @@ extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state);
|
|||
extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick * joystick,
|
||||
int axis);
|
||||
|
||||
/**
|
||||
* Get the initial state of an axis control on a joystick.
|
||||
*
|
||||
* The state is a value ranging from -32768 to 32767.
|
||||
*
|
||||
* The axis indices start at index 0.
|
||||
*
|
||||
* \return SDL_TRUE if this axis has any initial value, or SDL_FALSE if not.
|
||||
*/
|
||||
extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAxisInitialState(SDL_Joystick * joystick,
|
||||
int axis, Sint16 *state);
|
||||
|
||||
/**
|
||||
* \name Hat positions
|
||||
*/
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
#define SDL_REVISION "hg-10735:754cac536474"
|
||||
#define SDL_REVISION_NUMBER 10735
|
||||
#define SDL_REVISION "hg-10881:2a8921196432"
|
||||
#define SDL_REVISION_NUMBER 10881
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
Binary file not shown.
File diff suppressed because it is too large
Load diff
|
@ -74,7 +74,7 @@ extern "C" {
|
|||
|
||||
#define LIBMIKMOD_VERSION_MAJOR 3L
|
||||
#define LIBMIKMOD_VERSION_MINOR 3L
|
||||
#define LIBMIKMOD_REVISION 9L
|
||||
#define LIBMIKMOD_REVISION 11L
|
||||
|
||||
#define LIBMIKMOD_VERSION \
|
||||
((LIBMIKMOD_VERSION_MAJOR<<16)| \
|
||||
|
|
|
@ -64,8 +64,8 @@ extern "C" {
|
|||
/**Export control for opus functions */
|
||||
|
||||
#ifndef OPUS_EXPORT
|
||||
# if defined(WIN32)
|
||||
# ifdef OPUS_BUILD
|
||||
# if defined(_WIN32)
|
||||
# if defined(OPUS_BUILD) && defined(DLL_EXPORT)
|
||||
# define OPUS_EXPORT __declspec(dllexport)
|
||||
# else
|
||||
# define OPUS_EXPORT
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -117,7 +117,7 @@
|
|||
|
||||
#if defined(_WIN64)
|
||||
# define PLATFORM_STRING "Win64"
|
||||
#elif defined(_WIN32)
|
||||
#elif defined(PLATFORM_WINDOWS)
|
||||
# define PLATFORM_STRING "Windows"
|
||||
#elif defined(PLATFORM_DOS)
|
||||
# define PLATFORM_STRING "DOS"
|
||||
|
|
|
@ -53,7 +53,6 @@ cvar_t cl_recordingdemo = {"cl_recordingdemo", "", CVAR_ROM}; //the name of the
|
|||
client_static_t cls;
|
||||
client_state_t cl;
|
||||
// FIXME: put these on hunk?
|
||||
efrag_t cl_efrags[MAX_EFRAGS];
|
||||
entity_t cl_static_entities[MAX_STATIC_ENTITIES];
|
||||
lightstyle_t cl_lightstyle[MAX_LIGHTSTYLES];
|
||||
dlight_t cl_dlights[MAX_DLIGHTS];
|
||||
|
@ -94,8 +93,6 @@ CL_ClearState
|
|||
*/
|
||||
void CL_ClearState (void)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!sv.active)
|
||||
Host_ClearMemory ();
|
||||
|
||||
|
@ -107,7 +104,6 @@ void CL_ClearState (void)
|
|||
SZ_Clear (&cls.message);
|
||||
|
||||
// clear other arrays
|
||||
memset (cl_efrags, 0, sizeof(cl_efrags));
|
||||
memset (cl_dlights, 0, sizeof(cl_dlights));
|
||||
memset (cl_lightstyle, 0, sizeof(cl_lightstyle));
|
||||
memset (cl_temp_entities, 0, sizeof(cl_temp_entities));
|
||||
|
@ -118,14 +114,6 @@ void CL_ClearState (void)
|
|||
cl_entities = (entity_t *) Hunk_AllocName (cl_max_edicts*sizeof(entity_t), "cl_entities");
|
||||
//johnfitz
|
||||
|
||||
//
|
||||
// allocate the efrags and chain together into a free list
|
||||
//
|
||||
cl.free_efrags = cl_efrags;
|
||||
for (i=0 ; i<MAX_EFRAGS-1 ; i++)
|
||||
cl.free_efrags[i].entnext = &cl.free_efrags[i+1];
|
||||
cl.free_efrags[i].entnext = NULL;
|
||||
|
||||
cl.viewent.netstate = nullentitystate;
|
||||
#ifdef PSET_SCRIPT
|
||||
PScript_Shutdown();
|
||||
|
@ -624,8 +612,11 @@ void CL_RelinkEntities (void)
|
|||
{
|
||||
if (!ent->model)
|
||||
{ // empty slot, ish.
|
||||
if (ent->forcelink)
|
||||
R_RemoveEfrags (ent); // just became empty
|
||||
|
||||
// ericw -- efrags are only used for static entities in GLQuake
|
||||
// ent can't be static, so this is a no-op.
|
||||
//if (ent->forcelink)
|
||||
// R_RemoveEfrags (ent); // just became empty
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -1075,7 +1066,7 @@ int CL_ReadFromServer (void)
|
|||
|
||||
//temp entities
|
||||
if (num_temp_entities > 64 && dev_peakstats.tempents <= 64)
|
||||
Con_DWarning ("%i tempentities exceeds standard limit of 64.\n", num_temp_entities);
|
||||
Con_DWarning ("%i tempentities exceeds standard limit of 64 (max = %d).\n", num_temp_entities, MAX_TEMP_ENTITIES);
|
||||
dev_stats.tempents = num_temp_entities;
|
||||
dev_peakstats.tempents = q_max(num_temp_entities, dev_peakstats.tempents);
|
||||
|
||||
|
@ -1084,7 +1075,7 @@ int CL_ReadFromServer (void)
|
|||
if (b->model && b->endtime >= cl.time)
|
||||
num_beams++;
|
||||
if (num_beams > 24 && dev_peakstats.beams <= 24)
|
||||
Con_DWarning ("%i beams exceeded standard limit of 24.\n", num_beams);
|
||||
Con_DWarning ("%i beams exceeded standard limit of 24 (max = %d).\n", num_beams, MAX_BEAMS);
|
||||
dev_stats.beams = num_beams;
|
||||
dev_peakstats.beams = q_max(num_beams, dev_peakstats.beams);
|
||||
|
||||
|
@ -1093,7 +1084,7 @@ int CL_ReadFromServer (void)
|
|||
if (l->die >= cl.time && l->radius)
|
||||
num_dlights++;
|
||||
if (num_dlights > 32 && dev_peakstats.dlights <= 32)
|
||||
Con_DWarning ("%i dlights exceeded standard limit of 32.\n", num_dlights);
|
||||
Con_DWarning ("%i dlights exceeded standard limit of 32 (max = %d).\n", num_dlights, MAX_DLIGHTS);
|
||||
dev_stats.dlights = num_dlights;
|
||||
dev_peakstats.dlights = q_max(num_dlights, dev_peakstats.dlights);
|
||||
|
||||
|
|
|
@ -1305,7 +1305,7 @@ static void CL_ParseServerInfo (void)
|
|||
|
||||
//johnfitz -- check for excessive models
|
||||
if (cl.model_count >= 256)
|
||||
Con_DWarning ("%i models exceeds standard limit of 256.\n", cl.model_count);
|
||||
Con_DWarning ("%i models exceeds standard limit of 256 (max = %d).\n", cl.model_count, MAX_MODELS);
|
||||
//johnfitz
|
||||
|
||||
// precache sounds
|
||||
|
@ -1325,7 +1325,7 @@ static void CL_ParseServerInfo (void)
|
|||
|
||||
//johnfitz -- check for excessive sounds
|
||||
if (cl.sound_count >= 256)
|
||||
Con_DWarning ("%i sounds exceeds standard limit of 256.\n", cl.sound_count);
|
||||
Con_DWarning ("%i sounds exceeds standard limit of 256 (max = %d).\n", cl.sound_count, MAX_SOUNDS);
|
||||
//johnfitz
|
||||
|
||||
//
|
||||
|
@ -2415,7 +2415,7 @@ void CL_ParseServerMessage (void)
|
|||
if (i == 2)
|
||||
{
|
||||
if (cl.num_statics > 128)
|
||||
Con_DWarning ("%i static entities exceeds standard limit of 128.\n", cl.num_statics);
|
||||
Con_DWarning ("%i static entities exceeds standard limit of 128 (max = %d).\n", cl.num_statics, MAX_STATIC_ENTITIES);
|
||||
R_CheckEfrags ();
|
||||
}
|
||||
//johnfitz
|
||||
|
|
|
@ -88,8 +88,6 @@ typedef struct
|
|||
struct trailstate_s *trailstate;
|
||||
} beam_t;
|
||||
|
||||
#define MAX_EFRAGS 4096 //ericw -- was 2048 //johnfitz -- was 640
|
||||
|
||||
#define MAX_MAPSTRING 2048
|
||||
#define MAX_DEMOS 8
|
||||
#define MAX_DEMONAME 16
|
||||
|
@ -226,6 +224,7 @@ typedef struct
|
|||
// refresh related state
|
||||
struct qmodel_s *worldmodel; // cl_entitites[0].model
|
||||
struct efrag_s *free_efrags;
|
||||
int num_efrags;
|
||||
int num_entities; // held in cl_entities array
|
||||
int num_statics; // held in cl_staticentities array
|
||||
entity_t viewent; // the gun model
|
||||
|
@ -314,13 +313,12 @@ extern cvar_t m_side;
|
|||
|
||||
|
||||
#define MAX_TEMP_ENTITIES 256 //johnfitz -- was 64
|
||||
#define MAX_STATIC_ENTITIES 2048 //johnfitz -- was 128
|
||||
#define MAX_STATIC_ENTITIES 4096 //johnfitz -- was 128
|
||||
#define INITIAL_MAX_VISEDICTS 256 // dynamic, now we support a decent network protocol
|
||||
|
||||
extern client_state_t cl;
|
||||
|
||||
// FIXME, allocate dynamically
|
||||
extern efrag_t cl_efrags[MAX_EFRAGS];
|
||||
extern entity_t cl_static_entities[MAX_STATIC_ENTITIES];
|
||||
extern lightstyle_t cl_lightstyle[MAX_LIGHTSTYLES];
|
||||
extern dlight_t cl_dlights[MAX_DLIGHTS];
|
||||
|
|
|
@ -519,7 +519,6 @@ void Cmd_List_f (void)
|
|||
Con_SafePrintf ("\n");
|
||||
}
|
||||
|
||||
|
||||
static char *Cmd_TintSubstring(const char *in, const char *substr, char *out, size_t outsize)
|
||||
{
|
||||
int l;
|
||||
|
@ -534,6 +533,7 @@ static char *Cmd_TintSubstring(const char *in, const char *substr, char *out, si
|
|||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
/*
|
||||
============
|
||||
Cmd_Apropos_f
|
||||
|
|
|
@ -1990,6 +1990,63 @@ byte *COM_LoadMallocFile (const char *path, unsigned int *path_id)
|
|||
return COM_LoadFile (path, LOADFILE_MALLOC, path_id);
|
||||
}
|
||||
|
||||
byte *COM_LoadMallocFile_TextMode_OSPath (const char *path, long *len_out)
|
||||
{
|
||||
FILE *f;
|
||||
byte *data;
|
||||
long len, actuallen;
|
||||
|
||||
// ericw -- this is used by Host_Loadgame_f. Translate CRLF to LF on load games,
|
||||
// othewise multiline messages have a garbage character at the end of each line.
|
||||
// TODO: could handle in a way that allows loading CRLF savegames on mac/linux
|
||||
// without the junk characters appearing.
|
||||
f = fopen (path, "rt");
|
||||
if (f == NULL)
|
||||
return NULL;
|
||||
|
||||
len = COM_filelength (f);
|
||||
if (len < 0)
|
||||
return NULL;
|
||||
|
||||
data = (byte *) malloc (len + 1);
|
||||
if (data == NULL)
|
||||
return NULL;
|
||||
|
||||
// (actuallen < len) if CRLF to LF translation was performed
|
||||
actuallen = fread (data, 1, len, f);
|
||||
if (ferror(f))
|
||||
{
|
||||
free (data);
|
||||
return NULL;
|
||||
}
|
||||
data[actuallen] = '\0';
|
||||
|
||||
if (len_out != NULL)
|
||||
*len_out = actuallen;
|
||||
return data;
|
||||
}
|
||||
|
||||
const char *COM_ParseIntNewline(const char *buffer, int *value)
|
||||
{
|
||||
int consumed = 0;
|
||||
sscanf (buffer, "%i\n%n", value, &consumed);
|
||||
return buffer + consumed;
|
||||
}
|
||||
|
||||
const char *COM_ParseFloatNewline(const char *buffer, float *value)
|
||||
{
|
||||
int consumed = 0;
|
||||
sscanf (buffer, "%f\n%n", value, &consumed);
|
||||
return buffer + consumed;
|
||||
}
|
||||
|
||||
const char *COM_ParseStringNewline(const char *buffer)
|
||||
{
|
||||
int consumed = 0;
|
||||
com_token[0] = '\0';
|
||||
sscanf (buffer, "%1023s\n%n", com_token, &consumed);
|
||||
return buffer + consumed;
|
||||
}
|
||||
|
||||
/*
|
||||
=================
|
||||
|
|
|
@ -269,6 +269,24 @@ void COM_LoadCacheFile (const char *path, struct cache_user_s *cu,
|
|||
byte *COM_LoadMallocFile (const char *path, unsigned int *path_id);
|
||||
// allocates the buffer on the system mem (malloc).
|
||||
|
||||
// Opens the given path directly, ignoring search paths.
|
||||
// Returns NULL on failure, or else a '\0'-terminated malloc'ed buffer.
|
||||
// Loads in "t" mode so CRLF to LF translation is performed on Windows.
|
||||
byte *COM_LoadMallocFile_TextMode_OSPath (const char *path, long *len_out);
|
||||
|
||||
// Attempts to parse an int, followed by a newline.
|
||||
// Returns advanced buffer position.
|
||||
// Doesn't signal parsing failure, but this is not needed for savegame loading.
|
||||
const char *COM_ParseIntNewline(const char *buffer, int *value);
|
||||
|
||||
// Attempts to parse a float followed by a newline.
|
||||
// Returns advanced buffer position.
|
||||
const char *COM_ParseFloatNewline(const char *buffer, float *value);
|
||||
|
||||
// Parse a string of non-whitespace into com_token, then tries to consume a
|
||||
// newline. Returns advanced buffer position.
|
||||
const char *COM_ParseStringNewline(const char *buffer);
|
||||
|
||||
/* The following FS_*() stdio replacements are necessary if one is
|
||||
* to perform non-sequential reads on files reopened on pak files
|
||||
* because we need the bookkeeping about file start/end positions.
|
||||
|
|
|
@ -2206,7 +2206,7 @@ void Mod_LoadSubmodels (lump_t *l)
|
|||
Sys_Error ("Mod_LoadSubmodels: too many visleafs (%d, max = %d) in %s", out->visleafs, MAX_MAP_LEAFS, loadmodel->name);
|
||||
|
||||
if (out->visleafs > 8192)
|
||||
Con_DWarning ("%i visleafs exceeds standard limit of 8192.\n", out->visleafs);
|
||||
Con_DWarning ("%i visleafs exceeds standard limit of 8192 (max = %d).\n", out->visleafs, MAX_MAP_LEAFS);
|
||||
//johnfitz
|
||||
}
|
||||
|
||||
|
|
|
@ -33,55 +33,57 @@ mnode_t *r_pefragtopnode;
|
|||
|
||||
ENTITY FRAGMENT FUNCTIONS
|
||||
|
||||
ericw -- GLQuake only uses efrags for static entities, and they're never
|
||||
removed, so I trimmed out unused functionality and fields in efrag_t.
|
||||
|
||||
Now, efrags are just a linked list for each leaf of the static
|
||||
entities that touch that leaf. The efrags are hunk-allocated so there is no
|
||||
fixed limit.
|
||||
|
||||
This is inspired by MH's tutorial, and code from RMQEngine.
|
||||
http://forums.insideqc.com/viewtopic.php?t=1930
|
||||
|
||||
===============================================================================
|
||||
*/
|
||||
|
||||
efrag_t **lastlink;
|
||||
|
||||
vec3_t r_emins, r_emaxs;
|
||||
|
||||
entity_t *r_addent;
|
||||
|
||||
|
||||
/*
|
||||
================
|
||||
R_RemoveEfrags
|
||||
#define EXTRA_EFRAGS 128
|
||||
|
||||
Call when removing an object from the world or moving it to another position
|
||||
================
|
||||
*/
|
||||
void R_RemoveEfrags (entity_t *ent)
|
||||
// based on RMQEngine
|
||||
static efrag_t *R_GetEfrag (void)
|
||||
{
|
||||
efrag_t *ef, *old, *walk, **prev;
|
||||
|
||||
ef = ent->efrag;
|
||||
|
||||
while (ef)
|
||||
// we could just Hunk_Alloc a single efrag_t and return it, but since
|
||||
// the struct is so small (2 pointers) allocate groups of them
|
||||
// to avoid wasting too much space on the hunk allocation headers.
|
||||
|
||||
if (cl.free_efrags)
|
||||
{
|
||||
prev = &ef->leaf->efrags;
|
||||
while (1)
|
||||
{
|
||||
walk = *prev;
|
||||
if (!walk)
|
||||
break;
|
||||
if (walk == ef)
|
||||
{ // remove this fragment
|
||||
*prev = ef->leafnext;
|
||||
break;
|
||||
}
|
||||
else
|
||||
prev = &walk->leafnext;
|
||||
}
|
||||
|
||||
old = ef;
|
||||
ef = ef->entnext;
|
||||
|
||||
// put it on the free list
|
||||
old->entnext = cl.free_efrags;
|
||||
cl.free_efrags = old;
|
||||
efrag_t *ef = cl.free_efrags;
|
||||
cl.free_efrags = ef->leafnext;
|
||||
ef->leafnext = NULL;
|
||||
|
||||
cl.num_efrags++;
|
||||
|
||||
return ef;
|
||||
}
|
||||
else
|
||||
{
|
||||
int i;
|
||||
|
||||
cl.free_efrags = (efrag_t *) Hunk_AllocName (EXTRA_EFRAGS * sizeof (efrag_t), "efrags");
|
||||
|
||||
for (i = 0; i < EXTRA_EFRAGS - 1; i++)
|
||||
cl.free_efrags[i].leafnext = &cl.free_efrags[i + 1];
|
||||
|
||||
cl.free_efrags[i].leafnext = NULL;
|
||||
|
||||
// call recursively to get a newly allocated free efrag
|
||||
return R_GetEfrag ();
|
||||
}
|
||||
|
||||
ent->efrag = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -111,29 +113,10 @@ void R_SplitEntityOnNode (mnode_t *node)
|
|||
leaf = (mleaf_t *)node;
|
||||
|
||||
// grab an efrag off the free list
|
||||
ef = cl.free_efrags;
|
||||
if (!ef)
|
||||
{
|
||||
//johnfitz -- less spammy overflow message
|
||||
if (!dev_overflows.efrags || dev_overflows.efrags + CONSOLE_RESPAM_TIME < realtime )
|
||||
{
|
||||
Con_Printf ("Too many efrags!\n");
|
||||
dev_overflows.efrags = realtime;
|
||||
}
|
||||
//johnfitz
|
||||
return; // no free fragments...
|
||||
}
|
||||
cl.free_efrags = cl.free_efrags->entnext;
|
||||
|
||||
ef = R_GetEfrag();
|
||||
ef->entity = r_addent;
|
||||
|
||||
// add the entity link
|
||||
*lastlink = ef;
|
||||
lastlink = &ef->entnext;
|
||||
ef->entnext = NULL;
|
||||
|
||||
// set the leaf links
|
||||
ef->leaf = leaf;
|
||||
ef->leafnext = leaf->efrags;
|
||||
leaf->efrags = ef;
|
||||
|
||||
|
@ -168,20 +151,14 @@ R_CheckEfrags -- johnfitz -- check for excessive efrag count
|
|||
*/
|
||||
void R_CheckEfrags (void)
|
||||
{
|
||||
efrag_t *ef;
|
||||
int count;
|
||||
|
||||
if (cls.signon < 2)
|
||||
return; //don't spam when still parsing signon packet full of static ents
|
||||
|
||||
for (count=MAX_EFRAGS, ef = cl.free_efrags; ef; count--, ef = ef->entnext)
|
||||
;
|
||||
if (cl.num_efrags > 640 && dev_peakstats.efrags <= 640)
|
||||
Con_DWarning ("%i efrags exceeds standard limit of 640.\n", cl.num_efrags);
|
||||
|
||||
if (count > 640 && dev_peakstats.efrags <= 640)
|
||||
Con_DWarning ("%i efrags exceeds standard limit of 640.\n", count);
|
||||
|
||||
dev_stats.efrags = count;
|
||||
dev_peakstats.efrags = q_max(count, dev_peakstats.efrags);
|
||||
dev_stats.efrags = cl.num_efrags;
|
||||
dev_peakstats.efrags = q_max(cl.num_efrags, dev_peakstats.efrags);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -199,7 +176,6 @@ void R_AddEfrags (entity_t *ent)
|
|||
|
||||
r_addent = ent;
|
||||
|
||||
lastlink = &ent->efrag;
|
||||
r_pefragtopnode = NULL;
|
||||
|
||||
entmodel = ent->model;
|
||||
|
|
|
@ -313,6 +313,7 @@ typedef struct {
|
|||
double packetsize;
|
||||
double efrags;
|
||||
double beams;
|
||||
double varstring;
|
||||
} overflowtimes_t;
|
||||
extern overflowtimes_t dev_overflows; //this stores the last time overflow messages were displayed, not the last time overflows occured
|
||||
#define CONSOLE_RESPAM_TIME 3 // seconds between repeated warning messages
|
||||
|
|
|
@ -667,7 +667,7 @@ void Host_ServerFrame (void)
|
|||
active++;
|
||||
}
|
||||
if (active > 600 && dev_peakstats.edicts <= 600)
|
||||
Con_DWarning ("%i edicts exceeds standard limit of 600.\n", active);
|
||||
Con_DWarning ("%i edicts exceeds standard limit of 600 (max = %d).\n", active, sv.max_edicts);
|
||||
dev_stats.edicts = active;
|
||||
dev_peakstats.edicts = q_max(active, dev_peakstats.edicts);
|
||||
}
|
||||
|
|
|
@ -1182,13 +1182,13 @@ Host_Loadgame_f
|
|||
*/
|
||||
void Host_Loadgame_f (void)
|
||||
{
|
||||
static char *start;
|
||||
|
||||
char name[MAX_OSPATH];
|
||||
FILE *f;
|
||||
char mapname[MAX_QPATH];
|
||||
float time, tfloat;
|
||||
char str[1<<16];
|
||||
const char *start;
|
||||
int i, r;
|
||||
const char *data;
|
||||
int i;
|
||||
edict_t *ent;
|
||||
int entnum;
|
||||
int version;
|
||||
|
@ -1202,6 +1202,12 @@ void Host_Loadgame_f (void)
|
|||
Con_Printf ("load <savename> : load a game\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (strstr(Cmd_Argv(1), ".."))
|
||||
{
|
||||
Con_Printf ("Relative pathnames are not allowed.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
cls.demonum = -1; // stop demo loop in case this fails
|
||||
|
||||
|
@ -1213,30 +1219,38 @@ void Host_Loadgame_f (void)
|
|||
// SCR_BeginLoadingPlaque ();
|
||||
|
||||
Con_Printf ("Loading game from %s...\n", name);
|
||||
f = fopen (name, "r");
|
||||
if (!f)
|
||||
|
||||
// avoid leaking if the previous Host_Loadgame_f failed with a Host_Error
|
||||
if (start != NULL)
|
||||
free (start);
|
||||
|
||||
start = (char *) COM_LoadMallocFile_TextMode_OSPath(name, NULL);
|
||||
if (start == NULL)
|
||||
{
|
||||
Con_Printf ("ERROR: couldn't open.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
fscanf (f, "%i\n", &version);
|
||||
data = start;
|
||||
data = COM_ParseIntNewline (data, &version);
|
||||
if (version != SAVEGAME_VERSION)
|
||||
{
|
||||
fclose (f);
|
||||
free (start);
|
||||
start = NULL;
|
||||
Con_Printf ("Savegame is version %i, not %i\n", version, SAVEGAME_VERSION);
|
||||
return;
|
||||
}
|
||||
fscanf (f, "%s\n", str);
|
||||
data = COM_ParseStringNewline (data);
|
||||
for (i = 0; i < NUM_SPAWN_PARMS; i++)
|
||||
fscanf (f, "%f\n", &spawn_parms[i]);
|
||||
data = COM_ParseFloatNewline (data, &spawn_parms[i]);
|
||||
// this silliness is so we can load 1.06 save files, which have float skill values
|
||||
fscanf (f, "%f\n", &tfloat);
|
||||
data = COM_ParseFloatNewline(data, &tfloat);
|
||||
current_skill = (int)(tfloat + 0.1);
|
||||
Cvar_SetValue ("skill", (float)current_skill);
|
||||
|
||||
fscanf (f, "%s\n",mapname);
|
||||
fscanf (f, "%f\n",&time);
|
||||
data = COM_ParseStringNewline (data);
|
||||
q_strlcpy (mapname, com_token, sizeof(mapname));
|
||||
data = COM_ParseFloatNewline (data, &time);
|
||||
|
||||
CL_Disconnect_f ();
|
||||
|
||||
|
@ -1244,7 +1258,8 @@ void Host_Loadgame_f (void)
|
|||
|
||||
if (!sv.active)
|
||||
{
|
||||
fclose (f);
|
||||
free (start);
|
||||
start = NULL;
|
||||
Con_Printf ("Couldn't load map\n");
|
||||
return;
|
||||
}
|
||||
|
@ -1255,38 +1270,16 @@ void Host_Loadgame_f (void)
|
|||
|
||||
for (i = 0; i < MAX_LIGHTSTYLES_VANILLA; i++)
|
||||
{
|
||||
fscanf (f, "%s\n", str);
|
||||
sv.lightstyles[i] = (const char *)Hunk_Strdup (str, "lightstyles");
|
||||
data = COM_ParseStringNewline (data);
|
||||
sv.lightstyles[i] = (const char *)Hunk_Strdup (com_token, "lightstyles");
|
||||
}
|
||||
|
||||
// load the edicts out of the savegame file
|
||||
entnum = -1; // -1 is the globals
|
||||
while (!feof(f))
|
||||
while (*data)
|
||||
{
|
||||
qboolean inside_string = false;
|
||||
for (i = 0; i < (int) sizeof(str) - 1; i++)
|
||||
{
|
||||
r = fgetc (f);
|
||||
if (r == EOF || !r)
|
||||
break;
|
||||
str[i] = r;
|
||||
if (r == '"')
|
||||
{
|
||||
inside_string = !inside_string;
|
||||
}
|
||||
else if (r == '}' && !inside_string) // only handle } characters outside of quoted strings
|
||||
{
|
||||
i++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i == (int) sizeof(str) - 1)
|
||||
{
|
||||
fclose (f);
|
||||
Sys_Error ("Loadgame buffer overflow");
|
||||
}
|
||||
str[i] = 0;
|
||||
start = str;
|
||||
const char *start = data;
|
||||
|
||||
while (*start == ' ' || *start == '\r' || *start == '\n')
|
||||
start++;
|
||||
if (start[0] == '/' && start[1] == '*' && (start[2] == '\r' || start[2] == '\n'))
|
||||
|
@ -1347,18 +1340,17 @@ void Host_Loadgame_f (void)
|
|||
start = end+1;
|
||||
}
|
||||
}
|
||||
start = COM_Parse(str);
|
||||
data = COM_Parse (data);
|
||||
if (!com_token[0])
|
||||
break; // end of file
|
||||
if (strcmp(com_token,"{"))
|
||||
{
|
||||
fclose (f);
|
||||
Sys_Error ("First token isn't a brace");
|
||||
}
|
||||
|
||||
if (entnum == -1)
|
||||
{ // parse the global vars
|
||||
ED_ParseGlobals (start);
|
||||
data = ED_ParseGlobals (data);
|
||||
}
|
||||
else
|
||||
{ // parse an edict
|
||||
|
@ -1370,7 +1362,7 @@ void Host_Loadgame_f (void)
|
|||
else {
|
||||
memset (ent, 0, pr_edict_size);
|
||||
}
|
||||
ED_ParseEdict (start, ent);
|
||||
data = ED_ParseEdict (data, ent);
|
||||
|
||||
// link it into the bsp tree
|
||||
if (!ent->free)
|
||||
|
@ -1383,7 +1375,8 @@ void Host_Loadgame_f (void)
|
|||
sv.num_edicts = entnum;
|
||||
sv.time = time;
|
||||
|
||||
fclose (f);
|
||||
free (start);
|
||||
start = NULL;
|
||||
|
||||
for (i = 0; i < NUM_SPAWN_PARMS; i++)
|
||||
svs.clients->spawn_parms[i] = spawn_parms[i];
|
||||
|
|
|
@ -47,6 +47,9 @@ struct qsockaddr
|
|||
#define NETFLAG_UNRELIABLE 0x00100000
|
||||
#define NETFLAG_CTL 0x80000000
|
||||
|
||||
#if (NETFLAG_LENGTH_MASK & NET_MAXMESSAGE) != NET_MAXMESSAGE
|
||||
#error "NET_MAXMESSAGE must fit within NETFLAG_LENGTH_MASK"
|
||||
#endif
|
||||
|
||||
#define NET_PROTOCOL_VERSION 3
|
||||
|
||||
|
|
|
@ -64,6 +64,16 @@ sys_socket_t UDP4_Init (void)
|
|||
else
|
||||
{
|
||||
buff[MAXHOSTNAMELEN - 1] = 0;
|
||||
|
||||
// ericw -- if our hostname ends in ".local" (a macOS thing),
|
||||
// don't bother calling gethostbyname(), because it blocks for a few seconds
|
||||
// and then fails (on my system anyway.)
|
||||
if (strstr(buff, ".local") == (buff + strlen(buff) - 6))
|
||||
{
|
||||
Con_SafePrintf("UDP_Init: skipping gethostbyname for %s\n", buff);
|
||||
goto skip_gethostbyname;
|
||||
}
|
||||
|
||||
local = gethostbyname(buff);
|
||||
if (local == NULL)
|
||||
{
|
||||
|
@ -80,6 +90,7 @@ sys_socket_t UDP4_Init (void)
|
|||
}
|
||||
}
|
||||
|
||||
skip_gethostbyname:
|
||||
if ((net_controlsocket4 = UDP4_OpenSocket(0)) == INVALID_SOCKET)
|
||||
{
|
||||
Con_SafePrintf("UDP4_Init: Unable to open control socket, UDP disabled\n");
|
||||
|
|
|
@ -67,7 +67,13 @@ char *PF_VarString (int first)
|
|||
}
|
||||
}
|
||||
if (s > 255)
|
||||
Con_DWarning("PF_VarString: %i characters exceeds standard limit of 255.\n", (int) s);
|
||||
{
|
||||
if (!dev_overflows.varstring || dev_overflows.varstring + CONSOLE_RESPAM_TIME < realtime)
|
||||
{
|
||||
Con_DWarning("PF_VarString: %i characters exceeds standard limit of 255 (max = %d).\n", (int) s, (int)(sizeof(out) - 1));
|
||||
dev_overflows.varstring = realtime;
|
||||
}
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
|
@ -1269,6 +1275,10 @@ static void PF_lightstyle (void)
|
|||
style = G_FLOAT(OFS_PARM0);
|
||||
val = G_STRING(OFS_PARM1);
|
||||
|
||||
// bounds check to avoid clobbering sv struct
|
||||
if (style < 0 || style >= MAX_LIGHTSTYLES)
|
||||
Host_Error("PF_lightstyle: style = %d", style);
|
||||
|
||||
// change the string in sv
|
||||
sv.lightstyles[style] = val;
|
||||
|
||||
|
|
|
@ -670,7 +670,7 @@ void ED_WriteGlobals (FILE *f)
|
|||
ED_ParseGlobals
|
||||
=============
|
||||
*/
|
||||
void ED_ParseGlobals (const char *data)
|
||||
const char *ED_ParseGlobals (const char *data)
|
||||
{
|
||||
char keyname[64];
|
||||
ddef_t *key;
|
||||
|
@ -684,7 +684,7 @@ void ED_ParseGlobals (const char *data)
|
|||
if (!data)
|
||||
Host_Error ("ED_ParseEntity: EOF without closing brace");
|
||||
|
||||
strcpy (keyname, com_token);
|
||||
q_strlcpy (keyname, com_token, sizeof(keyname));
|
||||
|
||||
// parse value
|
||||
data = COM_Parse (data);
|
||||
|
@ -704,6 +704,7 @@ void ED_ParseGlobals (const char *data)
|
|||
if (!ED_ParseEpair ((void *)pr_globals, key, com_token))
|
||||
Host_Error ("ED_ParseGlobals: parse error");
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
|
|
|
@ -106,7 +106,7 @@ void ED_Write (FILE *f, edict_t *ed);
|
|||
const char *ED_ParseEdict (const char *data, edict_t *ent);
|
||||
|
||||
void ED_WriteGlobals (FILE *f);
|
||||
void ED_ParseGlobals (const char *data);
|
||||
const char *ED_ParseGlobals (const char *data);
|
||||
|
||||
void ED_LoadFromFile (const char *data);
|
||||
|
||||
|
|
|
@ -36,6 +36,8 @@
|
|||
#include <sys/param.h>
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
/* NOTES on TYPE SIZES:
|
||||
Quake/Hexen II engine relied on 32 bit int type size
|
||||
with ILP32 (not LP32) model in mind. We now support
|
||||
|
@ -59,7 +61,6 @@
|
|||
#include <stdint.h>
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
|
|
|
@ -947,7 +947,7 @@ void GL_BuildLightmaps (void)
|
|||
|
||||
//johnfitz -- warn about exceeding old limits
|
||||
if (i >= 64)
|
||||
Con_DWarning ("%i lightmaps exceeds standard limit of 64.\n", i);
|
||||
Con_DWarning ("%i lightmaps exceeds standard limit of 64 (max = %d).\n", i, MAX_LIGHTMAPS);
|
||||
//johnfitz
|
||||
}
|
||||
|
||||
|
|
|
@ -34,10 +34,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
|
||||
typedef struct efrag_s
|
||||
{
|
||||
struct mleaf_s *leaf;
|
||||
struct efrag_s *leafnext;
|
||||
struct entity_s *entity;
|
||||
struct efrag_s *entnext;
|
||||
} efrag_t;
|
||||
|
||||
//johnfitz -- for lerping
|
||||
|
@ -151,7 +149,6 @@ void R_ViewChanged (vrect_t *pvrect, int lineadj, float aspect);
|
|||
|
||||
void R_CheckEfrags (void); //johnfitz
|
||||
void R_AddEfrags (entity_t *ent);
|
||||
void R_RemoveEfrags (entity_t *ent);
|
||||
|
||||
void R_NewMap (void);
|
||||
|
||||
|
|
|
@ -36,7 +36,6 @@
|
|||
#define LEGACY_FLAC
|
||||
#include <FLAC/seekable_stream_decoder.h>
|
||||
#endif
|
||||
#include <FLAC/metadata.h>
|
||||
|
||||
#ifdef LEGACY_FLAC
|
||||
#define FLAC__StreamDecoder FLAC__SeekableStreamDecoder
|
||||
|
@ -63,6 +62,9 @@
|
|||
#define FLAC__STREAM_DECODER_TELL_STATUS_OK FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_OK
|
||||
#define FLAC__STREAM_DECODER_TELL_STATUS_ERROR FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_ERROR
|
||||
#define FLAC__STREAM_DECODER_LENGTH_STATUS_OK FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_OK
|
||||
typedef unsigned FLAC_SIZE_T;
|
||||
#else
|
||||
typedef size_t FLAC_SIZE_T;
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
|
@ -85,7 +87,7 @@ flac_error_func (const FLAC__StreamDecoder *decoder,
|
|||
|
||||
static FLAC__StreamDecoderReadStatus
|
||||
flac_read_func (const FLAC__StreamDecoder *decoder, FLAC__byte buffer[],
|
||||
size_t *bytes, void *client_data)
|
||||
FLAC_SIZE_T *bytes, void *client_data)
|
||||
{
|
||||
flacfile_t *ff = (flacfile_t *) client_data;
|
||||
if (*bytes > 0)
|
||||
|
|
|
@ -26,6 +26,9 @@
|
|||
#include "snd_codec.h"
|
||||
#include "snd_codeci.h"
|
||||
#include "snd_xmp.h"
|
||||
#if defined(_WIN32) && defined(XMP_NO_DLL)
|
||||
#define BUILDING_STATIC
|
||||
#endif
|
||||
#include <xmp.h>
|
||||
#if ((XMP_VERCODE+0) < 0x040200)
|
||||
#error libxmp version 4.2 or newer is required
|
||||
|
|
|
@ -2099,7 +2099,7 @@ void SV_WriteEntitiesToClient (client_t *client, sizebuf_t *msg)
|
|||
//johnfitz -- devstats
|
||||
stats:
|
||||
if (msg->cursize > 1024 && dev_peakstats.packetsize <= 1024)
|
||||
Con_DWarning ("%i byte packet exceeds standard limit of 1024.\n", msg->cursize);
|
||||
Con_DWarning ("%i byte packet exceeds standard limit of 1024 (max = %d).\n", msg->cursize, msg->maxsize);
|
||||
dev_stats.packetsize = msg->cursize;
|
||||
dev_peakstats.packetsize = q_max(msg->cursize, dev_peakstats.packetsize);
|
||||
//johnfitz
|
||||
|
@ -2962,7 +2962,7 @@ void SV_SpawnServer (const char *server)
|
|||
|
||||
//johnfitz -- warn if signon buffer larger than standard server can handle
|
||||
if (sv.signon.cursize > 8000-2) //max size that will fit into 8000-sized client->message buffer with 2 extra bytes on the end
|
||||
Con_DWarning ("%i byte signon buffer exceeds standard limit of 7998.\n", sv.signon.cursize);
|
||||
Con_DWarning ("%i byte signon buffer exceeds standard limit of 7998 (max = %d).\n", sv.signon.cursize, sv.signon.maxsize);
|
||||
//johnfitz
|
||||
|
||||
// send serverinfo to all connected clients
|
||||
|
|
|
@ -166,9 +166,11 @@ static char cwd[1024];
|
|||
|
||||
static void Sys_GetBasedir (char *argv0, char *dst, size_t dstsize)
|
||||
{
|
||||
char *tmp;
|
||||
char *tmp;
|
||||
size_t rc;
|
||||
|
||||
if (GetCurrentDirectory(dstsize, dst) == 0)
|
||||
rc = GetCurrentDirectory(dstsize, dst);
|
||||
if (rc == 0 || rc > dstsize)
|
||||
Sys_Error ("Couldn't determine current directory");
|
||||
|
||||
tmp = dst;
|
||||
|
|
402
quakespasm/Windows/SDL/SDL_win32_main.c
Normal file
402
quakespasm/Windows/SDL/SDL_win32_main.c
Normal file
|
@ -0,0 +1,402 @@
|
|||
/*
|
||||
SDL_main.c, placed in the public domain by Sam Lantinga 4/13/98
|
||||
|
||||
The WinMain function -- calls your program's main() function
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
|
||||
#ifdef _WIN32_WCE
|
||||
# define DIR_SEPERATOR TEXT("\\")
|
||||
# undef _getcwd
|
||||
# define _getcwd(str,len) wcscpy(str,TEXT(""))
|
||||
# define setbuf(f,b)
|
||||
# define setvbuf(w,x,y,z)
|
||||
# define fopen _wfopen
|
||||
# define freopen _wfreopen
|
||||
# define remove(x) DeleteFile(x)
|
||||
#else
|
||||
# define DIR_SEPERATOR TEXT("/")
|
||||
# include <direct.h>
|
||||
#endif
|
||||
|
||||
/* Include the SDL main definition header */
|
||||
#include "SDL.h"
|
||||
#include "SDL_main.h"
|
||||
|
||||
#ifdef main
|
||||
# ifndef _WIN32_WCE_EMULATION
|
||||
# undef main
|
||||
# endif /* _WIN32_WCE_EMULATION */
|
||||
#endif /* main */
|
||||
|
||||
/* The standard output files */
|
||||
#define STDOUT_FILE TEXT("stdout.txt")
|
||||
#define STDERR_FILE TEXT("stderr.txt")
|
||||
|
||||
/* Set a variable to tell if the stdio redirect has been enabled. */
|
||||
static int stdioRedirectEnabled = 0;
|
||||
|
||||
#ifdef _WIN32_WCE
|
||||
static wchar_t stdoutPath[MAX_PATH];
|
||||
static wchar_t stderrPath[MAX_PATH];
|
||||
#else
|
||||
static char stdoutPath[MAX_PATH];
|
||||
static char stderrPath[MAX_PATH];
|
||||
#endif
|
||||
|
||||
#if defined(_WIN32_WCE) && _WIN32_WCE < 300
|
||||
/* seems to be undefined in Win CE although in online help */
|
||||
#define isspace(a) (((CHAR)a == ' ') || ((CHAR)a == '\t'))
|
||||
#endif /* _WIN32_WCE < 300 */
|
||||
|
||||
static void UnEscapeQuotes( char *arg )
|
||||
{
|
||||
char *last = NULL;
|
||||
|
||||
while( *arg ) {
|
||||
if( *arg == '"' && *last == '\\' ) {
|
||||
char *c_curr = arg;
|
||||
char *c_last = last;
|
||||
|
||||
while( *c_curr ) {
|
||||
*c_last = *c_curr;
|
||||
c_last = c_curr;
|
||||
c_curr++;
|
||||
}
|
||||
*c_last = '\0';
|
||||
}
|
||||
last = arg;
|
||||
arg++;
|
||||
}
|
||||
}
|
||||
|
||||
/* Parse a command line buffer into arguments */
|
||||
static int ParseCommandLine(char *cmdline, char **argv)
|
||||
{
|
||||
char *bufp;
|
||||
char *lastp = NULL;
|
||||
int argc, last_argc;
|
||||
|
||||
argc = last_argc = 0;
|
||||
for ( bufp = cmdline; *bufp; ) {
|
||||
/* Skip leading whitespace */
|
||||
while ( isspace(*bufp) ) {
|
||||
++bufp;
|
||||
}
|
||||
/* Skip over argument */
|
||||
if ( *bufp == '"' ) {
|
||||
++bufp;
|
||||
if ( *bufp ) {
|
||||
if ( argv ) {
|
||||
argv[argc] = bufp;
|
||||
}
|
||||
++argc;
|
||||
}
|
||||
/* Skip over word */
|
||||
while ( *bufp && ( *bufp != '"' || (lastp && *lastp == '\\') ) ) {
|
||||
lastp = bufp;
|
||||
++bufp;
|
||||
}
|
||||
} else {
|
||||
if ( *bufp ) {
|
||||
if ( argv ) {
|
||||
argv[argc] = bufp;
|
||||
}
|
||||
++argc;
|
||||
}
|
||||
/* Skip over word */
|
||||
while ( *bufp && ! isspace(*bufp) ) {
|
||||
++bufp;
|
||||
}
|
||||
}
|
||||
if ( *bufp ) {
|
||||
if ( argv ) {
|
||||
*bufp = '\0';
|
||||
}
|
||||
++bufp;
|
||||
}
|
||||
|
||||
/* Strip out \ from \" sequences */
|
||||
if( argv && last_argc != argc ) {
|
||||
UnEscapeQuotes( argv[last_argc] );
|
||||
}
|
||||
last_argc = argc;
|
||||
}
|
||||
if ( argv ) {
|
||||
argv[argc] = NULL;
|
||||
}
|
||||
return(argc);
|
||||
}
|
||||
|
||||
/* Show an error message */
|
||||
static void ShowError(const char *title, const char *message)
|
||||
{
|
||||
/* If USE_MESSAGEBOX is defined, you need to link with user32.lib */
|
||||
#ifdef USE_MESSAGEBOX
|
||||
MessageBox(NULL, message, title, MB_ICONEXCLAMATION|MB_OK);
|
||||
#else
|
||||
fprintf(stderr, "%s: %s\n", title, message);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Pop up an out of memory message, returns to Windows */
|
||||
static BOOL OutOfMemory(void)
|
||||
{
|
||||
ShowError("Fatal Error", "Out of memory - aborting");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* SDL_Quit() shouldn't be used with atexit() directly because
|
||||
calling conventions may differ... */
|
||||
static void cleanup(void)
|
||||
{
|
||||
SDL_Quit();
|
||||
}
|
||||
|
||||
/* Remove the output files if there was no output written */
|
||||
static void cleanup_output(void) {
|
||||
FILE *file;
|
||||
int empty;
|
||||
|
||||
/* Flush the output in case anything is queued */
|
||||
fclose(stdout);
|
||||
fclose(stderr);
|
||||
|
||||
/* Without redirection we're done */
|
||||
if (!stdioRedirectEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* See if the files have any output in them */
|
||||
if ( stdoutPath[0] ) {
|
||||
file = fopen(stdoutPath, TEXT("rb"));
|
||||
if ( file ) {
|
||||
empty = (fgetc(file) == EOF) ? 1 : 0;
|
||||
fclose(file);
|
||||
if ( empty ) {
|
||||
remove(stdoutPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( stderrPath[0] ) {
|
||||
file = fopen(stderrPath, TEXT("rb"));
|
||||
if ( file ) {
|
||||
empty = (fgetc(file) == EOF) ? 1 : 0;
|
||||
fclose(file);
|
||||
if ( empty ) {
|
||||
remove(stderrPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Redirect the output (stdout and stderr) to a file */
|
||||
static void redirect_output(void)
|
||||
{
|
||||
DWORD pathlen;
|
||||
#ifdef _WIN32_WCE
|
||||
wchar_t path[MAX_PATH];
|
||||
#else
|
||||
char path[MAX_PATH];
|
||||
#endif
|
||||
FILE *newfp;
|
||||
|
||||
pathlen = GetModuleFileName(NULL, path, SDL_arraysize(path));
|
||||
while ( pathlen > 0 && path[pathlen] != '\\' ) {
|
||||
--pathlen;
|
||||
}
|
||||
path[pathlen] = '\0';
|
||||
|
||||
#ifdef _WIN32_WCE
|
||||
wcsncpy( stdoutPath, path, SDL_arraysize(stdoutPath) );
|
||||
wcsncat( stdoutPath, DIR_SEPERATOR STDOUT_FILE, SDL_arraysize(stdoutPath) );
|
||||
#else
|
||||
SDL_strlcpy( stdoutPath, path, SDL_arraysize(stdoutPath) );
|
||||
SDL_strlcat( stdoutPath, DIR_SEPERATOR STDOUT_FILE, SDL_arraysize(stdoutPath) );
|
||||
#endif
|
||||
|
||||
/* Redirect standard input and standard output */
|
||||
newfp = freopen(stdoutPath, TEXT("w"), stdout);
|
||||
|
||||
#ifndef _WIN32_WCE
|
||||
if ( newfp == NULL ) { /* This happens on NT */
|
||||
#if !defined(stdout)
|
||||
stdout = fopen(stdoutPath, TEXT("w"));
|
||||
#else
|
||||
newfp = fopen(stdoutPath, TEXT("w"));
|
||||
if ( newfp ) {
|
||||
*stdout = *newfp;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif /* _WIN32_WCE */
|
||||
|
||||
#ifdef _WIN32_WCE
|
||||
wcsncpy( stderrPath, path, SDL_arraysize(stdoutPath) );
|
||||
wcsncat( stderrPath, DIR_SEPERATOR STDOUT_FILE, SDL_arraysize(stdoutPath) );
|
||||
#else
|
||||
SDL_strlcpy( stderrPath, path, SDL_arraysize(stderrPath) );
|
||||
SDL_strlcat( stderrPath, DIR_SEPERATOR STDERR_FILE, SDL_arraysize(stderrPath) );
|
||||
#endif
|
||||
|
||||
newfp = freopen(stderrPath, TEXT("w"), stderr);
|
||||
#ifndef _WIN32_WCE
|
||||
if ( newfp == NULL ) { /* This happens on NT */
|
||||
#if !defined(stderr)
|
||||
stderr = fopen(stderrPath, TEXT("w"));
|
||||
#else
|
||||
newfp = fopen(stderrPath, TEXT("w"));
|
||||
if ( newfp ) {
|
||||
*stderr = *newfp;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif /* _WIN32_WCE */
|
||||
|
||||
setvbuf(stdout, NULL, _IOLBF, BUFSIZ); /* Line buffered */
|
||||
setbuf(stderr, NULL); /* No buffering */
|
||||
stdioRedirectEnabled = 1;
|
||||
}
|
||||
|
||||
#if defined(_MSC_VER) && !defined(_WIN32_WCE)
|
||||
/* The VC++ compiler needs main defined */
|
||||
#define console_main main
|
||||
#endif
|
||||
|
||||
/* This is where execution begins [console apps] */
|
||||
int console_main(int argc, char *argv[])
|
||||
{
|
||||
size_t n;
|
||||
char *bufp, *appname;
|
||||
int status;
|
||||
|
||||
/* Get the class name from argv[0] */
|
||||
appname = argv[0];
|
||||
if ( (bufp=SDL_strrchr(argv[0], '\\')) != NULL ) {
|
||||
appname = bufp+1;
|
||||
} else
|
||||
if ( (bufp=SDL_strrchr(argv[0], '/')) != NULL ) {
|
||||
appname = bufp+1;
|
||||
}
|
||||
|
||||
if ( (bufp=SDL_strrchr(appname, '.')) == NULL )
|
||||
n = SDL_strlen(appname);
|
||||
else
|
||||
n = (bufp-appname);
|
||||
|
||||
bufp = SDL_stack_alloc(char, n+1);
|
||||
if ( bufp == NULL ) {
|
||||
return OutOfMemory();
|
||||
}
|
||||
SDL_strlcpy(bufp, appname, n+1);
|
||||
appname = bufp;
|
||||
|
||||
/* Load SDL dynamic link library */
|
||||
if ( SDL_Init(SDL_INIT_NOPARACHUTE) < 0 ) {
|
||||
ShowError("WinMain() error", SDL_GetError());
|
||||
return(FALSE);
|
||||
}
|
||||
atexit(cleanup_output);
|
||||
atexit(cleanup);
|
||||
|
||||
/* Sam:
|
||||
We still need to pass in the application handle so that
|
||||
DirectInput will initialize properly when SDL_RegisterApp()
|
||||
is called later in the video initialization.
|
||||
*/
|
||||
SDL_SetModuleHandle(GetModuleHandle(NULL));
|
||||
|
||||
/* Run the application main() code */
|
||||
status = SDL_main(argc, argv);
|
||||
|
||||
/* Exit cleanly, calling atexit() functions */
|
||||
exit(status);
|
||||
|
||||
/* Hush little compiler, don't you cry... */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* This is where execution begins [windowed apps] */
|
||||
#ifdef _WIN32_WCE
|
||||
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPWSTR szCmdLine, int sw)
|
||||
#else
|
||||
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw)
|
||||
#endif
|
||||
{
|
||||
HMODULE handle;
|
||||
char **argv;
|
||||
int argc;
|
||||
char *cmdline;
|
||||
char *env_str;
|
||||
#ifdef _WIN32_WCE
|
||||
wchar_t *bufp;
|
||||
int nLen;
|
||||
#else
|
||||
char *bufp;
|
||||
size_t nLen;
|
||||
#endif
|
||||
|
||||
/* Start up DDHELP.EXE before opening any files, so DDHELP doesn't
|
||||
keep them open. This is a hack.. hopefully it will be fixed
|
||||
someday. DDHELP.EXE starts up the first time DDRAW.DLL is loaded.
|
||||
*/
|
||||
handle = LoadLibrary(TEXT("DDRAW.DLL"));
|
||||
if ( handle != NULL ) {
|
||||
FreeLibrary(handle);
|
||||
}
|
||||
|
||||
/* Check for stdio redirect settings and do the redirection */
|
||||
if ((env_str = SDL_getenv("SDL_STDIO_REDIRECT"))) {
|
||||
if (SDL_atoi(env_str)) {
|
||||
redirect_output();
|
||||
}
|
||||
}
|
||||
#ifndef NO_STDIO_REDIRECT
|
||||
else {
|
||||
redirect_output();
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32_WCE
|
||||
nLen = wcslen(szCmdLine)+128+1;
|
||||
bufp = SDL_stack_alloc(wchar_t, nLen*2);
|
||||
wcscpy (bufp, TEXT("\""));
|
||||
GetModuleFileName(NULL, bufp+1, 128-3);
|
||||
wcscpy (bufp+wcslen(bufp), TEXT("\" "));
|
||||
wcsncpy(bufp+wcslen(bufp), szCmdLine,nLen-wcslen(bufp));
|
||||
nLen = wcslen(bufp)+1;
|
||||
cmdline = SDL_stack_alloc(char, nLen);
|
||||
if ( cmdline == NULL ) {
|
||||
return OutOfMemory();
|
||||
}
|
||||
WideCharToMultiByte(CP_ACP, 0, bufp, -1, cmdline, nLen, NULL, NULL);
|
||||
#else
|
||||
/* Grab the command line */
|
||||
bufp = GetCommandLine();
|
||||
nLen = SDL_strlen(bufp)+1;
|
||||
cmdline = SDL_stack_alloc(char, nLen);
|
||||
if ( cmdline == NULL ) {
|
||||
return OutOfMemory();
|
||||
}
|
||||
SDL_strlcpy(cmdline, bufp, nLen);
|
||||
#endif
|
||||
|
||||
/* Parse it into argv and argc */
|
||||
argc = ParseCommandLine(cmdline, NULL);
|
||||
argv = SDL_stack_alloc(char*, argc+1);
|
||||
if ( argv == NULL ) {
|
||||
return OutOfMemory();
|
||||
}
|
||||
ParseCommandLine(cmdline, argv);
|
||||
|
||||
/* Run the main program (after a little SDL initialization) */
|
||||
console_main(argc, argv);
|
||||
|
||||
/* Hush little compiler, don't you cry... */
|
||||
return 0;
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
@ -149,6 +149,9 @@ void _ReadWriteBarrier(void);
|
|||
* For more information on these semantics, take a look at the blog post:
|
||||
* http://preshing.com/20120913/acquire-and-release-semantics
|
||||
*/
|
||||
extern DECLSPEC void SDLCALL SDL_MemoryBarrierReleaseFunction(void);
|
||||
extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquireFunction(void);
|
||||
|
||||
#if defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
|
||||
#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("lwsync" : : : "memory")
|
||||
#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("lwsync" : : : "memory")
|
||||
|
@ -156,11 +159,11 @@ void _ReadWriteBarrier(void);
|
|||
#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__)
|
||||
#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory")
|
||||
#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory")
|
||||
#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__)
|
||||
#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_5TE__)
|
||||
#ifdef __thumb__
|
||||
/* The mcr instruction isn't available in thumb mode, use real functions */
|
||||
extern DECLSPEC void SDLCALL SDL_MemoryBarrierRelease(void);
|
||||
extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquire(void);
|
||||
#define SDL_MemoryBarrierRelease() SDL_MemoryBarrierReleaseFunction()
|
||||
#define SDL_MemoryBarrierAcquire() SDL_MemoryBarrierAcquireFunction()
|
||||
#else
|
||||
#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory")
|
||||
#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory")
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue