Final Platform Layer » Blog

Another short update

 — 1 week, 5 days ago
I want to give you a short update about the current state of FPL.

The recent weeks i didn´t had much time to work on my projects at all, either i was sick or i was doing family stuff. But i finally finished the doxygen editor now and in its current state, you can actually use it ;) Of course i open sourced it, so you can find it on github as well: https://github.com/f1nalspace/doxygeneditor

So i have now a tool, to finish up the documentations - which is my main goal right now.
After that i will ...
Read More →


Documentions & Editor

 — 1 month, 1 week ago
Hi everyone,

i just want to give a short update about the current state of FPL and what am i working on right know.

Since the last version, i started adding proper multi-monitor support and so far it already works on Win32, except for X11 which i havent touched since last release. As a matter of fact, since the last release i never booted my linux system nor touched the CLion IDE at all.

So for a change of pace, i decided to fully work on the documentations which are far beyond from complete.
So in the last two weeks ...
Read More →


FPL 0.9.2 is here

 — 2 months ago
Hi everyone,

i have another release for you all!

This time its a very huge release which consists of a ton of bugfixes, lots of refactoring & renamings.

UTF-8 only
The biggest change is the full translation to UTF-8 only for all paths and strings. This means that all strings and paths expects UTF-8 always and all Wide/Ansi functions are removed - except for UTF-8 <-> Unicode conversion functions. The windows platform implementation works internally in unicode only and does UTF-8 <-> Unicode conversion automatically.

Rewritten Event-System
The second big change is the rewrite of the event handling ...
Read More →


Fighting with Audio/ALSA Playback

 — 2 months, 2 weeks ago
For quite some time now, i am fighting with the ALSA output driver in FPL.
I dont know why but for some unknown reason my logitech blutooth headset wont produce any sound in FPL in combination with ALSA output on linux at all. All the parameters looks totally legit, but when i call snd_pcm_writei() i dont hear anything at all - just 100% silence.

Now here comes the weird thing:
The library "mini_al.h" (which is btw the best audio output library), totally works fine for the same audio device, with ALSA as a backend, the same sample rate, same format ...
Read More →


Message/Event Handling/Queuing in FPL

 — 2 months, 3 weeks ago
At the moment FPL have no way to let you handle the os events directly. It just queues it up internally so you can fetch it later, but this is wrong and needs to be fixed. So i am fixing that right now.

But this will result in a api change regarding fplWindowUpdate(), fpl*Event() and so on.
Also the impact of change will be very huge, because it affects all window and input handling.

I dont expect that to be done very soon so maybe it will be done by mid of october, but i cant promise :-(
Read More →


Unicode vs Ansi vs UTF8

 — 3 months, 2 weeks ago
At the moment FPL does support ansi strings for every function which uses either a path or a string buffer, but some have two versions: One for ansi and one for widechar. I dont like that way of having two different versions for each function. So i want you guys to help me settle on one solution once and for all.

If you are in a win32 platform you most likely want to use widechar for all your paths - especially when you write applications which deals with any kind of media.

On the other hand in a linux or unix ...
Read More →


Release v0.9.1.0

 — 3 months, 4 weeks ago
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 ...
Read More →


Bugfix Build v0.9.0.1

 — 4 months, 1 week ago
Hi all,

the 64-bit file IO was not working for x86 linux builds, so i decided to release a short bugfix version - directly after that. Also the icon loading for X11 was broken, so this fix is included in here as well. Hopefully that is it.

As usual docs are updated and release is tagged. Until next time.

Changelog for v0.9.0.1 beta:
1
2
3
- Fixed: [X11] Fixed icon loading was not working at all
- Fixed: [POSIX] fplWriteFileBlock64 was not properly implemented
- Fixed: [POSIX] fplReadFileBlock64 was not properly implemented
Read More →


Big Release v0.9.0.0

 — 4 months, 1 week ago
Hi all,

i have another release for you all ;-)

This time its a huge release! I changed and improved FPL a lot and added a ton of new functionality to it. Here are the main changes:

64-bit File-IO:

There are now file methods for working with 64-bit files, such as fplReadFileBlock64, fplWriteFileBlock64, etc. I also added general size_t file functions which maps to the 32 or the 64 version - depending on the compiled platform.

Gamepad Support on Linux:

Gamepad support for linux is now implemented as well - tested with a Logitech F310 Gamepad successfully. But its limited to /dev/input ...
Read More →


Short Release v0.8.4.0

 — 5 months ago
Hi,

i have another release for you all ;-)

