Final Platform Layer
0.9.8-beta
Loading...
Searching...
No Matches
Final Platform Layer
Changelog
v0.9.8-beta
Overview
Added useful functions for multithreading
Added support for changing the default window background color
Added support for preventing the screensaver for kicking-in
Several Bugfixes for several platforms
Several Bugfixes for several audio backends
Several Improvements for platforms
Renamed tons of functions to match naming scheme
Details
Core
New: Added function
GetAvailableThreadCount()
that returns the number of available threads
New: Added function
GetUsedThreadCount()
that returns the number of used/active threads
New: Added union
fplColor32
for representing a 32-bit color value
New: Added typedef fplMilliseconds that specifies milliseconds as 64-bit integer
New: Added typedef fplSeconds that specifies seconds as 64-bit floating point
New: Added field background as
fplColor32
to
fplWindowSettings
New: Added fields isScreenSaverPrevented/isMonitorPowerPrevented to configure, if monitor-off or screensaver is prevented
Fixed[#135]: Stackoverflow in fpl__PushError_Formatted() when FPL_USERFUNC_vsnprintf is overloaded
Fixed[#139]: Assertion on machine with 32 logical cores ->
fplThreadHandle
array capacity too small
Fixed[#141]:
fplMemoryCopy()
was wrong for 16-bit optimized operations
Changed[#95]: Platform support for fplMemorySet, fplMemoryClear, fplMemoryCopy (See FPL_NO_MEMORY_MACROS / FPL_USE_MEMORY_MACROS for more details)
Platform
New[#150]: [Win32] Prevent screensaver for kicking-in
Fixed[#127]: [Win32/Window] Incorrect initial window background color
Fixed[#130]: [Win32/Window] Main fiber was never properly released
Fixed[#131]: [Win32/Console] Console window was not shown the second time
fplPlatformInit()
was called
Fixed[#134]: [Win32] Duplicate executable arguments in main() passed when CRT is disabled
Fixed[#137]: [POSIX] pthread_yield is not always present, so it may fail the FPL startup
Fixed[#138]: [X11] Compile error in function fpl__X11InitWindow, initSettings was not found
Audio
Changed: [Audio/ALSA] Use
bcm2835
device pattern for buffer scale instead of individual ones
Video
New: Added field libraryFile to
fplOpenGLSettings
, for passing in a custom driver library file for OpenGL
New: Added field libraryFile to
fplVulkanSettings
, for passing in a custom driver library file for Vulkan
New[#117]: Support for passing in a driver dll for OpenGL/Vulkan
Fixed[#136]: Video initialization failed due to wrong
fplGraphicsApiSettings
union
Fixed[#124]: [Video/Vulkan] Fallback when creation with validation failed
Improvement[#148]: Refactoring of video backends
Breaking Changes
Changed: Renamed function fplOpenBinaryFile() to
fplFileOpenBinary()
Changed: Renamed function fplCreateBinaryFile() to
fplFileCreateBinary()
Changed: Renamed functions fplReadFileBlock*() to fplFileReadBlock*()
Changed: Renamed functions fplWriteFileBlock*() to fplFileWriteBlock*()
Changed: Renamed functions fplSetFilePosition*() to fplFileSetPosition*()
Changed: Renamed functions fplGetFilePosition*() to fplFileGetPosition*()
Changed: Renamed function fplFlushFile() to
fplFileFlush()
Changed: Renamed function fplCloseFile() to
fplFileClose()
Changed: Renamed functions fplGetFileSizeFromPath*() to fplFileGetSizeFromPath*()
Changed: Renamed functions fplGetFileSizeFromHandle*() to fplFileGetSizeFromHandle*()
Changed: Renamed function fplGetFileTimestampsFromPath() to
fplFileGetTimestampsFromPath()
Changed: Renamed function fplGetFileTimestampsFromHandle() to
fplFileGetTimestampsFromHandle()
Changed: Renamed function fplSetFileTimestamps() to
fplFileSetTimestamps()
Changed: Renamed function fplListDirBegin() to
fplDirectoryListBegin()
Changed: Renamed function fplListDirNext() to
fplDirectoryListNext()
Changed: Renamed function fplListDirEnd() to
fplDirectoryListEnd()
Changed: Renamed function fplGetPlatformResultName() to
fplPlatformGetResultName()
Changed: Renamed function fplFormatString() to fplStrngFormat()
Changed: Renamed function fplFormatStringArgs() to fplStrngFormatArgs()
Changed: Renamed function fplGetWallClock() to
fplTimestampQuery()
Changed: Renamed function fplGetTimeInMilliseconds() to
fplMillisecondsQuery()
Changed: Renamed function fplGetWallDelta() to
fplTimestampElapsed()
Changed: Renamed struct fplWallClock to
fplTimestamp
Changed: Removed obsolete functions fplGetTimeInSeconds*()
Changed: Removed obsolete functions fplGetTimeInMillisecondsHP()
Changed: Removed obsolete functions fplGetTimeInMillisecondsLP()
Changed: Replaced enum flag fplVulkanValidationLayerMode_User with fplVulkanValidationLayerMode_Optional
Changed: Replaced enum flag fplVulkanValidationLayerMode_Callback with fplVulkanValidationLayerMode_Required
Changed: Moved fplTimeoutValue and FPL_TIMEOUT_INFINITE to time sections
v0.9.7-beta
Short
Added Vulkan support
Added seamless window resizing support for Win32
Added query functions for accessing video backend handles
Improved video system stability
Improved console window handling for Win32
Fixed some major & minor bugs
Detail
New: Added structs
fplVideoRequirements
,
fplVideoRequirementsVulkan
New: Added function
fplGetVideoRequirements()
to query any requirements for a particular video backend
New: Added macro
fplAssertPtr()
for simply (exp != fpl_null) assertions
New: Added typedef fplVulkanValidationLayerCallback
New: Added enums fplVulkanValidationLayerMode, fplVulkanValidationSeverity
New: Added struct
fplVulkanSettings
New: Added structs
fplVideoWindow
, fplVideoWindowWin32, fplVideoWindowX11
New: Added structs
fplVideoSurface
,
fplVideoSurfaceOpenGL
,
fplVideoSurfaceVulkan
New: Added function
fplGetVideoSurface()
for query the current
fplVideoSurface
New[#48]: Added function
fplGetVideoProcedure()
for query functions from the active video backend
New[#18]: [Win32] Support for message proc fibers to support seamless window resize -> works only with
fplPollEvents()
New[#105]: [Win32] Added support for creating and using a console in addition to a window
New[#31]: [Win32] Added support for Vulkan
New[#32]: [X11] Added support for Vulkan
Changed: Changed video system to use jump tables instead, to support more backends in the future
Changed: Added field
fplVulkanSettings
to
fplGraphicsApiSettings
Changed[#116]: AudioDriver/VideoDriver renamed to AudioBackend/VideoBackend
Changed[#98]: [Win32] Use YieldProcessor instead of SwitchToThread for
fplThreadYield()
Changed[#111]: [Win32] Use SetConsoleTitle with
fplConsoleSettings::title
Changed[#113]: [Win32] Properly show window on initialize (Foreground, Focus)
Fixed[#109]: fplS32ToString is not working anymore
Fixed[#121]:
fplMutexHandle
isValid flag was never working properly
Fixed[#122]: Compile errors on Arm32/C99 for "asm volatile"
Fixed[#123]: Compile error for wrong usage of fplStructInit in
fplCPUID()
for non-x86 architectures
Fixed[#110]: [Win32] Erasing of background when no video driver hides window always
Fixed[#114]: [Win32] Console window does not appear at the very first
v0.9.6-beta
Features
New[#73]: Added fplAsm macro to handle different inline assembler keywords (Clang, GCC, MSVC)
New[#75]: Added fplAlignAs macro for aligning structures to N-bytes (Clang, GCC, MSVC, C++/11)
New[#79]: Added function fplGetAudioDriver()
New[#81]: Added function
fplGetAudioBufferSizeInMilliseconds()
to compute milliseconds from frame-count + sample-rate
New[#85]: Added fpl*_First and fpl*_Last to every enum
New[#84]: Added support for controlling the inclusion of platform includes with define FPL_NO_PLATFORM_INCLUDES
New[#84]: Added support for use opaque handles instead of OS handles with define FPL_OPAQUE_HANDLES
New[#75]: Added fplMinAlignment macro to get the minimum required alignment
New[#90]: Added struct
fplThreadParameters
New[#90]: Added function
fplThreadCreateWithParameters()
which allows to set the stack size and the priority in the creation directly
New[#51]: [POSIX] Implemented
fplGetThreadPriority()
and
fplSetThreadPriority()
New[#60]: [POSIX] Implemented
fplGetCurrentThreadId()
New[#90]: [POSIX] Implemented
fplThreadCreateWithParameters()
New[#90]: [Win32] Implemented
fplThreadCreateWithParameters()
New[#86]: [X11] Implemented
fplEnableWindowFullscreen()
and
fplDisableWindowFullscreen()
Improvements
Changed: New Changelog format with categories (Features, bugfixes, improvements, breaking changes, internal changes)
Changed[#74]:
fplGetAudioDevices()
allows to pass null-pointer as devices argument to return the number of audio devices only
Changed[#74]:
fplWideStringToUTF8String()
allows to pass null-pointer as output argument to return the number of characters only
Changed[#74]:
fplUTF8StringToWideString()
allows to pass null-pointer as output argument to return the number of characters only
Changed[#74]:
fplGetExecutableFilePath()
allows to pass null-pointer as output argument to return the number of characters only
Changed[#74]:
fplGetHomePath()
allows to pass null-pointer as output argument to return the number of characters only
Changed[#74]:
fplExtractFilePath()
allows to pass null-pointer as output argument to return the number of characters only
Changed[#74]:
fplChangeFileExtension()
allows to pass null-pointer as output argument to return the number of characters only
Changed[#74]:
fplPathCombine()
allows to pass null-pointer as output argument to return the number of characters only
Changed[#74]: fplFormatStringArgs() allows to pass null-pointer as output argument to return the number of characters only
Changed[#74]: fplFormatString() allows to pass null-pointer as output argument to return the number of characters only
Changed[#74]: fplGetCurrentUsername() allows to pass null-pointer as output argument to return the number of characters only
Changed[#74]:
fplGetDisplayModes()
allows to pass null-pointer as output argument to return the number of modes only
Changed[#74]:
fplGetInputLocale()
allows to pass null-pointer as output argument to return the number of characters only
Changed[#74]:
fplGetUserLocale()
allows to pass null-pointer as output argument to return the number of characters only
Changed[#74]:
fplGetSystemLocale()
allows to pass null-pointer as output argument to return the number of characters only
Changed[#74]: fplGetProcessorName() allows to pass null-pointer as output argument to return the number of characters only
Changed[#63]: Replaced usage of
fplStackAllocate()
with fpl__AllocateTemporaryMemory()
Changed[#92]: Use _offsetof() and ARRAY_SIZE() for
fplArrayCount()
instead
Updated: Better documentation for fplAssert*
Changed[#72]: [Win32] Query QueryPerformanceFrequency for every High-Precision timer calls instead of once per app start
Changed[#84]: [Win32] Moved windows.h include to the implementation and entry point block (all handles are void* or have correct size)
Bugfixes
Fixed[#76]: FPL__ERROR, FPL__WARNING, FPL__INFO was not passing the correct function name and line number in some cases
Fixed[#83]:
fplGetAudioBufferSizeInFrames()
does not return correct values always
Fixed[#83]:
fplGetAudioBufferSizeInMilliseconds()
does not return correct values always
Fixed[#94]: Fixed MINGW compile error for typo FPL_SUBPLATFORM_WINDOWS vs FPL_PLATFORM_WINDOWS (_WIN32_WINNT 0x0600)
Fixed: Corrected a few code documentation translation bugs
Fixed[#69]: [Win32] Removed the manual handling of ALT + F4 shut down of event handling
Fixed[#87]: [POSIX] fplGetWallDelta() was returning incorrect values
Internal changes
Renamed a lot of internal FPL_ defines to FPL__
Breaking changes
Removed[#85]: Removed obsolete FPL_FIRST_* and FPL_LAST_* defines
Renamed[#78]: fplGetAudioResultTypeString to fplGetAudioResultName
Renamed[#78]: fplGetArchTypeString to fplCPUGetArchName
Renamed[#78]: fplGetVideoDriverString to fplGetVideoDriverName
Renamed[#78]: fplGetAudioDriverString to fplGetAudioDriverName
Renamed[#78]: fplGetAudioFormatTypeString to fplGetAudioFormatName
Renamed[#78]: fplGetPlatformResultTypeString to fplGetPlatformResultName
Renamed[#50]: struct fplOSInfos to
fplOSVersionInfos
Renamed[#50]: fplGetCurrentUsername() to
fplSessionGetUsername()
Renamed[#50]: fplGetOperatingSystemInfos() to
fplOSGetVersionInfos()
Renamed[#50]: fplIsAtomicCompareAndSwapPtr() to
fplAtomicIsCompareAndSwapPtr()
Renamed[#50]: fplIsAtomicCompareAndSwapSize() to
fplAtomicIsCompareAndSwapSize()
Renamed[#50]: fplIsAtomicCompareAndSwapS64() to
fplAtomicIsCompareAndSwapS64()
Renamed[#50]: fplIsAtomicCompareAndSwapS32() to
fplAtomicIsCompareAndSwapS32()
Renamed[#50]: fplIsAtomicCompareAndSwapU64() to
fplAtomicIsCompareAndSwapU64()
Renamed[#50]: fplIsAtomicCompareAndSwapU32() to
fplAtomicIsCompareAndSwapU32()
Renamed[#50]: fplXCR0() to
fplCPUXCR0()
Renamed[#50]: fplRDTSC() to
fplCPURDTSC()
Renamed[#50]: fplGetArchName() to
fplCPUGetArchName()
Renamed[#50]: fplGetProcessorCoreCount() to
fplCPUGetCoreCount()
Renamed[#50]: fplGetProcessorName() to
fplCPUGetName()
Renamed[#50]: fplGetProcessorCapabilities() to
fplCPUGetCapabilities()
Renamed[#50]: fplGetProcessorArchitecture() to
fplCPUGetArchitecture()
Renamed[#50]: fplGetRunningMemoryInfos() to
fplMemoryGetInfos()
Renamed[#50]: struct fplProcessorCapabilities to
fplCPUCapabilities
Renamed[#50]: enum fplArchType to fplCPUArchType
Renamed[#50]: enum values fplArchType_* to fplCPUArchType_
Changed[#74]:
fplWideStringToUTF8String()
returns the number of characters instead of a char-pointer
Changed[#74]:
fplUTF8StringToWideString()
returns the number of characters instead of a char-pointer
Changed[#74]:
fplGetExecutableFilePath()
returns the number of characters instead of a char-pointer
Changed[#74]:
fplGetHomePath()
returns the number of characters instead of a char-pointer
Changed[#74]:
fplExtractFilePath()
returns the number of characters instead of a char-pointer
Changed[#74]:
fplChangeFileExtension()
returns the number of characters instead of a char-pointer
Changed[#74]:
fplCopyString()
returns the number of characters instead of a char-pointer
Changed[#74]:
fplCopyStringLen()
returns the number of characters instead of a char-pointer
Changed[#74]:
fplPathCombine()
returns the number of characters instead of a char-pointer
Changed[#74]: fplFormatStringArgs() returns the number of characters instead of a char-pointer
Changed[#74]: fplFormatString() returns the number of characters instead of a char-pointer
Changed[#74]: fplGetCurrentUsername() returns the number of characters instead of a char-pointer
Changed[#74]:
fplGetInputLocale()
returns the number of characters instead of a char-pointer
Changed[#74]:
fplGetUserLocale()
returns the number of characters instead of a char-pointer
Changed[#74]:
fplGetSystemLocale()
returns the number of characters instead of a char-pointer
Changed[#74]: fplGetProcessorName() returns the number of characters instead of a char-pointer
Changed[#74]: fplGetDisplayModeCount() -> Use
fplGetDisplayModes()
with null-pointer instead
v0.9.5-beta
New: Added enum fplAudioDefaultFields
New: Added field defaultFields to
fplAudioDeviceFormat
struct
New: Added C++/11 detection (FPL_IS_CPP11)
New: Added enum fplAudioLatencyMode to
fplAudioTargetFormat
New: Added function fplSetFileTimestamps()
New: Added fplAudioDriverType to
fplAudioDeviceFormat
New: Added fplWallClock struct
New: Added function fplGetWallClock()
New: Added function fplGetWallDelta()
New: Support for logging out keyboard button events (FPL_LOG_KEY_EVENTS)
New: Added support for hard crashing on errors or warnings (define FPL_CRASH_ON_ERROR or FPL_CRASH_ON_WARNING) to enable it
New: [Win32] Added implementation for fplSetFileTimestamps()
New: [Win32] Added implementation for fplGetWallClock()
New: [Win32] Added implementation for fplGetWallDelta()
New: [POSIX] Added implementation for fplGetWallClock()
New: [POSIX] Added implementation for fplGetWallDelta()
Fixed:
fplS32ToString()
was not returning the last written character
Fixed:
fplStringAppendLen()
was not returning the last written character
Fixed: Fixed several warnings for doxygen
Fixed: [Core] Added empty functions for
fplCPUID()
, fplGetXCR0() for non-x86 platforms
Fixed: [Core] Implemented fplRDTSC() for non-x86 platforms
Fixed: [POSIX] Fixed several compile errors
Fixed: [Linux] Fixed non-joystick devices as gamepad detected
Fixed: [X11] Fixed keyrepeat issue for text input (finally!)
Fixed: [X11] Fixed duplicated key events in some cases
Changed: FPL_MAX_THREAD_COUNT and FPL_MAX_SIGNAL_COUNT can now be overridden by the user
Changed: Removed redundant field bufferSizeInBytes from
fplAudioDeviceFormat
struct
Changed: Simplified audio system default values initialization
Changed: Use default audio buffer size based on set fplAudioLatencyMode in
fplAudioTargetFormat
Changed: [ALSA] Introduced audio buffer scaling for bad latency devices
v0.9.4 beta
New: Added callbacks fpl_memory_allocate_callback & fpl_memory_release_callback
New: Added enum fplMemoryAllocationMode
New: Added struct
fplMemoryAllocationSettings
New: Added struct
fplMemorySettings
for controlling dynamic and temporary memory allocations
New: Added enum fplThreadPriority
New: Added function fplGetThreadPriority
New: Added function fplSetThreadPriority
New: Added function fplGetCurrentThreadId
New: Introduced dynamic/temporary allocations wrapping
New: Added FPL_WARNING macro for pushing on warnings only
New: Print out function name and line number in all log outputs
New: Added functions fplAtomicIncrement* used for incrementing a value by one atomically
New: Added macro fplRDTSC
New: Added struct fplProcessorCapabilities
New: Added function fplGetProcessorCapabilities
New: Added macro fplIsBitSet
New: Added function fplGetMainThread
New: Added field isActive to struct
fplGamepadState
New: Added field deviceName to struct
fplGamepadState
and
fplGamepadEvent
New: Added function fplSetWindowInputEvents
New: Added struct
fplCPUIDLeaf
New: Added function fplCPUID and implemented it for X86/X64
New: Added function fplGetXCR0 and implemented it for X86/X64
New: Added macro fplHasInclude
New: Added power-pc 32/64 architecture detection
New: Added storage class identifier fpl_no_inline
New: Added macro
fplAlwaysAssert()
New: Added function
fplIsPlatformInitialized()
New: Added FPL_IS_IDE macro for checking if any source editor is active.
New: [MSVC] Always show implementation block when FPL_IS_IDE is set
Fixed: Corrected opengl example code in the header file
Fixed: Tons of documentation improvements
Fixed: fpl__PushError_Formatted was always pushing errors on regardless of the log level
Fixed: Invalid memory clear with zero bytes, when there was no audio samples to clear
Fixed: All non inlineable functions changed from fpl_internal_inline to fpl_internal instead (GCC/Clang compatible)
Fixed: Use actual window size for video initialization always instead of fixed size
Fixed: fplAtomicAddAndFetch* had no addend parameter
Fixed: All non-tab spacings replaced with tab spacings
Fixed: ARM64 was not detected properly
Fixed: Atomics was not detected for ICC (Intel C/C++ Compiler)
Changed: Removed fake thread-safe implementation of the internal event queue
Changed: Changed drop event structure in
fplWindowEvent
to support multiple dropped files
Changed: Renamed fplGetPlatformTypeString() to
fplGetPlatformName()
Changed: Added stride to
fplThreadWaitForAll()
to support custom sized user structs
Changed: Added stride to
fplThreadWaitForAny()
to support custom sized user structs
Changed: Added stride to
fplSignalWaitForAll()
to support custom sized user structs
Changed: Added stride to
fplSignalWaitForAny()
to support custom sized user structs
Changed: Set audio worker thread to realtime priority
Changed: Use name table for fplArchType to string conversion
Changed: Use name table for fplPlatformType to string conversion
Changed: Use name table for fplPlatformResultType to string conversion
Changed: Use name table for fplVideoDriverType to string conversion
Changed: Use name table for fplAudioDriverType to string conversion
Changed: Use name table for fplAudioFormatType to string conversion
Changed: Use name table for fplLogLevel to string conversion
Changed: Values for fplPlatformResultType changed to be ascending
Changed: Moved fplInitFlags_All constant to fplInitFlags enum
Changed: CPU size detection is now independent from CPU architecture detection
Changed: fplGetProcessorName moved to common section with fallback to not supported architectures
Changed: Removed wrong compiler detection for LLVM (Clang is LLVM)
Changed: Removed pre-spaces from all code documentation comments
Changed: Changed from default audio sample rate of 48000 to 44100
Changed: Moved compiler includes into its own section
Changed: Moved rdtsc/cpuid, etc. into the implementation block
Changed: Renamed enum fplAudioResult to fplAudioResultType
Changed: Use fplLogLevel_Warning as max by default for all log functions
Renamed function fplGetAudioFormatString to fplGetAudioFormatTypeString
New: [Win32] Implemented function fplGetCurrentThreadId
New: [Win32] Support for multiple files in WM_DROPFILES
New: [Win32] Implemented fplGetThreadPriority
New: [Win32] Implemented fplSetThreadPriority
New: [Win32/Linux] Implemented isActive field for
fplGamepadState
for state querying, indicating any buttons are pressed or triggers have been moved
New: [Win32/XInput] Fill out the deviceName in
fplGamepadState
and
fplGamepadEvent
-> Generic name for now
New: [POSIX/Win32] Implemented functions fplAtomicIncrement*
New: [Linux/ALSA] Print compiler warning when alsa include was not found
New: [X11] Implemented fplSetWindowDecorated
New: [X11] Implemented fplIsWindowDecorated
Fixed: [Win32] Fixed missing WINAPI keyword for fpl__Win32MonitorCountEnumProc/fpl__Win32MonitorInfoEnumProc/fpl__Win32PrimaryMonitorEnumProc
Fixed: [Win32] Software video output was not outputing the image as top-down
Fixed: [Win32/X11] Mouse wheel delta message is not ignored anymore
Fixed: [X11] Fixed software video output (was broken)
Fixed: [POSIX] Moved __sync_synchronize before __sync_lock_test_and_set in fplAtomicStore*
Fixed: [POSIX/Win32] fplAtomicAddAndFetch* uses now addend parameter
Fixed: [Linux] Previous gamepad state was not cleared before filling in the new state
Fixed: [X11] Gamepad controller handling was broken
Changed: [POSIX] Use __sync_add_and_fetch instead of __sync_fetch_and_or in fplAtomicLoad*
Changed: [POSIX/Win32] When a dynamic library failed to load, it will push on a warning instead of a error
Changed: [POSIX/Win32] When a dynamic library procedure address failed to retrieve, it will push on a warning instead of a error
Changed: [POSIX/Win32] Reflect api changes for
fplThreadWaitForAll()
Changed: [POSIX/Win32] Reflect api changes for
fplThreadWaitForAny()
Changed: [POSIX/Win32] Reflect api changes for
fplSignalWaitForAll()
Changed: [POSIX/Win32] Reflect api changes for
fplSignalWaitForAny()
Changed: [X86/X64] fplGetProcessorName are only enabled on X86 or X64 architecture
Changed: [X86/X64] fplGetProcessorCapabilities are only enabled on X86 or X64 architecture
Changed: [MSVC] Implemented fplCPUID/fplGetXCR0 for MSVC
Changed: [GCC/Clang] Implemented fplCPUID/fplGetXCR0 for GCC/Clang
Changed: [Win32] Input events are not flushed anymore, when disabled
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: [POSIX] Parse version string (isdigit was not found)
Fixed: [X11] Added missing fpl*Display* stubs
New: Added
fplSetWindowFullscreenRect()
New: Added
fplGetDisplayCount()
New: Added
fplGetDisplays()
New: Added
fplGetWindowDisplay()
New: Added
fplGetPrimaryDisplay()
New: Added
fplGetDisplayFromPosition()
New: Added fplGetDisplayModeCount()
New: Added
fplGetDisplayModes()
New: Added
fplGetWindowTitle()
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()
v0.9.2.0 beta
Changed: Removed "Ansi" part from all ansi functions
Changed: Debug/Release user define is always prefered
Changed: Properly define posix defines like _XOPEN_SOURCE
Changed: Renamed FPL_STACKALLOCATE to fplStackAllocate
Changed: Renamed FPL_OFFSETOF to fplOffsetOf
Changed: Renamed FPL_ARRAYCOUNT to fplArrayCount
Changed: Renamed FPL_ASSERT to fplAssert
Changed: Renamed FPL_STATICASSERT to fplStaticAssert
Changed: Renamed FPL_CLEAR_STRUCT to fplClearStruct
Changed: Renamed FPL_MIN to fplMin
Changed: Renamed FPL_MAX to fplMax
Changed: Renamed FPL_ZERO_INIT to fplZeroInit
Changed: Renamed FPL_STRUCT_SET to fplStructSet
Changed: Renamed FPL_STRUCT_INIT to fplStructInit
Changed: Renamed FPL_KILOBYTES to fplKiloBytes
Changed: Renamed FPL_MEGABYTES to fplMegaBytes
Changed: Renamed FPL_GIGABYTES to fplGigaBytes
Changed: Renamed FPL_TERABYTES to fplTeraBytes
Changed: Renamed FPL_ALIGNMENT_OFFSET to fplGetAlignmentOffset
Changed: Renamed FPL_ALIGNED_SIZE to fplGetAlignedSize
Changed: Renamed FPL_IS_ALIGNED to fplIsAligned
Changed: Renamed FPL_IS_POWEROFTWO to fplIsPowerOfTwo
Changed: Renamed fplFormatAnsiStringArgs() to fplFormatStringArgs()
Changed: Renamed fplFormatAnsiString() to fplFormatString()
Changed: Renamed fplCopyAnsiString() to
fplCopyString()
Changed: Renamed fplCopyAnsiStringLen() to
fplCopyStringLen()
Changed: Renamed fplGetAnsiStringLength() to
fplGetStringLength()
Changed: Renamed fplOpenAnsiBinaryFile() to fplOpenBinaryFile()
Changed: Renamed fplCreateAnsiBinaryFile() to fplCreateBinaryFile()
Changed: Renamed fplSetWindowAnsiTitle() to
fplSetWindowTitle()
Changed: Renamed fplGetClipboardAnsiText() to
fplGetClipboardText()
Changed: Renamed fplSetClipboardAnsiText() to
fplSetClipboardText()
Changed: Renamed all fplAtomicCompareAndExchange*() to fplAtomicCompareAndSwap*()
Changed: Renamed all fplAtomicAdd*() to fplAtomicFetchAndAdd*()
Changed: Renamed all fplAtomicInc*() to fplAtomicAddAndFetch*()
Changed: Renamed fplGetRunningArchitecture() to fplGetProcessorArchitecture()
Changed: Renamed fplAudioSettings.deviceFormat to
fplAudioSettings.targetFormat
Changed: Renamed fplAudioSettings.deviceInfo to
fplAudioSettings.targetDevice
Changed: All buffers or fixed char/byte arrays uses now either FPL_MAX_BUFFER_LENGTH or FPL_MAX_NAME_LENGTH except for device-id
Changed: All callback typedefs are now properly named as such
Changed: Auto-play/stop of audio samples when enabled in configuration
Changed:
fplPlayAudio()
will return fplAudioResult_Success when playback is already started
Changed:
fplStopAudio()
will return fplAudioResult_Success when playback is already stopped
Changed: Use nullptr for fpl_null when C++/11 is detected
Changed: Separated audio target format and device format
Removed: Removed obsolete to fplGetWideStringLength()
Removed: Removed obsolete to fplCopyWideString()
Removed: Removed obsolete to fplCopyWideStringLen()
Removed: Removed obsolete fplOpenWideBinaryFile()
Removed: Removed obsolete fplCreateWideBinaryFile()
Removed: Removed obsolete fplSetWindowWideTitle()
Removed: Removed obsolete fplGetClipboardWideText()
Removed: Removed obsolete fplSetClipboardWideText()
Removed: Removed obsolete fplWideStringToAnsiString()
Removed: Removed obsolete fplAnsiStringToWideString()
Removed: fplUpdateGameControllers()
Removed: fplPushEvent()
Removed: fplClearEvents()
Fixed: fplStaticAssert was not compiling on gcc/clang C99 mode
Fixed: Corrected a ton of misspellings in the documentation
Fixed: Define for FPL_DEBUG was missing a raute symbol
Fixed: Use va_copy for all va_list function arguments
New: Added fplFlushFile()
New: Added
fplAtomicAddAndFetchPtr()
New: Added
fplAtomicFetchAndAddPtr()
New: Added startAuto field to
fplAudioSettings
structure
New: Added stopAuto field to
fplAudioSettings
structure
New: Added fplInitFlags_GameController to fplInitFlags enumeration
New: Added
fplPollEvents()
New: Added typedef fpl_window_event_callback
New: Added typedef fpl_window_exposed_callback
New: Added structure
fplWindowCallbacks
as a field in
fplWindowSettings
New: Added support for disabling runtime linking -> FPL_NO_RUNTIME_LINKING
New: Added structure
fplAudioTargetFormat
New: Added macro
fplCopyStruct()
New: Added macro
fplIsBigEndian()
New: Added macro
fplIsLittleEndian()
New: Added
fplGetWindowState()
New: Added
fplSetWindowState()
Changed: [Win32] GetTickCount() replaced with GetTickCount64()
Changed: [Win32] Use unicode (*W) win32 api functions for everything now
Changed: [Win32] fplGetOperatingSystemInfos uses additional RtlGetVersion
Changed: [DirectSound]
fplGetAudioDevices()
uses DirectSoundEnumerateW instead of DirectSoundEnumerateA
Changed: [Win32/X11] Changed event handling from indirect to direct
Changed[*]: Optional runtime linking for OS library calls
Fixed: [Win32] fplGetProcessorArchitecture was not handling the WOW64-case
Fixed: [Win32] fplGetClipboardAnsiText() was broken
Fixed: [Win32] Forced compile error when compiling on < vista (FPL uses several features which requires vista or higher)
Fixed: [Win32] fplGetOperatingSystemInfos had no WINAPI call defined for GetVersion prototype
Fixed: [Win32] fplSetWindowFloating was not working
Fixed: [Win32] fplSetWindowDecorated was not working
Fixed: [Win32] fplSetWindowResizeable was not working
Fixed: [Alsa] fpl__AudioWaitForFramesAlsa was not compiling (commonAudio missing)
Fixed: [Alsa] Alsa output was not working anymore for certain playback devices
Fixed: [X11] fplButtonState_Repeat was not handled in keyboard events
New: [Win32/POSIX] Implemented fplFlushFile()
New: [Win32/X11] Handle fplInitFlags_GameController to enable/disable game controllers
New: [Win32/X11] Support for handling the OS event directly -> fpl_window_event_callback
New: [Win32/X11] Support for handling the exposed (Repaint) event directly -> fpl_window_exposed_callback
New: [Win32] Implemented fplSetWindowState / fplGetWindowState
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
v0.9.0.1 beta
Changed: Renamed fields "kernel*" to "os*" in fplOSInfos
Changed: Renamed fields "system*" to "distribution*" in fplOSInfos
Fixed: [X11] Fixed icon loading was not working at all
Fixed: [POSIX] fplWriteFileBlock64 was not properly implemented
Fixed: [POSIX] fplReadFileBlock64 was not properly implemented
v0.9.0.0 beta:
Changed: fplKey_Enter renamed to fplKey_Return
Changed: fplKey_LeftWin renamed to fplKey_LeftSuper
Changed: fplKey_RightWin renamed to fplKey_RightSuper
Changed: fplKey_Plus renamed to fplKey_OemPlus
Changed: fplKey_Minus renamed to fplKey_OemMinus
Changed: fplKey_Comma renamed to fplKey_OemComma
Changed: fplKey_Period renamed to fplKey_OemPeriod
Changed: fplKeyboardModifierFlags_Alt are split into left/right part respectively
Changed: fplKeyboardModifierFlags_Shift are split into left/right part respectively
Changed: fplKeyboardModifierFlags_Super are split into left/right part respectively
Changed: fplKeyboardModifierFlags_Ctrl are split into left/right part respectively
Changed: All bool fields in structs are replaced with fpl_b32
Changed: Added COUNTER macro to non-CRT FPL_STATICASSERT
Changed: Renamed fields in
fplMemoryInfos
to match correct meaning
Changed: String copy functions uses fplMemoryCopy instead of iterating and copy each char
Changed: fplSetFilePosition32 returns now uint32_t instead of void
Changed: Added field timeStamps to
fplFileEntry
Changed: [X11] Window title uses XChangeProperty now instead of XStoreName
Changed: [Win32] Detection of left/right keyboard modifier flags
Changed: [Win32] Mapping OEM 1-8 keys
Changed: [Win32] Use MapVirtualKeyA to map key code to virtual key
Fixed: Corrected a ton of comments
Fixed: fpl__HandleKeyboardButtonEvent had incorrect previous state mapping
Fixed: [X11] fplMouseEventType_Move event was never created anymore
New: Added typedef fpl_b32 (32-bit boolean type)
New: Added struct
fplKeyboardState
New: Added struct
fplGamepadStates
New: Added function fplGetKeyboardState()
New: Added function
fplGetSystemLocale()
New: Added function
fplGetUserLocale()
New: Added function
fplGetInputLocale()
New: Added function fplGetGamepadStates()
New: Added function fplKey_Oem1-fplKey_Oem8
New: Added function fplGetFileTimestampsFromPath
New: Added function fplGetFileTimestampsFromHandle
New: Added internal function fpl__ParseTextFile used for parsing /proc/cpuinfo or other device files
New: Added function fplGetFileSizeFromHandle
New: Added function fplGetFileSizeFromHandle64
New: Added function fplGetFileSizeFromPath
New: Added function fplGetFileSizeFromPath64
New: Added function fplGetFilePosition
New: Added function fplGetFilePosition64
New: Added function fplSetFilePosition
New: Added function fplSetFilePosition64
New: Added function fplWriteFileBlock
New: Added function fplWriteFileBlock64
New: Added function fplReadFileBlock
New: Added function fplReadFileBlock64
New: [Win32] Implemented fplGetKeyboardState
New: [Win32] Implemented fplGetGamepadStates
New: [Win32] Implemented fplGetSystemLocale
New: [Win32] Implemented fplGetUserLocale
New: [Win32] Implemented fplGetInputLocale
New: [Win32] Implemented fplGetFileTimestampsFromPath
New: [Win32] Implemented fplGetFileTimestampsFromHandle
New: [Win32] Implemented fplReadFileBlock64
New: [Win32] Implemented fplWriteFileBlock64
New: [Win32] Implemented fplSetFilePosition64
New: [Win32] Implemented fplGetFilePosition64
New: [Win32] Implemented fplGetFileSizeFromPath64
New: [Win32] Implemented fplGetFileSizeFromHandle64
New: [X11] Implemented fplGetKeyboardState
New: [X11] Set window icon title using XChangeProperty
New: [X11] Give window our process id
New: [X11] Load window icons on startup
New: [X11] Added ping support for letting the WM wakeup the window
New: [Linux] Implemented fplGetSystemLocale
New: [Linux] Implemented fplGetUserLocale
New: [Linux] Implemented fplGetInputLocale
New: [Linux] Reading first joystick as game controller in linux
New: [POSIX] Implemented fplGetFileTimestampsFromPath
New: [POSIX] Implemented fplGetFileTimestampsFromHandle
New: [POSIX] Implemented fplReadFileBlock64
New: [POSIX] Implemented fplWriteFileBlock64
New: [POSIX] Implemented fplSetFilePosition64
New: [POSIX] Implemented fplGetFilePosition64
New: [POSIX] Implemented fplGetFileSizeFromPath64
New: [POSIX] Implemented fplGetFileSizeFromHandle64
v0.8.4.0 beta:
New: Added macro function FPL_STRUCT_INIT
New: Added enum value fplWindowEventType_DropSingleFile
New: Added structure
fplWindowDropFiles
New: Added enum value fplInitFlags_Console
New: [Win32] Support for WM_DROPFILES -> fplWindowEventType_DropSingleFile event
Changed: Move fplInitFlags_All out and made it a static constant
Changed: Use fplInitFlags_Console to activate console or not
Fixed: fplExtractFileExtension was returning wrong result for files with multiple separators
Fixed: [Win32] Fullscreen toggling was broken in maximize/minimize mode
Fixed: [Win32] ClientToScreen prototype was missing WINAPI call
Fixed: [POSIX] fplListDirNext() was broken
Fixed: [X11] Key up event was never fired (KeyRelease + KeyPress = Key-Repeat)
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 fplIsAtomicCompareAndSwapSize
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
v0.8.2.0 beta:
Changed: Ensures const correctness on all functions
Changed: Signature of fplDynamicLibraryLoad changed (Returns bool + Target handle parameter)
Fixed: Corrected code documentation for all categories
Fixed: FPL_ENUM_AS_FLAGS_OPERATORS had invalid signature for operator overloadings and missed some operators
Fixed: Fixed fplMemorySet was not working for values > 0
New: Forward declare thread handle for thread callback
New: Added fplKey for OEM keys (Plus, Comma, Minus, Period)
New: Added fplKey for Media & Audio keys
New: Added fplWindowEventType_Maximized / fplWindowEventType_Minimized / fplWindowEventType_Restored
New: Added documentation category: Assertions & Debug
New: Added documentation category: Storage class identifiers
New: Added documentation category: Constants
New: Added documentation category: Function macros
New: Undef annoying defined constants such as None, Success, etc.
New: Added fplImageType enumeration
New: Added
fplImageSource
structure
New: Added icons as
fplImageSource
array to
fplWindowSettings
Changed: [Win32] Correct fplDynamicLibraryLoad to match signature change
Changed: [Win32] Corrected function prototype macro names
Fixed: [Win32] ClientToScreen prototype was defined twice
New: [Win32] OEM keys mapping
New: [Win32] Media & Audio key mapping
New: [Win32] Handle window maximized/minimized and restored events
New: [Win32] Load small/big icon from the
fplWindowSettings
icon imagesources
Changed: [X11] Corrected function prototype macro names
New: [X11] OEM keys mapping
Changed: [X11] Corrected function prototype macro names
Changed: [POSIX] Correct fplDynamicLibraryLoad to match signature change
Changed: [POSIX] Use of pthread_timedjoin_np to support timeout in fplThreadWaitForOne when available (GNU extension)
v0.8.1.0 beta:
Changed: Locked error states to multiple and removed FPL_NO_MULTIPLE_ERRORSTATES
Changed: Renamed fplClearPlatformErrors() to
fplClearErrors()
Changed: Renamed fplGetPlatformErrorCount() to
fplGetErrorCount()
Changed: Renamed fplGetPlatformErrorFromIndex() to
fplGetErrorByIndex()
Changed: Renamed fplGetPlatformError() to
fplGetLastError()
Changed: Refactored logging system
Changed: Updated comments
Fixed: fplAnsiString<->WideString conversion enforces ANSI locale (Non Win32)
New: Added enum fplLogLevel
New: Added enum fplLogWriterFlags
New: Added struct
fplLogWriter
New: Added struct
fplLogSettings
New: Added struct
fplSemaphoreHandle
New: Added
fplSetLogSettings()
New: Added
fplGetLogSettings()
New: Added
fplSetMaxLogLevel()
New: Added
fplGetMaxLogLevel()
New: Added
fplSemaphoreInit()
New: Added
fplSemaphoreDestroy()
New: Added
fplSemaphoreWait()
New: Added
fplSemaphoreTryWait()
New: Added
fplSemaphoreValue()
New: Added
fplSemaphoreRelease()
New: Added
fplIsStringMatchWildcard()
Changed: [ALSA] Allow user selection of audio device id
Fixed: [Win32] WaitForMultipleObjects >= WAIT_OBJECT_0 bugfix
New: [ALSA] Implemented fplGetAudioDevices
New: [Win32] Implemented Semaphores
New: [POSIX] Implemented Semaphores
v0.8.0.0 beta:
Changed: Changed from inline to api call for fplGetAudioBufferSizeInFrames/fplGetAudioFrameSizeInBytes/fplGetAudioBufferSizeInBytes
Changed: Changed from inline to api call for fplGetArchTypeString / fplGetPlatformResultTypeString / fplGetPlatformTypeString
Changed: Moved FPL_CLEAR_STRUCT to public api
New: Added
fplThreadYield()
Changed: [GLX] Added types such as XVisualInfo directly without relying on glx.h
Fixed: [Win32] Console window was not working anymore the second time fplPlatformInit was called
Fixed: [GLX] XVisualInfo was manually defined, now we use Xutil.h
New: [Win32] Implemented
fplThreadYield()
New: [POSIX] Implemented
fplThreadYield()
New: [Linux] Implemented fplGetRunningArchitecture()
New: [Linux] Implemented fplGetOperatingSystemInfos()
New: [X11] Implemented Video Software output for X11
v0.7.8.0 beta:
Changed: Collapsed down all argument checking using macros
Changed: Use FPL_CLEAR_STRUCT only when it is appropriate
Changed: All public checks for fpl__global__AppState returns proper error now
Changed: fplGetAudioHardwareFormat returns bool and requires a outFormat argument now
Changed: fplSetAudioClientReadCallback returns bool now
Changed: fplListFiles* is renamed to fplListDir*
Changed: fplListDir* argument for
fplFileEntry
is renamed to entry for all 3 functions
Changed.
fplFileEntry
stores the fullPath instead of the name + internal root infos - Changed: Introduced
fplFilePermissions
in
fplFileEntry
Changed: Removed flag fplFileAttributeFlags_ReadOnly from fplFileAttributeFlags
Fixed: Fixed a ton of wrong inline definitions
Fixed: Fixed GCC warning -Wwrite-strings
Fixed:
fplDebugBreak()
was missing function braces for __debugbreak
New: Added
fplEnforcePathSeparatorLen()
New: Added
fplEnforcePathSeparator()
New: Added fileSize field to
fplFileEntry
New: Added struct
fplFilePermissions
New: Added enum fplFilePermissionMasks
New: Added
fplDebugOut()
New: Added
fplDebugFormatOut()
New: Added
fplWindowShutdown()
New: Added macro FPL_STRUCT_SET
Changed: [POSIX] Removed all pthread checks, because there is a check for platform initialization now
Changed: [Win32] Changed fplListDir* to support
fplFilePermissions
Changed: [Win32] Showing cursor does not clip cursor anymore
Fixed: [POSIX] Fixed a ton of C99 compile errors
New: [POSIX] Implemented fplListDirBegin
New: [POSIX] Implemented fplListDirNext
New: [POSIX] Implemented fplListDirEnd
New: [X11] Implemented
fplWindowShutdown()
New: [Win32] Fill out fileSize for
fplFileEntry
in fplListDir*
New: [Win32] Implemented
fplWindowShutdown()
v0.7.7.0 beta:
New: Added
fplMutexTryLock()
New: Added
fplMakeDefaultSettings()
New: Added
fplStringAppend()
/
fplStringAppendLen()
New: Added
fplDebugBreak()
Changed: Any string buffer writing functions returns the last written character now
Changed: Changed fplGetClipboardAnsiText() to return bool instead of char *
Changed: Changed fplGetClipboardWideText() to return bool instead of wchar_t *
Changed: Entry point definition implementation is now a separated block and controlled by FPL_ENTRYPOINT
Changed: MSVC compiler warnings are only disabled inside the implementation block
Fixed: Never detected Win32 Path separator (Wrong define check)
Fixed: MSVC compiler warnings was overwritten always, now uses push/pop
Fixed: MSVC _Interlocked* functions has no signature for unsigned, so we use either LONG or LONG64
Fixed: MSVC _Interlocked* replaced with Interlocked* macros
New: [X11] Implemented fplIsWindowFullscreen
New: [X11] Implemented basic fplSetWindowFullscreen
Fixed: [POSIX] Create/Open*BinaryFile was wrong named
Fixed: [Win32] fplMemoryFree actually never freed any memory
v0.7.6.0 beta:
Changed: Renamed fplGetRunningArchitectureType to fplGetRunningArchitecture
Changed: Renamed fplThreadDestroy() to
fplThreadTerminate()
+ signature changed (Returns bool)
Changed:
fplSignalInit()
+ new parameter "initialValue"
Changed: All functions which uses timeout uses fplTimeoutValue instead of uint32_t
Changed: All string buffer writing functions returns the last written character instead
Changed: Removed timeout parameter from
fplMutexLock()
New: Added struct
fplConditionVariable
New: Added enum fplSignalValue
New: Added
fplConditionInit()
New: Added
fplConditionDestroy()
New: Added
fplConditionWait()
New: Added
fplConditionSignal()
New: Added
fplConditionBroadcast()
New: Added typedef fplTimeoutValue
New: Added constant FPL_TIMEOUT_INFINITE
Changed: [Win32] Thread resources are automatically cleaned up when a thread is done running
Changed: [POSIX] Thread resources are automatically cleaned up when a thread is done running
Changed: [Win32] fplSignalInit updated to support isSetInitially
Changed: [Linux] fplSignalInit updated to support isSetInitially
Fixed: [GLX] Fallback to glXCreateContext was not working properly
New: [Linux] Implemented fplGetCurrentUsername
New: [Win32] Implemented all fplCondition*
New: [POSIX] Implemented all fplCondition*
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: Renamed fplSignalCreate to fplSignalInit + signature change (Returns bool, Signal pointer argument)
Changed: Removed mutex parameter from SignalWaitFor*
Changed: [GLX] Use glXCreateContext with visual info caching for GLX < 1.3 and glXCreateNewContext for GLX >= 1.3
Changed: [POSIX] All FPL__POSIX_GET_FUNCTION_ADDRESS_BREAK are wrapped around a do-while loop so it can "break" properly.
Removed: [POSIX] All signal functions removed
New: [ALSA] Added rudimentary ALSA playback support
New: [Linux] Implemented signal functions using eventfd
v0.7.4.0 beta:
Fixed: [Win32] Removed x64 detection for fplAtomicStoreS64 and fplAtomicExchangeS64 and use _InterlockedExchange*64 directly
Changed: [GLX] Implemented modern opengl context creation
v0.7.3.0 beta:
Changed: fplConsoleWaitForCharInput returns char instead of const char
Changed: Added isDecorated field to
fplWindowSettings
Changed: Added isFloating field to
fplWindowSettings
Changed: Renamed
fplSetWindowTitle()
-> fplSetWindowAnsiTitle()
Changed: Copy Ansi/Wide String pushes error for buffer range error
Fixed: Fixed api name mismatch CloseFile() -> fplCloseFile()
Fixed: Corrected wrong doxygen defines
Fixed: Corrected most clang compile warnings
New: Added
fplIsWindowDecorated()
/
fplSetWindowDecorated()
New: Added
fplIsWindowFloating()
/
fplSetWindowFloating()
New: Added fplSetWindowWideTitle()
New: Added fplGetTimeInMillisecondsHP()
New: Added fplGetTimeInMillisecondsLP()
New: Added fplGetTimeInSecondsLP()
New: Added fplGetTimeInSecondsHP()
New: Added FPL_NO_ENTRYPOINT
Changed: [Win32]
fplAtomicExchangeS64()
/ fplAtomicAddS64() /
fplAtomicStoreS64()
uses _Interlocked* operatings directly for x86
Fixed: [Win32] Corrected wrong case-sensitivity in includes
Fixed: [Win32] Fixed Cursor visibility was not properly changeable
Fixed: [Win32] Function prototype macros was not properly named
New: [Win32] Implemented
fplIsWindowDecorated()
/
fplSetWindowDecorated()
New: [Win32] Implemented
fplIsWindowFloating()
/
fplSetWindowFloating()
New: [Win32] Implemented fplSetWindowWideTitle()
New: [Win32] Implemented fplGetTimeInMillisecondsLP()
New: [Win32] Implemented fplGetTimeInMillisecondsHP()
New: [Win32] Implemented fplGetTimeInSecondsLP()
New: [Win32] Implemented fplGetTimeInSecondsHP()
New: [POSIX] Implemented fplGetTimeInMillisecondsLP()
New: [POSIX] Implemented fplGetTimeInMillisecondsHP()
New: [POSIX] Implemented fplGetTimeInSecondsLP()
New: [POSIX] Implemented fplGetTimeInSecondsHP()
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: Added fplGetPlatformTypeString()
New: Added struct
fplVersionInfo
New: Added struct fplOSInfos
New: Added fplGetOperatingSystemInfos()
New: Added fplGetCurrentUsername()
Changed: [Docs] Updated all documentations to match the current state
Fixed: [Docs] Missing brief for fpl_extern
Changed: [MSVC] Removed the compiler specific No-CRT block such as _fltused, etc. -> The caller is responsible for this!
New: [Win32] Implemented fplGetCurrentUsername()
New: [Win32] Implemented fplGetOperatingSystemInfos()
New: [Win32] Implemented fplGetRunningArchitectureType()
v0.7.1.0 beta:
Changed: fplConsoleFormatOut/fplConsoleFormatError is now common_api instead of platform_api
Changed: FPL uses a keyMap for mapping OS key codes to fplKey for every platform
Changed: [Win32] Console does not cache the output/input/error handles
Changed: [Win32] fplConsole* uses ReadFile/WriteFile instead of ReadConsole/WriteConsole
Changed: BSD Platform is detected as a Unix Platform, but has its own subplatform as well
Fixed: [Win32] Console was always allocated
Fixed: No CRT stub defintions such as memset and RTC was added for all compilers which is wrong
Fixed: Several bugfixes
New: Added stubs for Unix Platform
v0.7.0.0 beta:
Changed: Switched to C99
Changed: Changed Init/app state structs a lot
Changed: Removed most anonymous unions and structs
Changed: Renamed a lot of the internal handles
Changed: Renamed ThreadContext to ThreadHandle
Changed: Renamed ThreadSignal to SignalHandle
Changed: Renamed ThreadMutex to MutexHandle
Changed: All structs, functions with name
API renamed to *Api
Changed: Moved internal functions around and restructured things
Changed: Moved platforms and subplatforms into its own namespace
Changed: Updated documentation a bit
Changed: Introduced common::Argument*Error functions
Changed: Removed MemoryStackAllocate()
Changed: App state memory size is aligned by 16-bytes as well
Changed: Video/Audio state memory block is included in app state memory as well
Changed: PlatformInit uses InitResultType
Changed: fpl*DefaultSettings is now fplSet*DefaultSettings and does not return a struct anymore
Fixed: Get rid of const char
to char* warnings for Get*DriverString() functions
Fixed: [Win32] Icon was not default application icon
Fixed: ExtractFileName and ExtractFileExtension was not returning const char*
New: [X11][Window] Implemented X11 Subplatform
New: [X11][OpenGL] Implemented X11/GLX video driver
New: [X11][Software] Implemented Software video driver
New: [POSIX] Implemented all remaining posix functions
New: Introduced debug logging -> FPL_LOGGING
New: Added FPL_ALIGNMENT_OFFSET macro
New: Added FPL_ALIGNED_SIZE macro
New: Added InitResultType
New: CRT (C-Runtime) is not required anymore
v0.6.0.0 beta:
Changed: Documentation changed a bit
Changed: Renamed SignalWakeUp() to SignalSet()
Changed: [Win32] Start thread always immediatly
Changed: Included "Windows" prefix for output path in visual studio projects
Changed: Moved opengl settings into graphics union
Changed: All global functions use :: as a prefix
Deleted: Removed ThreadSuspend() -> Not complaint with pthread
Deleted: Removed ThreadResume() -> Not complaint with pthread
Deleted: Removed SignalReset() -> Not complaint with pthread
Fixed: Resize video backbuffer was not working anymore
Fixed: [Win32] Some _Interlocked* functions was not existing on x86
New: Introduced PrepareWindowForVideoAfter() so we can setup a video context after the window has been created
New: Introduced PrepareWindowForVideoBefore() so we can setup any window before initializing the video context
New: Added timings::GetTimeInMilliseconds() with [Win32] and [POSIX] implementation
New: [POSIX] Implemented all threading functions
New: [Linux] Added a makefile for each demo project
New: Added files::FileMove
v0.5.9.1 beta:
Changed: MemoryInfos uses uint64_t instead of size_t
Changed: Added BSD to platform detecton
Changed: Architecture detection does not use _WIN64 or _WIN32 anymore
Changed: fpl_api is now either fpl_platform_api or fpl_common_api
Changed: Internal code refactoring
Changed: Renamed VideoSettings driverType to driver
Changed: Video initialization is now platform independent
Changed: Window initialization is now platform independent
Changed: Moved window::WindowFlip to video::VideoFlip
Changed: [POSIX] Replaced file-io with POSIX open, read, write
Changed: [Win32] Removed fpl_api from main entry point forward declararation
Changed: [Win32] Moved main entry point inside the implementation block
Fixed: Arm64 was misdetected as X64, this is now its own arch
Fixed: GNUC and ICC are pure C-compilers, it makes no sense to detect such in a C++ library
Fixed: [Linux][POSIX] Refactor init and release to match PlatformInitState and PlatformAppState
Updated: Documentations updated
New: [POSIX][X11][Linux] Added missing functions as not-implemented
v0.5.9.0 beta:
Changed: Moved documentation inside its own file "final_platform_layer.documentation"
Changed: [Win32] Window creation uses CS_OWNDC always
Changed: Refactoring of platform and non-platform code
Changed: InitPlatform() and ReleasePlatform() is now platform independent
v0.5.8.1 beta:
Changed: KeyboardEventType::Char renamed to KeyboardEventType::CharInput
Changed: Completed basic documentation
Changed: Renamed VideoBackBuffer.stride to VideoBackBuffer.lineWidth
Changed: Moved a few internal inline audio functions to the global audio namespace
Fixed: [Win32] WM_CHAR was allowing unicode characters as well, which is wrong because it must be properly converted first.
Fixed: Audio driver selection was buggy
Added: pixelStride to fpl::video::VideoBackBuffer
Added: fpl::window::ClearWindowEvents()
Added: fpl::window::PushWindowEvent()
Added: fpl::window::UpdateGameControllers()
Added: fpl::audio::GetAudioBufferSizeInFrames()
Added: fpl::audio::GetAudioDriverString()
Added: fpl::audio::GetAudioFormatString()
Added: fpl::audio::GetAudioSampleSizeInBytes()
Added: fpl::audio::GetAudioFrameSizeInBytes()
Added: fpl::audio::GetAudioBufferSizeInBytes()
v0.5.8.0 beta:
Changed: SignalWaitFor* requires additional parameter for passing in the ThreadMutex reference (pthread compability)
Changed: Signal* does not use const reference anymore (pthread compability)
Changed: Updated documentation a ton
Changed: Decreased MAX_ERRORSTATE_COUNT from 1024 to 256
Changed: global__LastErrorState is a non-pointer global now
Changed: Renamed GetPlatformLastError() to GetPlatformError()
Changed: All array of objects parameters uses C++ array style -> int *arr[] instead of int **arr
Fixed: MemoryAlignedFree() had wrong signature (void **) instead of (void *)
Fixed: GetPlatformErrorCount() was not increasing when an empty error was pushed on for single error states
Fixed: [Win32] InitPlatform() was not cleaning up the Win32State when the initialization failed
Replaced: VideoCompabilityProfile is replaced by OpenGLCompabilityFlags (Only available with OpenGL)
New: Added ClearPlatformErrors()
v0.5.7.4 beta:
Changed: Updated code documentation for all functions and types to doxygen/javadoc style
Changed: SetFilePosition32 position is now int32_t instead of uint32_t to support negative positions as well
Changed: Renamed desiredFormat to deviceFormat in AudioSettings
Changed: [DirectSound] Use deviceID as GUID for the audio device
New: Introduced AudioDeviceID
New: Added deviceID field in AudioSettings
New: Added audio::GetAudioDevices()
New: Added strings::FormatString()
v0.5.7.3 beta:
Fixed: [Win32] Fixed SetWindowFullscreen was not working properly
New: Introduced outputRect in VideoBackBuffer + Win32 implementation
Changed: SetWindowFullscreen returns bool
v0.5.7.2 beta:
Added: Added new audio formats (AudioFormatType::F64, AudioFormatType::S64)
v0.5.7.1 beta:
Fixed: xInputSetState renamed to xInputGetState internally
Added: Introduced InputSettings
Added: [Win32] XInput controller detection is now limited to a fixed frequency, for improving performance (InputSettings.controllerDetectionFrequency)
v0.5.7.0 beta:
Changed: Total change of documentation style
Changed: [Win32] ThreadMutex uses a critical section instead of a event
Changed: [Win32] Include windows.h in the header, so we can define HANDLE, CRITICAL_SECTION in the api
Changed: [Win32] Changed lots of functions to use conditions instead of asserts
Changed: [Win32] Changed format specifiers to use either d or zu for integer types
Changed: All Thread*Wait functions returns if the wait was successful or not in the same way Signal*Wait
Changed: All ListFiles* functions uses reference instead of pointer
v0.5.6.0 beta:
Changed: We are back to C++/11 and we will never going back to C++/98
v0.5.5.1 beta:
New[POSIX]: Implemented fpl::timings
New[POSIX]: Implemented fpl::library
New[POSIX]: Implemented fpl::threading::ThreadSleep
Changed[POSIX]: Moved Linux fpl::console functions to Posix
v0.5.5.0 beta:
Changed: All internal handles are now unions now, so can have different sizes of handles
Changed: Introduced POSIX platform and moved linux atomics into it
v0.5.4.0 beta:
Fixed: Some enum types was not using the namespace version
v0.5.3.0 beta:
Changed: Use custom int types because C++/98 has no default types unfortunatly
Fixed: Changed compiler detection order, because some non-MSVC compilers define _MSVC
Changed: Better C++/11 feature detection for optional nullptr and constexpr
v0.5.2.1 beta:
Fixed: Corrected all doxygen statements to match new enum style or added missing exlamation marks.
v0.5.2 beta:
Changed: Library is now C++/98 complaint
Changed: The actual enum type for "flags" has no "s" at the end anymore.
Opimization: Changed some internal functions to "static inline"
Changed: Renamed audio::GetAudioNativeFormat to audio::GetAudioHardwareFormat
New: Added "periods", "bufferSizeInBytes", "bufferSizeInFrames" to AudioDeviceFormat
v0.5.1 beta:
New: audio::GetAudioNativeFormat()
New: audio::SetAudioClientReadCallback()
Fixed: InitFlags::Audio was never tested before InitAudio() was being called.
Changed: Renamed ThreadStop to ThreadDestroy
v0.5.0 beta:
Added: [Win32] DirectSound playback support
Added: Asyncronous audio playback
v0.4.11 alpha:
Fixed: [Win32] For now, load all user32 functions always, even when window is not used (This is to prepare for audio playback)
Fixed: [Win32] ThreadStop was not releasing the thread handle
Added: [Win32] ThreadWaitForAny
Added: [Win32] SignalWaitForAll
Added: [Win32] SignalWaitForAny
Added: [Win32] SignalReset
Added: FPL_NO_VIDEO
Changed: ThreadWaitForSingle renamed to ThreadWaitForOne
Changed: ThreadWaitForMultiple renamed to ThreadWaitForAll
Changed: SignalWait renamed to SignalWaitForOne
v0.4.10 alpha:
Removed: Removed all _internal _INTERNAL postfixes from types, functions and macros
Changed: Proper identitation for compiler directives based on context
Added: [Win32] Dynamically loading ole32 functions (CoCreateInstance, CoInitializeEx, etc.)
Fixed: [Win32] GetCursor was not using the dynamic loaded function
Fixed: [Win32] Missing
Clipboard
dynamic functions
v0.4.9 alpha:
Removed: Removed all audio code for now
Changed: A total cleanup of all internal stuff, so its much easier to add in new features
v0.4.8 alpha:
New: AtomicLoadU32, AtomicLoadU64, AtomicLoadS32, AtomicLoadS64, AtomicLoadPtr
New: AtomicStoreU32, AtomicStoreU64, AtomicStoreS32, AtomicStoreS64, AtomicStorePtr
New: AtomicExchangePtr, AtomicCompareAndExchangePtr, IsAtomicCompareAndExchangePtr
New: [Win32] Implementation for AtomicLoadU32, AtomicLoadU64, AtomicLoadS32, AtomicLoadS64, AtomicLoadPtr
New: [Win32] Implementation for AtomicStoreU32, AtomicStoreU64, AtomicStoreS32, AtomicStoreS64, AtomicStorePtr
New: [Linux] Implementation for AtomicLoadU32, AtomicLoadU64, AtomicLoadS32, AtomicLoadS64, AtomicLoadPtr
New: [Linux] Implementation for AtomicStoreU32, AtomicStoreU64, AtomicStoreS32, AtomicStoreS64, AtomicStorePtr
New: [Win32] Loading of DirectSound (Prepare for audio output support)
Draft: Added first audio output api
Fixed: Threading context determination
Fixed: [Win32] Fixed all thread implementations
Fixed: [Win32] SetWindowLongPtrA does not exists on X86
Fixed: [Win32] Missing call convention in SHGetFolderPathA and SHGetFolderPathW
Changed: Improved header documentation (More examples, better descriptions, proper markdown syntax, etc.)
Changed: All threading functions uses pointer instead of reference
Changed: [Linux] Atomic* uses __sync instead of __atomic
Changed: A bit of internal cleanup
v0.4.7 alpha:
Changed: [Win32] Load all user32 and shell32 functions dynamically
Changed: FPL_ENUM_AS_FLAGS_OPERATORS_INTERNAL requires a int type as well
Fixed: MemoryAlignedAllocate and MemoryAlignedFree was broken
Added: FPL_IS_ALIGNED macro
v0.4.6 alpha:
Fixed: [Win32] Crash when window is not set in the InitFlags but FPL_USE_WINDOW is set.
v0.4.5 alpha:
Changed: [Win32] Use CommandLineToArgvW for command line parsing
v0.4.4 alpha:
New: [Win32] Implemented argument parsing for WinMain and wWinMain
Fixed: Corrected small things for doxygen
Changed: Renamed CopyAFile to FileCopy
Changed: Renamed DeleteAFile to FileDelete
v0.4.3 alpha:
New: Introduced IsAtomicCompareAndExchange
Added: [Linux] Implemented IsAtomicCompareAndExchange for all 32 and 64 bit integer types
Added: [Win32] Implemented IsAtomicCompareAndExchange for all 32 and 64 bit integer types
Added: [Win32] Loading gdi32.dll dynamically for ChoosePixelFormat, etc.
Added: [Win32] Loading opengl32.dll dynamically for wglGetProcAddress, wglMakeCurrent, etc.
Fixed: [Win32] Adding memory fence for AtomicReadWriteFence on non-x64 architectures
Fixed: [Win32] Adding memory fence for AtomicReadFence on non-x64 architectures
Fixed: [Win32] Adding memory fence for AtomicWriteFence on non-x64 architectures
Fixed: Solidified descriptions for all Atomic*Fence
Changed: Enabled FPL_FORCE_ASSERTIONS will ensure that C asserts are never used, because it may be compiled out.
Changed: Removed all FPL_WIN32_ kernel32 macros and replaced it with normal calls.
Changed: [Win32] Changed a lof ot the internals
v0.4.2 alpha:
Added: [Linux] Started linux implementation
Added: [Linux] Memory allocations
Added: [Linux] Atomic operations
Added: Check for C++/11 compiler and fail if not supported
Added: Nasty vstudio 2015+ workaround to detect C++/11
Added: &= operator overloading for enums
Changed: AtomicCompareAndExchange argument "comparand" and "exchange" flipped.
Changed: constexpr is now fpl_constant to make clear what is a constant
Removed: [Win32] CreateDIBSection is not needed for a software backbuffer
Fixed: [Win32] Software rendering was not working properly.
Fixed: Some AtomicCompareAndExchange signatures was still AtomicAndCompareExchange
v0.4.1 alpha:
Cleanup: Internal cleanup
Changed: All the settings constructors removed and replaced by a simple inline function.
Added: Added native C++ unit test project to demos solution
Fixed: FPL_OFFSETOF was not working
Fixed: All file size macros like FPL_MEGABYTES was returning invalid results.
Removed: FPL_PETABYTES and higher are removed, just because its useless.
v0.4.0 alpha:
Changed: All FPL_ENABLE_ defines are internal now, the caller must use FPL_NO_ or FPL_YES_ respectivily.
Changed: AtomicCompareExchange* is now AtomicCompareAndExchange*
Changed: InitFlags::VideoOpenGL is now InitFlags::Video
Added: Software rendering support
Added: VideoDriverType enumeration for selecting the active video driver
Added: video::GetVideoBackBuffer with [Win32] implementation
Added: video::ResizeVideoBackBuffer with [Win32] implementation
Added: FPL_PETABYTES macro
Added: FPL_EXABYTES macro
Added: FPL_ZETTABYTES macro
Added: FPL_YOTTABYTES macro
Added: FPL_MIN macro
Added: FPL_MAX macro
Added: MutexCreate with [Win32] implementation
Added: MutexDestroy with [Win32] implementation
Added: MutexLock with [Win32] implementation
Added: MutexUnlock with [Win32] implementation
Added: SignalCreate with [Win32] implementation
Added: SignalDestroy with [Win32] implementation
Added: SignalWait with [Win32] implementation
Added: SignalWakeUp with [Win32] implementation
Added: GetClipboardAnsiText with [Win32] implementation
Added: GetClipboardWideText with [Win32] implementation
Added: SetClipboardText with [Win32] implementation for ansi and wide strings
Added [MSVC]: AtomicExchangeS32 (Signed integer)
Added [MSVC]: AtomicExchangeS64 (Signed integer)
Added [MSVC]: AtomicAddS32 (Signed integer)
Added [MSVC]: AtomicAddS64 (Signed integer)
Added [MSVC]: AtomicCompareExchangeS32 (Signed integer)
Added [MSVC]: AtomicCompareExchangeS64 (Signed integer)
Fixed [MSVC]: AtomicExchangeU32 was not using unsigned intrinsic
Fixed [MSVC]: AtomicExchangeU64 was not using unsigned intrinsic
Fixed [MSVC]: AtomicAddU32 was not using unsigned intrinsic
Fixed [MSVC]: AtomicAddU64 was not using unsigned intrinsic
Fixed [MSVC]: AtomicCompareExchangeU32 was not using unsigned intrinsic
Fixed [MSVC]: AtomicCompareExchangeU64 was not using unsigned intrinsic
Implemented [Win32]: GetProcessorCoreCount
Implemented [Win32]: Main thread infos
Performance [Win32]: GetProcessorName (3 loop iterations at max)
v0.3.6 alpha:
Cleanup: All win32 functions are macro calls now (prepare for dynamic function loading)
Fixed: FPL_ENABLE_WINDOW was enabling window features even when it was deactivated by the caller
v0.3.5 alpha:
Renamed: All memory/library/threading functions
Removed: FPL_ENABLE_PUSHMEMORY removed entirely
v0.3.4 alpha:
Renamed: CopyFile/DeleteFile/All memory functions renamed (Stupid win32!)
Renamed: All internal opengl defines renamed, so that it wont conflict with other libraries
Fixed: [Win32] strings::All Wide conversions was not working properly
Removed: [Win32] Undefs for CopyFile
Changed: [Win32/OpenGL] Test for already included gl.h
v0.3.3 alpha:
Basic threading creation and handling
Fixed strings::All Wide convertions was not working properly
v0.3.2 alpha:
Introduced: Automatic namespace inclusion (FPL_AUTO_NAMESPACE)
Introduced: Push memory (FPL_ENABLE_PUSHMEMORY)
Signature changed for: ExtractFilePath/ChangeFileExtension (source first, destination second)
Window features not not compiled out anymore when FPL_ENABLE_WINDOW is 0
New overloaded CombinePath without any destination arguments
New: AllocateStackMemory function
Optional destination arguments for: GetExecutableFilePath/GetHomePath/ChangeFileExtension/CombinePath
Fixed strings::CopyAnsiString/CopyWideString was not returning the correct value
v0.3.1 alpha:
All types/structs/fields/functions documented
[Win32] Fixed legacy opengl (GL_INVALID_OPERATION)
v0.3.0 alpha:
Updated documentation a lot
[Win32] Support for WGL opengl profile selection
v0.2.6 alpha:
Added memory::CopyMemory
Added fpl::GetLastError and fpl::GetLastErrorCount for proper error handling
Added files::CreateBinaryFile and files::OpenBinaryFile for wide file paths
Added basic support for creating a modern opengl rendering context, see VideoCompabilityProfile in VideoSettings
Added support for enabling opengl vsync through WGL
Returns char * for all paths:: get like functions
Returns char/wchar_t * for all strings:: functions
Fixed files::CreateBinaryFile was never able to overwrite the file.
Fixed include was in some namespaces defined
Fixed files::ClearMemory was wrong
Replaced all const constants with fpl_constant
Removed template code / Replaced it with macros
v0.2.5 alpha:
Added CreateDirectories
Returns char * for all path get like functions
Fixed CreateBinaryFile was never able to overwrite the file.
v.2.4 alpha:
Changed to a doxygen + vc complaint documentation style
CopyFile2, DeleteFile2 and CloseFile2 are now CopyFile, DeleteFile, CloseFile
v0.2.3 alpha:
Support for doxygen in documentations
v0.2.2 alpha:
Added XInput support
v0.2.1 alpha:
Changed a lot of pointer arguments to reference
Added gamepad event structures
v0.2 alpha:
Dropped C support and moved to a more C++ ish api
Dropped no C-Runtime support
v0.1 alpha:
Initial version
Generated by
1.9.8