Compare commits

...

15 Commits

Author SHA1 Message Date
Eric Lasota
549e1ec3e6 Merge pull request #17 from WickedSmoke/master
Fix Linux build
2023-05-24 22:43:03 -04:00
Karl Robillard
141b176574 AerofoilX: Print missing files to stderr. 2023-05-24 07:40:51 -04:00
Karl Robillard
18a0d3a42a Fix Linux compile errors. 2023-05-24 07:40:45 -04:00
elasota
af6d18829e Fix compile failure on systems where pthread_t isn't a pointer, and possibly also systems where it isn't pointer-sized either 2023-05-21 21:53:18 -04:00
elasota
4182a1a107 Bump version to 1.1.3 2022-06-22 21:31:46 -04:00
elasota
5643f464cc Discard security exception on getSerialNumber, fixes Android USB gamepad crash. 2022-06-22 21:29:55 -04:00
elasota
a04c5f10df Reject zip archives with non-zero file count but empty central directory 2022-06-22 21:28:28 -04:00
Eric Lasota
3e13877788 Merge pull request #11 from ryandesign/stdlib
Include stdlib.h where its functions are used
2022-03-17 13:10:33 -04:00
Ryan Schmidt
53ff18d337 Include stdlib.h where its functions are used
Fixes build failure on OS X 10.10 and 10.11:

error: use of undeclared identifier 'free'
error: use of undeclared identifier 'malloc'
error: use of undeclared identifier 'qsort'
2022-03-17 02:54:37 -05:00
elasota
e33c01cc40 Change line endings to UNIX 2022-03-17 02:00:06 -04:00
Eric Lasota
0c891d3117 Merge pull request #10 from ryandesign/mac
Improve CMake macOS build
2022-03-17 01:58:13 -04:00
elasota
e4d2d9f9a4 Fix bad null compares 2022-03-17 01:50:19 -04:00
elasota
41c0312921 Add more nullptr_t operators 2022-03-17 01:48:16 -04:00
Ryan Schmidt
e78b01a5f3 Improve CMake macOS build
Now actually builds on macOS.

Closes #9
2022-03-17 00:39:55 -05:00
elasota
d470bb5eeb Add nullptr_t constructor to THandle 2022-03-16 21:24:47 -04:00
12 changed files with 367 additions and 294 deletions

View File

