Hi everyone,

i have a new release for you all and this release is really huge this time. Here are the major changes:

Audiosystem
The internal audio system now uses condition-variables instead of signals, which makes signals optional. This was important to get it running on BSD/Unix as well.

Api-Changes
I changed the return type of fplPlatformInit() to bool and moved the enum result type into its own function for querying the current platform state. This was really important for me because i always want to use fplPlatformInit() inside a conditional statement.

Input polling
All input polling functions for win32 and linux are now fully implemented (except for num-lock states on linux, which i have no clue how to query them on X11). In addition the demo "FPL_Input" is complete as well and shows keyboard/mouse and gamepad states in a visual-way, which is really useful to test input-devices.

POSIX/Linux
I changed/moved a lot of functions from the linux section into the posix side of things, so it will work on non-linux as well.
For example uname() works on linux, as well as BSD and other Unix systems.

Android support?
I started to fix some things up for android which may lead to partial/full android platform support in FPL. But at the moment, i am just testing things out.

64-bit file IO
I fixed all the broken read/write of 64-bit file ops - hopefully.

Several minor/small bugfixes
In addition i fixed a few bugs which i encountered while testing.

Documentation:
I changed the entire doxygen style from \ to @, just because i like it much better. Also i updated all the lists and stuff, so everything is up-to-date.

Next version / Last notes
I am planning to finish up all the progress tasks which are just window stuff on X11 mostly.
After that i will mainly focus on finishing up the documentation + integrating UDP/TCP support.
If everything goes well, i will start a extensive beta-test program and write several migration guides as well.

As usual the release is tagged and documentations are updated. You can find all the details on the project page: https://fpl.handmade.network/

Until next time.
Full changelog:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
## v0.9.1.0 beta
- Changed: Updated all the lists
- Changed: Added known issues section
- Changed: Renamed fplPlatformResultType to fplPlatformResultType
- Changed: fplPlatformInit returns now bool instead fplPlatformResultType
- Changed: Changed all comment prefix from \ to @, so it matches java-doc style
- Changed: Disable compile error when unix or bsd is detected
- Changed: Renamed fplGetKeyboardState to fplPollKeyboardState
- Changed: Renamed fplGetGamepadStates to fplPollGamepadStates
- Changed: fplDebugOut prints out to the console on non-MSVC
- Changed: Added enum value fplLogWriterFlags_StandardConsole
- Changed: Added enum value fplLogWriterFlags_ErrorConsole
- Changed: Removed field logToError from fplLogWriterConsole
- Changed: Internal audio system uses condition variables instead of signals now
- Removed: Removed obsolete field skipRepeatKeys in fplInputSettings
- Fixed: Clang compiler detection was not working because LLVM was detected first
- Fixed: UINT32_MAX was missing on android POSIX
- Fixed: fplFormatAnsiStringArgs was checking for argList as pointer which is wrong
- Fixed: leftTrigger/rightTrigger field in fplGamepadState had incorrect documentation
- New: Added function fplGetPlatformResult()
- New: Added struct fplMouseState
- New: Added function fplPollMouseState()
- New: Added field disabledEvents to fplInputSettings
- New: Added android platform detection
- New: Added enum fplGamepadButtonType

- Changed: [POSIX] Proper detection of all architecturess (x86, x86_64, x64, arm32, arm64)
- Changed: [POSIX] Moved fplGetCurrentUsername from the linux-section into the posix-section
- Changed: [POSIX] Moved fplGetProcessorCoreCount from Linux into the POSIX section
- Changed: [POSIX] Moved fplGetOperatingSystemInfos from Linux into the POSIX section
- Changed: [POSIX] Moved fplGetHomePath from Linux into the POSIX section
- Changed: [POSIX] Made fplGetExecutableFilePath Unix/Linux complaint and moved it into the POSIX section
- Changed: [POSIX] Added Clang/LLVM to atomics detection
- Fixed: [POSIX]: Removed alloca.h include when nor win32 or linux is detected
- Fixed: [POSIX]: Fixed typo in fplGetRunningArchitecture
- Fixed: [POSIX]: fplSemaphoreInit() was testing INT32_MAX instead of UINT32_MAX
- Fixed: [Win32] PeekMessage was not using our windowHandle at all
- Fixed: [Win32] fplReadFileBlock64/fplWriteFileBlock64 was not working at all
- Fixed: [Win32/XInput] Left/Right gamepad thumb buttons was not mapped
- Fixed: [POSIX] fplReadFileBlock64/fplWriteFileBlock64 was not working at all
- Fixed: [POSIX] Removed initialization (PTHREAD_MUTEX_INITIALIZER) of pthread_mutex_t in fpl__PosixMutexCreate
- Fixed: [X11] Fixed broken fplPollKeyboardState
- Fixed: [MSVC] Removed duplicated warning override in header
- New: [Win32]: Use SetCapture/ReleaseCapture for mouse down/up events
- New: [Win32]: Implemented fplPollMouseState()
- New: [Win32] Disable keyboard/mouse/gamepad events when fplInputSettings.disabledEvents is enabled
- New: [POSIX] Added __USE_LARGEFILE64 before including sys/types.h
- New: [X11] Implemented fplPollMouseState
- New: [X11] Implemented modifier keys in fplPollKeyboardState
- New: [Linux] Implemented fplPollGamepadStates