# FPL 0.9.3.0 beta

Hi everyone,

finally its here -> The new release of FPL!

So what has changed since the last release? Not that much, i just added a multi-monitor api, added support for using FPL as a dynamic link library, fixed some bugs and updated the documentations a lot.

Delay

I know its not that much, so why took it so long?

There was several reasons for that:
- Changes in real life, resulting in less time to do any private coding
- I am still working on a tool for helping me writing documentations, faster and more reliably

There are a lot of @IMPLEMENT tasks left, which needs to be completed. So my plan for next version is simple:
- Finish up all the @IMPLEMENT tasks
- Finish up the doxygen-editor
- Finish up the documentations

After that, i will add vulkan support and starting the network api.

-------------------------------------------------------------------------------------------

As usual the release is tagged, but documentations will be updated later (due to server issues).

Here is the full changelog:

## v0.9.3.0 beta
- Changed: Renamed fplSetWindowFullscreen to fplSetWindowFullscreenSize
- Changed: Replaced windowWidth and windowHeight from fplWindowSettings with windowSize structure
- Changed: Replaced fullscreenWidth and fullscreenHeight from fplWindowSettings with fullscreenSize structure
- Changed: Renamed macro FPL_PLATFORM_WIN32 to FPL_PLATFORM_WINDOWS
- Changed: Renamed fplGetWindowArea() to fplGetWindowSize()
- Changed: Renamed fplSetWindowArea() to fplSetWindowSize()
- Changed: Renamed fplWindowSettings.windowTitle to fplWindowSettings.title
- Changed: Reversed buffer/max-size argument of fplS32ToString()
- Changed: Renamed fullPath into name in the fplFileEntry structure and limit its size to FPL_MAX_FILENAME_LENGTH
- Changed: Introduced fpl__m_ for internal defines mapped to the public define
- Changed: FPL_ENABLE renamed to FPL__ENABLE
- Changed: FPL_SUPPORT renamed to FPL__SUPPORT
- Changed: [CPP] Export every function without name mangling -> extern "C"
- Changed: [Win32] Moved a bit of entry point code around, so that every linking configuration works
- Fixed: fplPlatformInit() was using the width for the height for the default window size
- Fixed: fplExtractFileExtension() was not favour the last path part
- Fixed [Win32/MSVC]: Workaround for "combaseapi.h(229): error C2187: syntax error: 'identifier' was unexpected here"
- Fixed: [X11] Added missing fpl*Display* stubs
- New: Added docs back-references from atomic functions
- New: Added support for compiling FPL as a dynamic library

- Changed: [Win32] fplSetWindowFullscreenSize does not use virtual screen coordinates anymore
- Changed: [Win32/POSIX] Store filename in fplFileEntry instead of the full path
- Fixed: [Win32] fplGetExecutableFilePath was not returning the last written character
- Fixed: [Win32] fplGetHomePath was not returning the last written character
- New: [Win32/X11] Use fplWindowSettings.fullscreenRefreshRate for startup when needed
- New: [Win32] Implemented fplSetWindowFullscreenRect()
- New: [Win32] Implemented fplGetDisplayCount()
- New: [Win32] Implemented fplGetDisplays()
- New: [Win32] Implemented fplGetWindowDisplay()
- New: [Win32] Implemented fplGetPrimaryDisplay()
- New: [Win32] Implemented fplGetDisplayFromPosition()
- New: [Win32] Implemented fplGetDisplayModeCount()
- New: [Win32] Implemented fplGetDisplayModes()
Simon Anciaux,
A month ago I tried to use fpl and the simple opengl example in the header file contains errors. I forgot to report them at the time, so here they are:

  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 #define FPL_IMPLEMENTATION #include int main(int argc, char **args){ fplSettings settings; fplSetDefaultSettings(&settings); /* We are getting a copy of settings.video here, so modification wont be taken into account. */ fplVideoSettings videoSettings = settings.video; videoSettings.driver = fplVideoDriverType_OpenGL; /* In the lines below it should be videoSettings.graphics.opengl. ... Having a struct name fplVideoSettings with a fied name graphics seems a bit redundant. */ /* "compatibility" is misspelled "compability" in the field name and flags. */ // Legacy OpenGL // videoSettings.opengl.compabilityFlags = fplOpenGLCompabilityFlags_Legacy; // or // Modern OpenGL videoSettings.opengl.compabilityFlags = fplOpenGLCompabilityFlags_Core; videoSettings.opengl.majorVersion = 3; videoSettings.opengl.minorVersion = 3; if (fplPlatformInit(fplInitFlags_Video, &settings)) { // Event/Main loop while (fplWindowUpdate()) { // Poll events fplEvent ev; /* We need to take the address of ev here. */ while (fplPollEvent(ev)) { /// ... } // your code goes here fplVideoFlip(); } fplPlatformRelease(); return 0; } else { return -1; } } 

Edited by Finalspace on
mrmixer
A month ago I tried to use fpl and the simple opengl example in the header file contains errors. I forgot to report them at the time, so here they are:

Thanks for pointing that out, it seems that this example i never touched since a very long time.
I fixed it in the develop branch ;)

About the graphics structure inside the video settings:

The only reason why there is a graphics structure inside the video settings, is simply to have a union which just corresponce to the specific api (opengl, software, vulkan, etc.). So "graphics" means more like "apisettings" or something. I am open to better terms :)