This time its a short but important release which contains a fix bugfixes and two new things.
On Linux/X11 key release messages was never detected properly, so i fixed that finally.
I added support for dragging and dropping a single file into the window, but only for win32 for the moment (X11 will come soon).
Also i added a new init flag (fplInitFlags_Console) to control when a console gets created. I did that because the detection was not properly working.

Oh and before i forgot, i finally finished the image viewer ...
Read More →


Release v0.8.3.0

 — 5 months, 2 weeks ago
Hi everyone,

i have another release for you all ;-)

This release contains a few bugfixes and a couple of new stuff.

Bugfixes/Issues:

The waiting for multiple threads in win32 was busted, so i rewritten it without using the broken WaitForMultipleObjects. There was a crash in fplThreadTerminate when the thread has already exited, which i fixed it.

Also i started to use the slow CLion in win32 as well - using the MingW compiler, so i fixed some bugs for that as well. Btw. i dont know why, but visual studio 2017 is extremely unstable right now and always restarts automatically ...
Read More →


Release v0.8.2.0

 — 5 months, 4 weeks ago
Hi everyone,

i made another release for you all ;-)

This release contains several bugfixes, const correctness for the api, more key mappings and the ability to load icons.
In addition i revised and corrected all the code documentation blocks which are used to generate the doxygen documentation.

But one thing that i noticed is that neither visual studio nor clion shows me any comments at all.
So it seems that both IDE´s have no support for doxygen comments, or i decided for the wrong style.

Of course thats not everything i have done: There are new demos, two new ...
Read More →


Back from holiday

 — 6 months ago
It was quiet on this project for a little while, but now i am back from holiday!
So here is a short progress about the current state of FPL and what is coming next.

What i have done since last time:

Since last time i haven´t done much, just added a few missing key translations (plus, comma, minus, etc.) and fixed up the C++ enum operator macro.

But i added another game demo (FPL_Towadev) which is a technical tower defence clone i am making for a code challenge.

While making this game, i needed a sort of game framework ...
Read More →


Release v0.8.1.0

 — 7 months ago
Hi everyone,

i pushed another release for you all ;-)

This time i added Semaphores to the threading module, refactored the logging system and added audio device selection for ALSA.
In addition i fixed some small bugs and added a couple of new functions. Also i added Semaphores to the documentation.

Regarding Documentation: I really need some help in that! At the moment the documentation are bare minimum, full of bugs and typos - even some function descriptions may be wrong or has some errors. So if you want to help me improving FPL, you are invited to do so by looking ...
Read More →


State of FPL

 — 7 months ago
Hi there,

today i want to give you a short overview of what the current state of FPL are and what will come in the future.

Current state:

The Linux implementation is becoming closer to match the same feature level as Win32. There is not that much tasks left for Linux at this point. Window, sound and video is already working and the only big thing left is Gamepad support for Linux - which i havent touched yet.
In the recent days i implemented the audio device selection for ALSA and added Semaphores. Also there are still a few functions left ...
Read More →


Release v0.8.0.0

 — 7 months, 1 week ago
Hi everyone,

i have another release for you all!

This time i finally implemented the software output driver for X11, as well reading out OS/System infos from Linux. Also i fixed some bugs and introduced fplThreadYield(). Oh and i removed the need of including glx.h from FPL - so you can finally use any opengl loader library you want properly ;-)

In addition i added a ton to the FPL_Audio demo, so i can load/convert wave files now - to test out the audio playback properly.

And finally i upgraded my ubuntu 17.10 to 18.04 LTS - seems to ...
Read More →


Crtical Release v0.7.8.0

 — 7 months, 2 weeks ago
Hi everyone,

i have another release for you all!

This release contains a ton of bugfixes and improvements. Also i collapsed down all argument and platform initialization checking to macros. In addition i implemented a few missing features for the POSIX subplatform and added a few new functions.

It would be great if you can upgrade to it as soon as possible and report back any issues you might have. Thanks!

As usual docs are updated and release is tagged.

Here is the full changelog:

## v0.7.8.0 beta:
- Changed: Collapsed down all argument checking using macros
- Changed: Use ...
Read More →


Critical release v0.7.7.0

 — 7 months, 2 weeks ago
Hi everyone,

i have a important release for you all!

In the last couple of days i was working a bit on FPL, getting it more into a stable stage and fixed some important bugs. There was a critical bug that any allocated memory on win32 got never freed, which fortunatly was easiely be fixed by changing the flags from MEM_FREE to MEM_RELEASE (There is no MEM_FREE for VirtualFree!).

