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 all the time. It may be that VS cannot handle the FPL source anymore, which is now > 600 KB and 16k of lines.
I really need to try 4coder and just use VS as the compiler/debugger only - like casey does. But 4coder is still missing some important features for me: Auto-Formatting code, Auto-Completion field list, a G-Experts like extreme fast function/type filter.

Changes/Additions:

I changed the keyboard event handling a bit, so that you can finally detect key repeats. There are no longer events for KeyDown or KeyUp, its just a Button event and there is a separated state now (Release, Pressed, Repeat). The mouse event handling is changed in the same way as well.

I added size_t for all atomic operations and added increment functions for all types as well.
Oh and i added two handy functions for converting S32 to a String and vice versa.

In addition i added multisamping anti-aliasing (MSAA) support for modern OpenGL context creation ;-)

Lastly i updated all demo projects and added a new one: FPL_ImageViewer -> A multithreaded hoping to be fast image viewer.

As usual the release is tagged and documentations are updated.

Here is the full changelog:

## v0.8.3.0 beta:
- Changed: fplVersionInfo is now parsed as char[4] instead of uint32_t
- Changed: fplMouseEvent / fplKeyboardEvent uses fplButtonState instead of a bool for the state
- Changed: Replaced fplMouseEventType_ButtonDown / fplMouseEventType_ButtonUp with fplMouseEventType_Button
- Changed: Replaced fplKeyboardEventType_KeyDown / fplKeyboardEventType_KeyUp with fplKeyboardEventType_Button
- Fixed: Fixed incompabilties with MingW compiler
- New: Added function fplStringToS32
- New: Added function fplStringToS32Len
- New: Added function fplS32ToString
- New: Added function fplAtomicLoadSize
- New: Added function fplAtomicStoreSize
- New: Added function fplAtomicExchangeSize
- New: Added function fplAtomicCompareAndExchangeSize
- New: Added function fplIsAtomicCompareAndExchangeSize
- New: Added function fplAtomicAddSize
- New: Added function fplAtomicIncU32
- New: Added function fplAtomicIncU64
- New: Added function fplAtomicIncS32
- New: Added function fplAtomicIncS64
- New: Added function fplAtomicIncSize
- New: Added macro FPL_IS_POWEROFTWO
- New: Introduced FPL_CPU_32BIT and FPL_CPU_64BIT
- New: fplAtomic*Ptr uses FPL_CPU_ instead of FPL_ARCH_ now
- New: Added enumeration fplButtonState
- New: Added field multiSamplingCount to fplOpenGLVideoSettings

- Changed: [Win32] Changed keyboard and mouse handling to use fplButtonState now
- Changed: [Win32] Changed fplListDirBegin/fplListDirNext to ignore . and ..
- Changed: [Win32] Console activation is done when _CONSOLE is set as well
- Changed: [X11] Changed keyboard and mouse handling to use fplButtonState now
- Fixed: [Win32] fplGetTimeInMillisecondsHP was not returning a proper double value
- Fixed: [Win32] Fixed crash when using fplThreadTerminate while threads are already exiting
- Fixed: [Win32] fplThreadWaitForAll/fplThreadWaitForAny was not working properly when threads was already in the process of exiting naturally
- Fixed: [Win32] Fixed incompabilties with MingW compiler
- Fixed: [POSIX] Fixed crash when using fplThreadTerminate while threads are already exiting
- New: [Win32] Support for OpenGL multi sampling context creation
- New: [GLX] Support for OpenGL multi sampling context creation