@@ -15,8 +15,8 @@ android {
} }
minSdkVersion 16 minSdkVersion 16
targetSdkVersion 30 targetSdkVersion 30
versionCode 16 versionCode 17
versionName "1.1.2" versionName "1.1.3"
externalNativeBuild { externalNativeBuild {
ndkBuild { ndkBuild {
arguments "APP_PLATFORM=android-16" arguments "APP_PLATFORM=android-16"

View File

@@ -1,5 +1,7 @@
#include "GpThreadEvent_Cpp11.h" #include "GpThreadEvent_Cpp11.h"
#include <stdlib.h>
GpThreadEvent_Cpp11::GpThreadEvent_Cpp11(bool autoReset, bool startSignaled) GpThreadEvent_Cpp11::GpThreadEvent_Cpp11(bool autoReset, bool startSignaled)
: m_flag(startSignaled) : m_flag(startSignaled)
, m_autoReset(autoReset) , m_autoReset(autoReset)

View File

@@ -27,7 +27,7 @@
#include "UTF8.h" #include "UTF8.h"
#if defined(__CYGWIN__) || defined(__MACOS__) #if defined(__CYGWIN__) || defined(__MACOS__) || defined(__linux)
typedef off_t off64_t; typedef off_t off64_t;
#define fstat64 fstat #define fstat64 fstat
#define fseek64 fseek #define fseek64 fseek
@@ -305,6 +305,8 @@ GpIOStream *GpFileSystem_X::OpenFileNested(PortabilityLayer::VirtualDirectory_t
FILE *f = fopen(resolvedPath.c_str(), mode); FILE *f = fopen(resolvedPath.c_str(), mode);
if (!f) if (!f)
{ {
fprintf(stderr, "GpFileSystem_X: Cannot open \"%s\"\n",
resolvedPath.c_str());
free(objStorage); free(objStorage);
return nullptr; return nullptr;
} }

View File

@@ -4,6 +4,7 @@
#include "GpApplicationName.h" #include "GpApplicationName.h"
#include "GpIOStream.h" #include "GpIOStream.h"
#include <stdlib.h>
#include <time.h> #include <time.h>
#include <cstring> #include <cstring>

View File

@@ -20,7 +20,9 @@
#include "IGpVOSEventQueue.h" #include "IGpVOSEventQueue.h"
#include <string> #include <string>
#ifdef __MACOS__
#include "MacInit.h" #include "MacInit.h"
#endif
GpXGlobals g_gpXGlobals; GpXGlobals g_gpXGlobals;
@@ -28,7 +30,7 @@ IGpDisplayDriver *GpDriver_CreateDisplayDriver_SDL_GL2(const GpDisplayDriverProp
IGpAudioDriver *GpDriver_CreateAudioDriver_SDL(const GpAudioDriverProperties &properties); IGpAudioDriver *GpDriver_CreateAudioDriver_SDL(const GpAudioDriverProperties &properties);
IGpInputDriver *GpDriver_CreateInputDriver_SDL2_Gamepad(const GpInputDriverProperties &properties); IGpInputDriver *GpDriver_CreateInputDriver_SDL2_Gamepad(const GpInputDriverProperties &properties);
#ifdef __MACOS__ #ifndef _WIN32
int main(int argc, char *argv[]) int main(int argc, char *argv[])
#else #else
SDLMAIN_DECLSPEC int SDL_main(int argc, char *argv[]) SDLMAIN_DECLSPEC int SDL_main(int argc, char *argv[])

View File

@@ -3,16 +3,13 @@
#include "IGpClipboardContents.h" #include "IGpClipboardContents.h"
#include "IGpThreadEvent.h" #include "IGpThreadEvent.h"
#ifdef __MACOS__
#include <SDL.h> #include <SDL.h>
#include <pthread.h> #include <pthread.h>
#else
#include "SDL2/SDL.h"
#endif
#include <time.h> #include <time.h>
#include <unistd.h> #include <unistd.h>
#include <string> #include <string>
#include <string.h>
#include <stdlib.h>
struct GpSystemServices_X_ThreadStartParams struct GpSystemServices_X_ThreadStartParams
{ {
@@ -52,13 +49,19 @@ void *GpSystemServices_X::CreateThread(ThreadFunc_t threadFunc, void *context)
if (!evt) if (!evt)
return nullptr; return nullptr;
pthread_t *threadPtr = static_cast<pthread_t*>(malloc(sizeof(pthread_t)));
if (!threadPtr)
{
evt->Destroy();
return nullptr;
}
GpSystemServices_X_ThreadStartParams startParams; GpSystemServices_X_ThreadStartParams startParams;
startParams.m_threadContext = context; startParams.m_threadContext = context;
startParams.m_threadFunc = threadFunc; startParams.m_threadFunc = threadFunc;
startParams.m_threadStartEvent = evt; startParams.m_threadStartEvent = evt;
pthread_t thread = nullptr; if (pthread_create(threadPtr, nullptr, StaticStartThread, &startParams) != 0)
if (pthread_create(&thread, nullptr, StaticStartThread, &startParams) != 0)
{ {
evt->Destroy(); evt->Destroy();
return nullptr; return nullptr;
@@ -67,7 +70,7 @@ void *GpSystemServices_X::CreateThread(ThreadFunc_t threadFunc, void *context)
evt->Wait(); evt->Wait();
evt->Destroy(); evt->Destroy();
return thread; return static_cast<void*>(threadPtr);
} }
bool GpSystemServices_X::Beep() const bool GpSystemServices_X::Beep() const

View File

@@ -1,275 +1,299 @@
cmake_minimum_required(VERSION 3.10) cmake_minimum_required(VERSION 3.10)
project (Aerofoil) project (Aerofoil)
SET(PLATFORM "X" CACHE STRING "Defines the target platform") SET(PLATFORM "X" CACHE STRING "Defines the target platform")
SET(EXECNAME "AerofoilX" CACHE STRING "Defines the exec name") SET(EXECNAME "AerofoilX" CACHE STRING "Defines the exec name")
message(${CMAKE_BINARY_DIR}) message(${CMAKE_BINARY_DIR})
find_package(SDL2 REQUIRED) find_package(SDL2 REQUIRED)
if(PLATFORM STREQUAL "MAC") if(PLATFORM STREQUAL "MAC")
SET(EXECNAME "AerofoilMac" CACHE STRING "Defines the exec name" FORCE) SET(EXECNAME "AerofoilMac" CACHE STRING "Defines the exec name" FORCE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
add_definitions(-D__MACOS__) add_definitions(-D__MACOS__)
endif() endif()
message("Building ${EXECNAME} for: ${PLATFORM}") message("Building ${EXECNAME} for: ${PLATFORM}")
add_definitions(-DGP_DEBUG_CONFIG=0) add_definitions(-DGP_DEBUG_CONFIG=0)
add_definitions(-DNDEBUG=1) add_definitions(-DNDEBUG=1)
add_library(stb STATIC add_library(stb STATIC
stb/stb_image_write.c stb/stb_image_write.c
) )
add_library(zlib STATIC add_library(zlib STATIC
zlib/adler32.c zlib/adler32.c
zlib/crc32.c zlib/crc32.c
zlib/deflate.c zlib/deflate.c
zlib/inffast.c zlib/inffast.c
zlib/inflate.c zlib/inflate.c
zlib/inftrees.c zlib/inftrees.c
zlib/trees.c zlib/trees.c
zlib/zutil.c zlib/zutil.c
) )
add_library(MacRomanConversion STATIC add_library(MacRomanConversion STATIC
MacRomanConversion/MacRomanConversion.cpp MacRomanConversion/MacRomanConversion.cpp
) )
add_library(PortabilityLayer STATIC add_library(PortabilityLayer STATIC
PortabilityLayer/AntiAliasTable.cpp PortabilityLayer/AntiAliasTable.cpp
PortabilityLayer/AppEventHandler.cpp PortabilityLayer/AppEventHandler.cpp
PortabilityLayer/BinHex4.cpp PortabilityLayer/BinHex4.cpp
PortabilityLayer/BitmapImage.cpp PortabilityLayer/BitmapImage.cpp
PortabilityLayer/ByteSwap.cpp PortabilityLayer/ByteSwap.cpp
PortabilityLayer/CFileStream.cpp PortabilityLayer/CFileStream.cpp
PortabilityLayer/DeflateCodec.cpp PortabilityLayer/CompositeRenderedFont.cpp
PortabilityLayer/DialogManager.cpp PortabilityLayer/DeflateCodec.cpp
PortabilityLayer/DisplayDeviceManager.cpp PortabilityLayer/DialogManager.cpp
PortabilityLayer/EllipsePlotter.cpp PortabilityLayer/DisplayDeviceManager.cpp
PortabilityLayer/FileBrowserUI.cpp PortabilityLayer/EllipsePlotter.cpp
PortabilityLayer/FileManager.cpp PortabilityLayer/FileBrowserUI.cpp
PortabilityLayer/FileSectionStream.cpp PortabilityLayer/FileManager.cpp
PortabilityLayer/FontFamily.cpp PortabilityLayer/FileSectionStream.cpp
PortabilityLayer/FontManager.cpp PortabilityLayer/FontFamily.cpp
PortabilityLayer/FontRenderer.cpp PortabilityLayer/FontManager.cpp
PortabilityLayer/GPArchive.cpp PortabilityLayer/FontRenderer.cpp
PortabilityLayer/HostSuspendHook.cpp PortabilityLayer/GPArchive.cpp
PortabilityLayer/IconLoader.cpp PortabilityLayer/HostSuspendHook.cpp
PortabilityLayer/InflateStream.cpp PortabilityLayer/IconLoader.cpp
PortabilityLayer/InputManager.cpp PortabilityLayer/InflateStream.cpp
PortabilityLayer/LinePlotter.cpp PortabilityLayer/InputManager.cpp
PortabilityLayer/MacBinary2.cpp PortabilityLayer/LinePlotter.cpp
PortabilityLayer/MacFileInfo.cpp PortabilityLayer/MacBinary2.cpp
PortabilityLayer/MacFileMem.cpp PortabilityLayer/MacFileInfo.cpp
PortabilityLayer/MemoryManager.cpp PortabilityLayer/MacFileMem.cpp
PortabilityLayer/MemReaderStream.cpp PortabilityLayer/MemoryManager.cpp
PortabilityLayer/MenuManager.cpp PortabilityLayer/MemReaderStream.cpp
PortabilityLayer/MMHandleBlock.cpp PortabilityLayer/MenuManager.cpp
PortabilityLayer/PLApplication.cpp PortabilityLayer/MMHandleBlock.cpp
PortabilityLayer/PLButtonWidget.cpp PortabilityLayer/PLApplication.cpp
PortabilityLayer/PLControlDefinitions.cpp PortabilityLayer/PLButtonWidget.cpp
PortabilityLayer/PLCore.cpp PortabilityLayer/PLControlDefinitions.cpp
PortabilityLayer/PLCTabReducer.cpp PortabilityLayer/PLCore.cpp
PortabilityLayer/PLDialogs.cpp PortabilityLayer/PLCTabReducer.cpp
PortabilityLayer/PLDrivers.cpp PortabilityLayer/PLDialogs.cpp
PortabilityLayer/PLEditboxWidget.cpp PortabilityLayer/PLDrivers.cpp
PortabilityLayer/PLEventQueue.cpp PortabilityLayer/PLEditboxWidget.cpp
PortabilityLayer/PLHacks.cpp PortabilityLayer/PLEventQueue.cpp
PortabilityLayer/PLHandle.cpp PortabilityLayer/PLHacks.cpp
PortabilityLayer/PLIconWidget.cpp PortabilityLayer/PLHandle.cpp
PortabilityLayer/PLImageWidget.cpp PortabilityLayer/PLIconWidget.cpp
PortabilityLayer/PLInvisibleWidget.cpp PortabilityLayer/PLImageWidget.cpp
PortabilityLayer/PLKeyEncoding.cpp PortabilityLayer/PLInvisibleWidget.cpp
PortabilityLayer/PLLabelWidget.cpp PortabilityLayer/PLKeyEncoding.cpp
PortabilityLayer/PLMenus.cpp PortabilityLayer/PLLabelWidget.cpp
PortabilityLayer/PLMovies.cpp PortabilityLayer/PLMenus.cpp
PortabilityLayer/PLNumberFormatting.cpp PortabilityLayer/PLMovies.cpp
PortabilityLayer/PLPopupMenuWidget.cpp PortabilityLayer/PLNumberFormatting.cpp
PortabilityLayer/PLQDOffscreen.cpp PortabilityLayer/PLPopupMenuWidget.cpp
PortabilityLayer/PLQDraw.cpp PortabilityLayer/PLQDOffscreen.cpp
PortabilityLayer/PLResourceManager.cpp PortabilityLayer/PLQDraw.cpp
PortabilityLayer/PLResources.cpp PortabilityLayer/PLResourceManager.cpp
PortabilityLayer/PLScrollBarWidget.cpp PortabilityLayer/PLResources.cpp
PortabilityLayer/PLSound.cpp PortabilityLayer/PLScrollBarWidget.cpp
PortabilityLayer/PLStandardColors.cpp PortabilityLayer/PLSound.cpp
PortabilityLayer/PLStringCompare.cpp PortabilityLayer/PLStandardColors.cpp
PortabilityLayer/PLSysCalls.cpp PortabilityLayer/PLStringCompare.cpp
PortabilityLayer/PLTimeTaggedVOSEvent.cpp PortabilityLayer/PLSysCalls.cpp
PortabilityLayer/PLWidgets.cpp PortabilityLayer/PLTimeTaggedVOSEvent.cpp
PortabilityLayer/QDGraf.cpp PortabilityLayer/PLWidgets.cpp
PortabilityLayer/QDManager.cpp PortabilityLayer/QDGraf.cpp
PortabilityLayer/QDPictDecoder.cpp PortabilityLayer/QDManager.cpp
PortabilityLayer/QDPictEmitContext.cpp PortabilityLayer/QDPictDecoder.cpp
PortabilityLayer/QDPictHeader.cpp PortabilityLayer/QDPictEmitContext.cpp
PortabilityLayer/QDPixMap.cpp PortabilityLayer/QDPictHeader.cpp
PortabilityLayer/QDPort.cpp PortabilityLayer/QDPixMap.cpp
PortabilityLayer/QDStandardPalette.cpp PortabilityLayer/QDPort.cpp
PortabilityLayer/RandomNumberGenerator.cpp PortabilityLayer/QDStandardPalette.cpp
PortabilityLayer/ResolveCachingColor.cpp PortabilityLayer/RandomNumberGenerator.cpp
PortabilityLayer/ResourceCompiledRef.cpp PortabilityLayer/ResolveCachingColor.cpp
PortabilityLayer/ResourceFile.cpp PortabilityLayer/ResourceCompiledRef.cpp
PortabilityLayer/ScanlineMask.cpp PortabilityLayer/ResourceFile.cpp
PortabilityLayer/ScanlineMaskBuilder.cpp PortabilityLayer/ScanlineMask.cpp
PortabilityLayer/ScanlineMaskConverter.cpp PortabilityLayer/ScanlineMaskBuilder.cpp
PortabilityLayer/ScanlineMaskIterator.cpp PortabilityLayer/ScanlineMaskConverter.cpp
PortabilityLayer/SimpleGraphic.cpp PortabilityLayer/ScanlineMaskIterator.cpp
PortabilityLayer/TextPlacer.cpp PortabilityLayer/SimpleGraphic.cpp
PortabilityLayer/UTF8.cpp PortabilityLayer/TextPlacer.cpp
PortabilityLayer/WindowDef.cpp PortabilityLayer/UTF8.cpp
PortabilityLayer/WindowManager.cpp PortabilityLayer/WindowDef.cpp
PortabilityLayer/WorkerThread.cpp PortabilityLayer/WindowManager.cpp
PortabilityLayer/XModemCRC.cpp PortabilityLayer/WorkerThread.cpp
PortabilityLayer/ZipFileProxy.cpp PortabilityLayer/XModemCRC.cpp
) PortabilityLayer/ZipFileProxy.cpp
)
target_include_directories(PortabilityLayer PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Common> target_include_directories(PortabilityLayer PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/GpCommon> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Common>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/PortabilityLayer> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/GpCommon>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/zlib> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/PortabilityLayer>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/rapidjson/include> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/zlib>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/MacRomanConversion> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/rapidjson/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/stb> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/MacRomanConversion>
) $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/stb>
)
target_compile_options(PortabilityLayer PRIVATE -Wno-multichar)
target_compile_options(PortabilityLayer PRIVATE -Wno-multichar)
target_link_libraries(PortabilityLayer zlib MacRomanConversion stb)
target_link_libraries(PortabilityLayer zlib MacRomanConversion stb)
add_library(GpShell STATIC
GpShell/GpAppEnvironment.cpp add_library(GpShell STATIC
GpShell/GpAudioDriverFactory.cpp GpShell/GpAppEnvironment.cpp
GpShell/GpDisplayDriverFactory.cpp GpShell/GpAudioDriverFactory.cpp
GpShell/GpFontHandlerFactory.cpp GpShell/GpDisplayDriverFactory.cpp
GpShell/GpGlobalConfig.cpp GpShell/GpFontHandlerFactory.cpp
GpShell/GpInputDriverFactory.cpp GpShell/GpGlobalConfig.cpp
GpShell/GpMain.cpp GpShell/GpInputDriverFactory.cpp
GpShell/GpVOSEventQueue.cpp GpShell/GpMain.cpp
) GpShell/GpVOSEventQueue.cpp
)
target_include_directories(GpShell PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Common> target_include_directories(GpShell PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/GpCommon> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Common>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/PortabilityLayer> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/GpCommon>
) $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/PortabilityLayer>
)
add_library(GpApp STATIC
GpApp/About.cpp add_library(GpApp STATIC
GpApp/AnimCursor.cpp GpApp/About.cpp
GpApp/AppleEvents.cpp GpApp/AnimCursor.cpp
GpApp/Banner.cpp GpApp/AppleEvents.cpp
GpApp/ColorUtils.cpp GpApp/Banner.cpp
GpApp/Coordinates.cpp GpApp/ColorUtils.cpp
GpApp/DialogUtils.cpp GpApp/Coordinates.cpp
GpApp/DynamicMaps.cpp GpApp/DialogUtils.cpp
GpApp/Dynamics.cpp GpApp/DynamicMaps.cpp
GpApp/Dynamics2.cpp GpApp/Dynamics.cpp
GpApp/Dynamics3.cpp GpApp/Dynamics2.cpp
GpApp/Environ.cpp GpApp/Dynamics3.cpp
GpApp/Events.cpp GpApp/Environ.cpp
GpApp/FileError.cpp GpApp/Events.cpp
GpApp/GameOver.cpp GpApp/FileError.cpp
GpApp/GpAppInterface.cpp GpApp/GameOver.cpp
GpApp/Grease.cpp GpApp/GpAppInterface.cpp
GpApp/HighScores.cpp GpApp/Grease.cpp
GpApp/House.cpp GpApp/HighScores.cpp
GpApp/HouseInfo.cpp GpApp/House.cpp
GpApp/HouseIO.cpp GpApp/HouseInfo.cpp
GpApp/HouseLegal.cpp GpApp/HouseIO.cpp
GpApp/Input.cpp GpApp/HouseLegal.cpp
GpApp/Interactions.cpp GpApp/Input.cpp
GpApp/InterfaceInit.cpp GpApp/Interactions.cpp
GpApp/Link.cpp GpApp/InterfaceInit.cpp
GpApp/Main.cpp GpApp/Link.cpp
GpApp/MainMenuUI.cpp GpApp/Main.cpp
GpApp/MainWindow.cpp GpApp/MainMenuUI.cpp
GpApp/Map.cpp GpApp/MainWindow.cpp
GpApp/Marquee.cpp GpApp/Map.cpp
GpApp/Menu.cpp GpApp/Marquee.cpp
GpApp/Modes.cpp GpApp/Menu.cpp
GpApp/Music.cpp GpApp/Modes.cpp
GpApp/ObjectAdd.cpp GpApp/Music.cpp
GpApp/ObjectDraw.cpp GpApp/ObjectAdd.cpp
GpApp/ObjectDraw2.cpp GpApp/ObjectDraw.cpp
GpApp/ObjectDrawAll.cpp GpApp/ObjectDraw2.cpp
GpApp/ObjectEdit.cpp GpApp/ObjectDrawAll.cpp
GpApp/ObjectInfo.cpp GpApp/ObjectEdit.cpp
GpApp/ObjectRects.cpp GpApp/ObjectInfo.cpp
GpApp/Objects.cpp GpApp/ObjectRects.cpp
GpApp/Play.cpp GpApp/Objects.cpp
GpApp/Player.cpp GpApp/Play.cpp
GpApp/Prefs.cpp GpApp/Player.cpp
GpApp/RectUtils.cpp GpApp/Prefs.cpp
GpApp/Render.cpp GpApp/RectUtils.cpp
GpApp/Room.cpp GpApp/Render.cpp
GpApp/RoomGraphics.cpp GpApp/Room.cpp
GpApp/RoomInfo.cpp GpApp/RoomGraphics.cpp
GpApp/RubberBands.cpp GpApp/RoomInfo.cpp
GpApp/SavedGames.cpp GpApp/RubberBands.cpp
GpApp/Scoreboard.cpp GpApp/SavedGames.cpp
GpApp/Scrap.cpp GpApp/Scoreboard.cpp
GpApp/SelectHouse.cpp GpApp/Scrap.cpp
GpApp/Settings.cpp GpApp/SelectHouse.cpp
GpApp/Sound.cpp GpApp/Settings.cpp
GpApp/SoundSync_Cpp11.cpp GpApp/Sound.cpp
GpApp/SourceExport.cpp GpApp/SoundSync_Cpp11.cpp
GpApp/StringUtils.cpp GpApp/SourceExport.cpp
GpApp/StructuresInit.cpp GpApp/StringUtils.cpp
GpApp/StructuresInit2.cpp GpApp/StructuresInit.cpp
GpApp/Tools.cpp GpApp/StructuresInit2.cpp
GpApp/Transit.cpp GpApp/Tools.cpp
GpApp/Transitions.cpp GpApp/Transit.cpp
GpApp/Triggers.cpp GpApp/Transitions.cpp
GpApp/Trip.cpp GpApp/Triggers.cpp
GpApp/Utilities.cpp GpApp/Trip.cpp
GpApp/WindowUtils.cpp GpApp/Utilities.cpp
) GpApp/WindowUtils.cpp
)
target_compile_options(GpApp PRIVATE -Wno-multichar)
target_compile_options(GpApp PRIVATE -Wno-multichar)
target_include_directories(GpApp PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Common> target_include_directories(GpApp PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/GpCommon> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Common>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/PortabilityLayer> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/GpCommon>
) $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/PortabilityLayer>
)
target_link_libraries(GpApp PortabilityLayer)
target_link_libraries(GpApp PortabilityLayer)
if(CMAKE_HOST_UNIX)
add_executable(${EXECNAME} if(CMAKE_HOST_UNIX)
AerofoilPortable/GpSystemServices_POSIX.cpp set(EXEC_SOURCES )
AerofoilPortable/GpThreadEvent_Cpp11.cpp list(APPEND EXEC_SOURCES
AerofoilPortable/GpAllocator_C.cpp AerofoilPortable/GpSystemServices_POSIX.cpp
AerofoilSDL/GpAudioDriver_SDL2.cpp AerofoilPortable/GpThreadEvent_Cpp11.cpp
AerofoilSDL/GpDisplayDriver_SDL_GL2.cpp AerofoilPortable/GpAllocator_C.cpp
AerofoilSDL/GpInputDriver_SDL_Gamepad.cpp AerofoilSDL/GpAudioDriver_SDL2.cpp
AerofoilSDL/ShaderCode/CopyQuadP.cpp AerofoilSDL/GpDisplayDriver_SDL_GL2.cpp
AerofoilSDL/ShaderCode/DrawQuad32P.cpp AerofoilSDL/GpInputDriver_SDL_Gamepad.cpp
AerofoilSDL/ShaderCode/DrawQuadPaletteP.cpp AerofoilSDL/ShaderCode/CopyQuadP.cpp
AerofoilSDL/ShaderCode/DrawQuadV.cpp AerofoilSDL/ShaderCode/DrawQuad32P.cpp
AerofoilSDL/ShaderCode/ScaleQuadP.cpp AerofoilSDL/ShaderCode/DrawQuadPaletteP.cpp
AerofoilX/GpMain_SDL_X.cpp AerofoilSDL/ShaderCode/DrawQuadV.cpp
AerofoilX/GpLogDriver_X.cpp AerofoilSDL/ShaderCode/ScaleQuadP.cpp
AerofoilX/GpSystemServices_X.cpp AerofoilX/GpMain_SDL_X.cpp
AerofoilX/GpFileSystem_X.cpp AerofoilX/GpLogDriver_X.cpp
) AerofoilX/GpSystemServices_X.cpp
AerofoilX/GpFileSystem_X.cpp
target_include_directories(${EXECNAME} PRIVATE )
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Common>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/GpCommon> set(EXEC_LIBS )
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/GpShell> list(APPEND EXEC_LIBS
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/AerofoilSDL> ${SDL2_LIBRARIES}
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/AerofoilPortable> GpApp
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/PortabilityLayer> GpShell
${SDL2_INCLUDE_DIRS} )
)
set(EXEC_INC_DIRS )
target_link_libraries(${EXECNAME} ${SDL2_LIBRARIES} GpApp GpShell) list(APPEND EXEC_INC_DIRS
endif() $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Common>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/GpCommon>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/GpShell>
install (TARGETS ${EXECNAME}) $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/AerofoilSDL>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/AerofoilPortable>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/PortabilityLayer>
${SDL2_INCLUDE_DIRS}
)
if(PLATFORM STREQUAL "MAC")
list(APPEND EXEC_SOURCES
AerofoilMac/AerofoilMac/AerofoilApplication.mm
AerofoilMac/AerofoilMac/MacInit.mm
)
list(APPEND EXEC_INC_DIRS
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/AerofoilMac/AerofoilMac>
)
list(APPEND EXEC_LIBS
"-framework Cocoa"
)
endif(PLATFORM STREQUAL "MAC")
add_executable(${EXECNAME} ${EXEC_SOURCES})
target_include_directories(${EXECNAME} PRIVATE ${EXEC_INC_DIRS})
target_link_libraries(${EXECNAME} ${EXEC_LIBS})
endif()
install (TARGETS ${EXECNAME})

View File

@@ -336,7 +336,7 @@ void DisposCursors (void)
void IncrementCursor (void) void IncrementCursor (void)
{ {
if (animCursorH == 0) if (animCursorH == nullptr)
InitAnimatedCursor(nil); InitAnimatedCursor(nil);
if (animCursorH) if (animCursorH)
{ {
@@ -356,7 +356,7 @@ void IncrementCursor (void)
void DecrementCursor (void) void DecrementCursor (void)
{ {
if (animCursorH == 0) if (animCursorH == nullptr)
InitAnimatedCursor(nil); InitAnimatedCursor(nil);
if (animCursorH) if (animCursorH)
{ {

View File

@@ -2,8 +2,8 @@
#define GP_BUILD_VERSION_MAJOR 1 #define GP_BUILD_VERSION_MAJOR 1
#define GP_BUILD_VERSION_MINOR 1 #define GP_BUILD_VERSION_MINOR 1
#define GP_BUILD_VERSION_UPDATE 2 #define GP_BUILD_VERSION_UPDATE 3
#define GP_APPLICATION_VERSION_STRING "1.1.2" #define GP_APPLICATION_VERSION_STRING "1.1.3"
#define GP_APPLICATION_COPYRIGHT_STRING "2019-2021 Gale Force Games LLC" #define GP_APPLICATION_COPYRIGHT_STRING "2019-2022 Gale Force Games LLC"
#define GP_APPLICATION_WEBSITE_STRING "https://github.com/elasota/Aerofoil" #define GP_APPLICATION_WEBSITE_STRING "https://github.com/elasota/Aerofoil"

View File

@@ -1,5 +1,7 @@
#pragma once #pragma once
#include <cstddef>
namespace PortabilityLayer namespace PortabilityLayer
{ {
struct MMHandleBlock; struct MMHandleBlock;
@@ -24,6 +26,7 @@ class THandle final : public THandleBase
{ {
public: public:
THandle(); THandle();
THandle(std::nullptr_t);
THandle(T **hdl); THandle(T **hdl);
explicit THandle(PortabilityLayer::MMHandleBlock *hdl); explicit THandle(PortabilityLayer::MMHandleBlock *hdl);
THandle(const THandle<T> &other); THandle(const THandle<T> &other);
@@ -46,6 +49,9 @@ public:
bool operator==(T** other) const; bool operator==(T** other) const;
bool operator!=(T** other) const; bool operator!=(T** other) const;
bool operator==(std::nullptr_t) const;
bool operator!=(std::nullptr_t) const;
static THandle<T> NullPtr(); static THandle<T> NullPtr();
}; };
@@ -74,6 +80,12 @@ inline THandle<T>::THandle()
{ {
} }
template<class T>
inline THandle<T>::THandle(std::nullptr_t)
: THandleBase(nullptr)
{
}
template<class T> template<class T>
inline THandle<T>::THandle(T **hdl) inline THandle<T>::THandle(T **hdl)
: THandleBase(reinterpret_cast<PortabilityLayer::MMHandleBlock*>(hdl)) : THandleBase(reinterpret_cast<PortabilityLayer::MMHandleBlock*>(hdl))
@@ -107,17 +119,33 @@ inline bool THandle<T>::operator!=(const THandle<T> &other) const
template<class T> template<class T>
inline bool THandle<T>::operator==(T** other) const inline bool THandle<T>::operator==(T** other) const
{ {
if (other == nullptr)
return m_hdl == nullptr;
return static_cast<void*>(&m_hdl->m_contents) == static_cast<void*>(other); return static_cast<void*>(&m_hdl->m_contents) == static_cast<void*>(other);
} }
template<class T> template<class T>
inline bool THandle<T>::operator!=(T** other) const inline bool THandle<T>::operator!=(T** other) const
{ {
if (other == nullptr)
return m_hdl != nullptr;
return static_cast<void*>(&m_hdl->m_contents) != static_cast<void*>(other); return static_cast<void*>(&m_hdl->m_contents) != static_cast<void*>(other);
} }
template<class T> template<class T>
THandle<T> THandle<T>::NullPtr() inline bool THandle<T>::operator==(std::nullptr_t) const
{
return m_hdl == nullptr;
}
template<class T>
inline bool THandle<T>::operator!=(std::nullptr_t) const
{
return m_hdl != nullptr;
}
template<class T>
inline THandle<T> THandle<T>::NullPtr()
{ {
return THandle<T>(static_cast<PortabilityLayer::MMHandleBlock *>(nullptr)); return THandle<T>(static_cast<PortabilityLayer::MMHandleBlock *>(nullptr));
} }

View File

@@ -10,6 +10,7 @@
#include "DeflateCodec.h" #include "DeflateCodec.h"
#include <algorithm> #include <algorithm>
#include <stdlib.h>
namespace namespace
{ {
@@ -323,6 +324,11 @@ namespace PortabilityLayer
return nullptr; return nullptr;
} }
} }
else
{
if (numFiles != 0)
return nullptr;
}
bool failed = false; bool failed = false;

View File

@@ -53,7 +53,12 @@ class HIDDeviceUSB implements HIDDevice {
public String getSerialNumber() { public String getSerialNumber() {
String result = null; String result = null;
if (Build.VERSION.SDK_INT >= 21) { if (Build.VERSION.SDK_INT >= 21) {
result = mDevice.getSerialNumber(); try {
result = mDevice.getSerialNumber();
}
catch (SecurityException exception) {
//Log.w(TAG, "App permissions mean we cannot get serial number for device " + getDeviceName() + " message: " + exception.getMessage());
}
} }
if (result == null) { if (result == null) {
result = ""; result = "";