Also i added a few new functions and macros and moved the entrypoint definition into its own block, so you can now use FPL in /or as a static library. Oh ...
Read More →


Beta 0.7.6.0

 — 8 months ago
Hi everyone,

i have another release for you all!

All the Threading stuff is cleaned up and we use the identical mechanism from the OS.
Also i added Condition-Variables as well - the only thing which is still missing are Semaphores, which will come later.

In addition the documentation has basic threading tutorials now -> But i really need somehow to look over it and correct typos.

As always the documentations is updated and the release is tagged.

You can found the documentation here: https://libfpl.org/docs/

Here is the full changelog:

## v0.7.6.0 beta:
- Changed: Renamed fplGetRunningArchitectureType ...
Read More →


Beta 0.7.5.0

 — 8 months ago
Hi everyone,

i have a major release for you all!

ALSA playback is finally implemented and i fixed the thread signals for linux to match windows SetEvent() and WaitFor*Object().
Thanks Mārtiņš Možeiko for helping me out on this one!
Also i added a fallback in the GLX context creation to use glXCreateContext when GLX < 1.3 (Untested).

Documentations are updated and release is tagged.

Here is the full changelog:

## v0.7.5.0 beta:
- Changed: Updated documentations
- Changed: Small refactoring of the internal audio system
- Changed: Renamed fplMutexCreate to fplMutexInit + signature change (Returns bool, Mutex pointer argument)
- Changed ...
Read More →


Trouble with Multithreading

 — 8 months ago
I never thought pthread would be so different from win32, but something is wrong with my pthread implementation.

My simple testbed which creates 3 threads - one master thread, two slave threads does not work at all. Both slave threads waits to get a signal each, the master thread sets both signals - but only one thread gets signaled properly, the other threads waits forever.

So i need some clarifications if my assumptions are correct

1.) Locking a mutex

1
2
3
4
int lockRes;
do {
  lockRes = pthreadApi->pthread_mutex_lock(handle);
} while(lockRes == EAGAIN);


It cannot be used on multiple threads, only one thread ...
Read More →


Beta 0.7.4.0

 — 8 months, 1 week ago
Hi everyone,

i have a small release for you all!

This time i implemented the modern context creation for GLX and fixed the win32 wrong usage of _InterlockedExchange*64 for x86.

Also there are some news for you:

I recencly launched the website https://libfpl.org so i have something to host my documentations/tutorials/demos and provide mirrors for releases.

In addition i got myself a license for CLion, so i can fully work on other platforms properly. Unfortunatly i had to create a CMakeLists file for every demo project, otherwise CLion wont compile :-(

Also it seems that my ...
Read More →


Beta 0.7.3.0

 — 8 months, 1 week ago
Beta v0.7.3.0

Here is another release for you all. This release contains mostly minor and major bugfixes, but a couple of functions as well.
Also i added LP (Low Precision) and HP (High precision) for fplGetTimeAs*
One of the major issue i finally solved is the hiding/showing of the cursor in win32 ;)

I highly recommend to update to this release as soon as possible. The release is tagged and documentation is updated as well.

One Last thing: I added a develop branch, so the master branch contains the current release only. That way i can work ...
Read More →


Beta 0.7.2.0

 — 8 months, 2 weeks ago
Short update:

All the documentations are updated to match the current implementation state.
In addition i added a few new functions to read out os and platform infos.

Lastly i removed the no-CRT codes to make MSVC happy (_fltused, intrinsics, etc.) -> The user is now responsible for providing such functionality itself.

Here is the full changelog:

## v0.7.2.0 beta:
- Changed: Signature of fplGetRunningMemoryInfos() changed
- Changed: Renamed fplGetSystemMemoryInfos to fplGetRunningMemoryInfos
- Changed: Added "p" prefix to linux and unix app state
- New: Added enum fplArchType
- New: Added fplGetRunningArchitectureType()
- New: Added fplGetArchTypeString()
- New: Added enum fplPlatformType
- New: Added fplGetPlatformType()
- New ...
Read More →


FPL joins the handmade.network

 — 8 months, 2 weeks ago
Hi everyone,

as of today, my little/big project called "FPL" - Final Platform Layer joins the handmade.network community officially! Banzai!!
For that i want to say thanks to the entire handmade.network team for giving me this opportunity. Thanks!

I want to start off the initial blog entry by introducing the project to new people - but keeping it very short.

So what is this project all about?

FPL is a single-header-file platform abstraction library written in C99 - targeting game/simulation/media development with the main goal of simplicity and handmade-ness. It is similar to SDL but differs in a ...
Read More →