summaryrefslogtreecommitdiff
path: root/Source/DirectFB/NEWS
diff options
context:
space:
mode:
Diffstat (limited to 'Source/DirectFB/NEWS')
-rwxr-xr-xSource/DirectFB/NEWS3626
1 files changed, 3626 insertions, 0 deletions
diff --git a/Source/DirectFB/NEWS b/Source/DirectFB/NEWS
new file mode 100755
index 0000000..d73ee78
--- /dev/null
+++ b/Source/DirectFB/NEWS
@@ -0,0 +1,3626 @@
+1.4.0
+-----
+
+General bugfixes, code cleanups and memory leak plugging.
+
+Core
+- fix for possible segfault when unloading non-used input/gfx modules.
+- fbdev: Allow accelerator ID to be overridden by (existing) runtime option.
+- IDirectFBScreen::GetEncoderDescriptions: add enums for NTSC443 and 30Hz + 24Hz
+- font: DFFA_NOBITMAP will inhibit loading bitmaps if we have vector fonts too.
+
+Input
+- input: Implement driver_get_axis_info() in the linux-input driver
+- vt/keyboard: Flush console input when not used; avoids kernel waking up
+
+Gfx
+- add optional dithering when loading images into RGB16 surfaces
+- surface rotation: more complete support for 16-bit formats
+- sis315: support for XGI Z series chip, STRETCHBLIT, and big endian handling
+- matrox: use of BES guarantees atomic, tear-free triple buffering
+
+Tools
+- directfb-csource: add option to dither RGB16 images
+
+Build Environment
+- add missing include path for builddir != srcdir
+- libtool for modules: use -module instead of -export-dynamic, since we only dlopen.
+
+1.3.1
+-----
+
+Fusion
+- update to use new 'unified' fusion kernel module.
+ When using multi-app, please use fusion 8.1.1 or newer.
+- fixed skirmish wait argument not taken as msec but usec
+
+Config
+- added 'include' option, to include config files.
+- added config option to override module search dir.
+- read /proc/self/cmdline if DirectFBInit() does not receive argv/argc.
+- added option to override initial screen size.
+- Fix build when srcdir != builddir.
+
+Core
+- Added IDirectFBSurface::Read and ::Write
+- better out-of-memory error handling
+- fixed alpha handling for palette SetEntriesYUV
+- rectified changes to surface policy in case a surface is allocated again, of reallocated
+- fixed memory leak in local "System Memory" pool when deallocating due to IDirectFB::Release
+- fix software blending bug when modifying both source and destination
+- IDirectFBDisplayLayer::SetSourceRectangle for non-scalable surfaces: change dst size too.
+- surfaces: Fixed missing initialization of bridge pointer, crashing when no bridge is available.
+- surfaces: clean-up local pool on 'leave' and 'destroy'
+- gfx: added RGBA4444 support
+- default font: Support premultiplied font formats.
+
+Direct
+- include ARM memcpy routines (big endian only)
+
+Documentation
+- added documentation for blend functions and some desktop-buffer-mode options
+- directfbrc.5: Document triple and windows desktop-buffer-mode options.
+
+Gfxsystems
+- matrox: Wrong chroma plane offset was being used with deinterlace blits.
+- omap: Added omapfb.h to release zipfile.
+- SH772x: LCD parameters not obtained via fbdev ioctl
+- SH772x: improved JPEG Encode/decode performance, JPEG fixes, JPU by default disabled due to conflicts
+- SH772x: detection broadened to SH772x revisions
+- unichrome: support for accel stretchblit YUV->RGB for CX700/M/2.
+
+Input
+- Fix possible array overruns
+- added direct_modules_unregister() when unloading the module
+- linuxinput: Fix LED handling, Count KEY_M
+- font loading: Support premultiplied font formats.
+- Video4Linux: add sources to release zipfile. Conform v4l and v4l2 to new core architecture.
+- zytronic: added zytronic touch screen driver.
+- vt: Move the keyboard XLATE/MEDIUMRAW handling to the vt code, to allow concurrent input.
+- input: correctly read modifiers for load_keymap
+- keyboard: added setting/loading of keyboard keymaps via IDirectFBInputDevice
+
+Systems
+- fbdev: Fixes for pan & zoom functionality
+- fbdev: corrected ioctl error handling: now stops on error.
+- fbdev: Test non-primary layer allocations
+- fbdev: use directfbrc for initial screen size, if specified.
+- x11: fixes for glx handling, additional logging
+- x11: Remember each GLXContext's drawable and set update flag only if it changed.
+- x11: Manage second GLX context per thread via another surface accessor ID.
+
+Tools
+- dfbdump: fixed to show correct buffer allocation sizes for certain formats.
+- dfbinfo: now shows multiple encoder types correctly
+
+Window Manager
+- default: Fix DLBM_TILE clipping
+- default: Fixed advanced blending with only DSBLIT_BLEND_COLORALPHA being used.
+- default: Added Meta-R for window rotation.
+
+
+1.3.0
+-----
+
+API | IDirectFBDisplayLayer
+- Added GetRotation() to query the layer rotation.
+
+API | IDirectFBSurface
+- Added DSBLIT_ROTATE90 and DSBLIT_ROTATE270. Thanks to Young Hoon for original patch!
+- Added DFBSurfaceHintFlags for optimized allocation, format selection etc.
+- Added DSDESC_HINTS to DFBSurfaceDescriptionFlags and 'hints' to DFBSurfaceDescription.
+- Implemented DSHF_FONT by selecting the configured font format and premultiplication.
+- Added DSCAPS_ROTATED to allocate back buffers with width/height swapped (unimplemented).
+
+API | IDirectFBWindow
+- Added SetRotation() for 90, 180 and 270 degree rotation per window.
+ Thanks to Young Hoon for the original patch!
+- Added sub window support with each sub window having its own surface (one level only for DirectFB 1.4)...
+- Added DWCAPS_SUBWINDOW, DWDESC_TOPLEVEL_ID and "toplevel_id" to DFBWindowDescription.
+ Manage ref to top level window and vector of sub windows in window core, but leave scaling,
+ translation and clipping of sub window bounds based on top level bounds to the WM module.
+- Added DWOP_FOLLOW_BOUNDS to make bounds follow the parent window (only for window association, sub windows always follow).
+
+Runtime Options
+- Allow '90' and '270' for "layer-rotate" option.
+
+Graphics Core
+- Implement proper clipping for rotated blits of 90, 180 or 270 degree.
+
+Layer Core
+- Implement layer rotation using DSCAPS_ROTATED if available, otherwise using rotated window stack.
+ With just a single buffer (frontonly), it always uses rotation of the window stack.
+ Thanks to Young Hoon for the original patch!
+- Added magic value to CoreLayerContext structure, improved debug messages.
+- Fixed missing lock on surface structure around dfb_surface_allocation_update() call.
+
+Surface Core
+- Added Surface Pool Bridge[tm] technology to speed up transfer between pools.
+ New API can be implemented to do optimized transfer from one surface pool to another.
+ CheckTransfer() is called to probe each registered CoreSurfacePoolBridge.
+ CoreSurfacePoolTransfer is allocated with one or more rectangles to be transfered.
+ StartTransfer() and FinishTransfer() are used to actually execute the transfer
+ which could be queued, but is synchronous at the moment (Start+Finish).
+- Implemented dfb_surface_buffer_write() using Write() on allocation.
+- New algorithm for finding the allocation which to Write() to, using last read
+ allocation or other up to date allocation.
+- Remember last read allocation for better negotiation in case of multiple up to
+ date allocations.
+- Implemented dfb_surface_buffer_read() using Read() on allocation
+- Added dfb_surface_buffer_lock_deinit(), moved out format conversion.
+
+Window Core
+- Added magic value to CoreWindow.
+- Set magic value in CoreWindow before calling WM functions.
+- Added lock and ref around dfb_wm_close_stack() in dfb_wm_close_all_stacks(), added context magic and lock assertions everywhere!
+
+Pixel Formats
+- Added dfb_convert_to_rgb24() and dfb_convert_to_a8(), used for surface dumps to .ppm files.
+
+Software Rendering
+- Started implementation of DSBLIT_ROTATE90, DSBLIT_ROTATE180 and DSBLIT_ROTATE270 for all blitting flags...
+- Disable MMX functions not supporting rotation (Ostep/Dstep) properly.
+
+Utilities
+- Added D_UTIL_SWAP(a,b) to exchange values.
+- Added dfb_region_from_rotated(), dfb_rectangle_from_rotated() and dfb_point_from_rotated_region().
+- Replaced dfb_back_to_front_copy_180() by dfb_back_to_front_copy_rotation() with extra argument.
+ Thanks to Young Hoon for the original patch!
+
+OpenGL Driver
+- New accelerated driver using OpenGL!
+
+PNG Image Provider
+- Use dfb_surface_write_buffer() if possible.
+
+Default WM
+- Implement stack rotation and window rotation, thanks to Young Hoon for the original patch!
+- In window_at_pointer() use dfb_surface_read_buffer() with 1x1 rectangle instead of lock/unlock.
+
+UniQuE WM
+- Added experimental border event handling in test_foo program to move/raise any window :)
+- Use dfb_surface_write_buffer() instead of lock/memcpy/unlock for border images (foo).
+- Unload foo surface (border tiles) during master shutdown.
+
+X11 System
+- Full featured OpenGL based acceleration via GLX!
+- Implemented Surface Pool Bridge for fast transfer between XShmImage and GLX pool.
+- Use XShmCreatePixmap() and XCopyArea() instead of XShmGet/PutImage() allowing partial transfers in both directions!
+- Also tried to make multi application working, but it seems that for an X11 Pixmap there can
+ only be one process doing a glXCreatePixmap() which also does not allow the GLXPixmap to be shared :(
+
+dfbdump tool
+- Show layer and window rotation.
+
+dfbtest_window tool
+- Added new program for testing window and sub window features :)
+- Added more options, window destroy test and proper cleanup.
+- Added test that hides the top level window and shows it again.
+- New option to pass window caps for top or sub window.
+- Enhanced testing and logging code. Run most tests on sub window, too.
+- Added advanced window geometry tests.
+- Added options for setting window options and for window association.
+- Implemented selection of individual tests for top/sub window and added option to wait at the end.
+
+
+1.2.6
+-----
+
+Core
+- Call fusion_stop_dispatcher() before destroying pools to fix lots of shutdown issues.
+
+WM Core
+- Lots of useful debug messages.
+
+libfusion
+- Added fusion_stop_dispatcher() to be called before destroying pools etc... fixing lots of shutdown issues!
+
+libdirect
+- Added direct_thread_wait() / _notify(), _lock(), _unlock() and _terminate().
+- Added some debug messages to DirectInterface code.
+
+Utilities
+- Added dfb_updates_get_rectangles() for convenience, doing bounding box trade off etc...
+
+X11 System
+- Fixed remaining crash with expose events that ran into a NULL window.
+
+
+1.2.5
+-----
+
+Fonts
+- Fixed alignment on eight byte boundary, thanks to Nikita Egorov!
+
+Software Rendering
+- Don't switch to fill rectangle in DrawLine() if matrix is used.
+
+SH772x
+- More fixes for JPEG encoding with up/down scaling and offset.
+
+
+1.2.4
+-----
+
+API | IDirectFBInputDevice
+- Added DFBInputDeviceAxisInfo(Flags) with DIAIF_ABS_MIN/MAX flags and abs_min/max fields.
+- Added DIEF_MIN/MAX and min/max to DFBInputEvent, e.g. for axis boundaries.
+
+API | IDirectFBWindow
+- Added DWCAPS_NOFOCUS: window will never get focus or receive key events, unless it grabs them.
+
+Runtime Options
+- New option "[no-]software-trace" to show every stage of the software rendering pipeline.
+
+Build Options
+- Switch to pkg-config for SDL and FreeType2, thanks to Keith Mok!
+
+Graphics Core
+- Only have DSRO_MATRIX be mandatory for now. Other flags no longer prohibit acceleration.
+ Worst case was when DSRO_SMOOTH_UP/DOWNSCALE was turned on globally via "smooth-upscale" or "smooth-downscale"
+ runtime option which caused all operations to use software fallbacks, not only StretchBlit()!
+
+Input Core
+- Added GetAxisInfo() to InputDriverFuncs to query information about one axis.
+ Make use of it in input_driver.h only if driver has defined DFB_INPUTDRIVER_HAS_AXIS_INFO
+ to avoid having to change all input drivers.
+- Query axis information from driver and put it into events.
+
+Layer Core
+- Set background mode of new contexts to DLBM_DONTCARE.
+
+Pixel Formats
+- Rewrote YCbCr<->RGB conversion routines without lookups which are much more expensive on embedded devices.
+- Fixed many NV12, NV16 and NV21 code areas, mostly for big endian.
+
+Software Rendering
+- Rewrote Dacc_RGB_to_YCbCr_C and Dacc_YCbCr_to_RGB_C using Duff's device with macros.
+ Conversion also supports 4:4:4 by this change, not optimizing for 4:2:x cases.
+- Get rid of YUV tables saving 5k binary size!
+- Added optimized Bop_argb_blend_alphachannel_one_invsrc_Aop_argb() -> 6x speed
+
+Utilities
+- Added exported dfb_pixelformat_names[] and replaced relevant code.
+
+libdirect
+- Important fix for having multiple interface implementations in one module.
+- Added file and symbol lookup functions to trace code for external usage.
+ New functions are direct_trace_lookup_file(), direct_trace_lookup_symbol() and
+ a convenience function combining the above called direct_trace_lookup_symbol_at().
+- Fixed missing magic value in thread structure created for non-direct threads.
+
+Davinci Driver
+- In ARGB OSD dithering use task buffer and add missing locks.
+- Raise OSD surface pool priority to allocate in frame buffer rather than /dev/mem.
+- Workaround broken DSP cache invalidation function.
+
+SH7722 Driver
+- Build only for SH4.
+- Fixed missing update of rendering destination buffer.
+- Fixes for JPEG encoding with conversion, cleanups...
+- Fixed software fallback for JPEG decoding to unsupported formats.
+
+SH7723 Driver
+- Added support for SH7723 to SH7722 driver and kernel module.
+
+Default WM
+- Use min/max values from absolute axis motion events if present.
+- Implemented DWCAPS_NOFOCUS.
+
+X11 System
+- Update X11 system module with cleaned up code from 1.3.x.
+- Fixes in input driver and layer output.
+
+JPEG Image Provider
+- Fix direct decoding to NV16 (no to+from RGB) for little endian.
+
+dfbtest_blit
+- Added test program for (Stretch)Blit with an image from file.
+
+
+1.2.3
+-----
+
+X11 System
+- Fixed new bug with reopening X11 window when layer resizes.
+
+
+1.2.2
+-----
+
+API | IDirectFBSurface
+- Added missing layer context locking around dfb_wm_get_insets() in IDirectFBSurface_Window_Construct().
+
+API | IDirectFBWindow
+- Added missing locks around direct dfb_wm_... calls...
+
+API | Utilities
+- Generate name/value pairs for DFBWindowCapabilities and DFBWindowOptions.
+
+Layer Core
+- Fixed failing context lock assertion in dfb_wm_close_stack() by locking in context destructor.
+- Added debug message to print context being returned by dfb_layer_get_active_context().
+
+Window Core
+- Avoid recursive dfb_wm_close_stack() caused by SaWMan's CloseStack() unref on the layer region.
+ This issue happens only in single app build, where the layer region constructor gets called synchronously
+ and destroys the window stack structure before the dfb_wm_close_stack() has finished.
+ Fixed by calling CloseStack() at the end dfb_wm_close_stack(), moving the list removal and flag clearing
+ before the call and freeing the stack data in dfb_windowstack_destroy() or recurring dfb_wm_init_stack().
+- Fixed crash in window destructor caused by (un)locking the stack.
+- In dfb_wm_close_all_stacks() lock each context and temporarily ref it for following unlock.
+
+libdirect
+- Added DirectUnregisterInterface() and destructor to call it.
+- Added magic value to interface implementation structure and use D_CALLOC/D_FREE.
+
+libfusion
+- Fixed single app skirmish lock counting (copy'n'paste bug).
+
+Default WM
+- Avoid most of the recursive calls of wind_of_change().
+- Make sure window has a surface before restoring its size when disabling scaling.
+
+X11 System
+- Fixed race condition and X error when switching resolution quickly.
+- Implemented primaryRemoveRegion() with a new call to destroy the X11 window.
+- Improve shutdown behaviour of X11 module.
+ Certain race conditions at shutdown prevented, leading to lock or crash.
+ x11input and x11 modules combined into one.
+
+dfbmaster tool
+- Added very simple dedicated master for safety, stability or enhanced testing pleasure.
+
+
+1.2.1
+-----
+
+API | IDirectFBSurface
+- Added MakeSubSurface() to make this surface a sub surface or adjust the rectangle of this sub surface.
+- Fix Lock() on layer surfaces with system memory back buffer.
+ This reverts commit 4cc82baddbc3a9849c2ff6c4979a65bcfb6ba96b and fixes
+ GetFramebufferOffset() properly by not adding CSAF_GPU_READ in Lock(), but
+ checking if there's a physical address provided by the surface pool via the
+ buffer lock in GetFramebufferOffset().
+
+API | IDirectFBImageProvider
+- Added simple WriteBack() method for encoding surface data.
+
+Runtime Options
+- New option "warn=<event:params>" to print warnings on surface/window creation or surface buffer allocations.
+ Example: 'warn = allocate-buffer:300x300' - Prints a warning for every surface buffer allocation made with
+ both width and height of 300 or above.
+- Added "keep-accumulators = <limit>" to allow freeing of accumulators above the limit.
+ Setting -1 never frees accumulators until the state is destroyed (previous behaviour).
+ The default is 1024 which already means up to 16kB are kept!
+- Allocate palette on demand saving 16kB of the 60kB allocated until after DirectFBCreate().
+
+Layer Core
+- Fix failing assertion due to recent code cleanup.
+
+Surface Core
+- Cleanup complex assertions, no CORE_SURFACE_ALLOCATION_ASSERT within CORE_SURFACE_BUFFER_LOCK_ASSERT, only D_ASSERTs.
+- A bit more debug when locking buffers.
+- Use convenience functions where possible, e.g. dfb_surface_lock_buffer() instead of dfb_surface_get_buffer()
+ and dfb_surface_buffer_lock() etc.
+- Implemented strategy for surface allocations when pools are out of memory.
+- Extended dfb_surface_pools_negotiate() to return a list of capable pools order by priority
+ including pools out of memory at the end of the list.
+- Added MuckOut() to the surface pool API to tag all allocations for removal to free up memory
+ for a new allocation. If not provided by the pool, a fallback implementation will do the job,
+ but that's not implemented yet.
+- Added dfb_surface_pool_displace() to muck out and backup allocations and do the new allocation.
+- Moved allocate_buffer() from surface buffer to surface pool code as dfb_surface_pools_allocate()
+ with extended negotiation using a list of possible pools and with ability to muck out allocations.
+- Changed static update_allocation() to exported dfb_surface_allocation_update().
+- Added dfb_surface_trylock() for a fusion_skirmish_swoop() on the surface lock.
+- Call dfb_surface_lock() and dfb_surface_unlock() in surface_destructor().
+- Moved surface core initialization before system module to have generic pools always at
+ the same position (with the same pool IDs).
+- Keep an ordered list of surface pool IDs based on priority.
+- Have a pointer to a backup pool in every pool which is set to the shared memory surface pool by default.
+- Enhanced backup strategy when mucking out allocations.
+- First check if any of the existing allocations is up to date,
+ otherwise try to update one of the existing allocations.
+- Enforce same order of joining pools as of initializing them.
+- Fixed invalid 'buffer->written' allocation pointer when using "thrifty-surface-buffers" option.
+- Fixed wrong order of joining surface pools in slaves.
+- Fixes for mucking out multiple allocations.
+- Use fusion_ref_set_name() to show the same info as with the skirmish.
+- Cleanup buffer initialization and reset with two new convenience functions.
+- Other fixes and enhanced debugging output.
+
+Surface Manager (FBDev, DevMem, X11 Virtual Physical testing pool)
+- Enhancements to surface manager code and fixes for old behaviour (without virtual physical surface pool).
+- Extend dfb_surfacemanager_displace() to check policies, reimplement toleration code
+ and take free space before and after an occupied chunk into account.
+- Cleanup dfb_surfacemanager_allocate() to only check for free chunks.
+- Always initialize x11(Shm)Image surface pool, regardless of virtual physical surface pool being enabled.
+- Never fail in x11TestConfig() if virtual physical surface pool is not enabled,
+ but use Fusion shared memory allocations as a fallback (previous behaviour).
+- Update allocation size from chunk length which is usually bigger (at least 16 bytes of safety area).
+- Enhance surface manager to find the best matching group of allocations to muck out.
+- This is the first time multiple smaller allocations can be mucked out for a bigger one.
+ The code that determines these allocations is still O(1) and finds the best matching
+ group within all possible combinations.
+
+Window Core
+- Shutdown fixes in the window management and new flags for the state of the stack.
+- Added CoreWindowStackFlags with CWSF_INITIALIZED and CWSF_ACTIVATED to CoreWindowStack.
+- In dfb_wm_close_all_stacks() simply call dfb_wm_close_stack() for any stack with CWSF_INITIALIZED set.
+ The previous code did only half of it, just clearing context->stack pointer and clearing the magic value
+ resulting in the notification handler for the background image accessing a stack structure without magic.
+- In dfb_wm_close_stack() first deactivate the stack if CWSF_ACTIVATED is set.
+- Safe state handling in dfb_wm_set_active().
+- Moved magic value set/clear from wm.c to windowstack.c where the structure is allocated and freed.
+- Check return value of dfb_wm_init_stack().
+
+libfusion
+- Fixed dead lock with references in single app mode. fusion_ref_zero_lock() no longer leaves the mutex locked.
+ Turned 'waiting' into 'locked' to keep size for binary compatibility.
+- Print warning for FUSION_CALL_RETURN if caller could not receive result due to a signal.
+- Clear object list (pointer to NULL) after cleanup for safety.
+- Added fusion_ref_set_name(), e.g. for better debug information on object references.
+
+Conversion
+- Added conversion to RGB555 and from AYUV (added to all conversion functions).
+
+SH7722 Driver
+- Added hardware JPEG encoding support, code moved into library, JPEG lock and buffer allocation in kernel
+
+VMWare Driver
+- Fixed copy'n'paste bug in virtual driver.
+
+Keyboard Input Driver
+- Only become active if FBDev or DevMem is used to avoid grabbing keyboard from X11 for example.
+
+DevMem System
+- Partially reverted cleanup of surface manager code. The workaround for the surface manager creation happening before
+ graphics driver initialization with possible dfb_gfxcard_reserve_memory() calls is still required.
+- Update surface manager code from X11 virtual physical testing pool.
+
+FBDev System
+- Update surface manager code from X11 virtual physical testing pool.
+
+X11 System
+- Take first matching visual for each format instead of last and handle RGB32 and ARGB separately (depth 24 and 32).
+- Fixed bytes per pixel and pitch calculation for fallback XCreateImage() when no XShm is available.
+- Output ARGB when depth is 32, support AYUV input (layer format).
+- XShm fixes and new virtual physical surface pool for development and testing.
+- Specifying 'video-length = <bytes>' option will create a shared memory block of that
+ size and initialize a surface pool with a surface manager supporting the new MuckOut() call.
+- Changed x11(Shm)Image pool to only allow allocations for supported visuals (no fallback
+ shared memory allocations) when the new option is used.
+- Return accelerator ID 51 for testing with the virtual acceleration (currently called vmware).
+- Make usage of XShmQueryVersion() to check for XShm support.
+- Return accelerator as set in config.
+- Set buffer lock offset in fallback mode to satisfy assumption in surface core.
+- Other cleanups and fixes.
+
+dfbdump tool
+- Show capacity in pool info (with "-p") and only dump shared or explicitly specified surfaces to avoid crashes.
+
+dfblayer tool
+- Add testing Lock() with read/write, read only or write only.
+
+
+1.2.0
+-----
+
+Overall
+- Minor fixes and cleanups, fixed compiler warnings etc.
+- Debugging messages and utility macros have been added.
+
+API | IDirectFB
+- Added sanity limit of 20480x20480 to CreateSurface().
+- Fixed input device enumeration and event collection for devices without caps.
+
+API | IDirectFBFont
+- Bug fixes in GetStringBreak(), thanks to Keith Mok!
+
+API | IDirectFBSurface
+- Don't build hierarchy of sub surfaces internally, if start-stop is not used (speeds up sub surface construct/destruct).
+- Optimized DrawLines() to use rectangle filling if all lines are horizontal/vertical.
+ This allows hardware acceleration to be used, e.g. in GTK+ using gdk_directfb_draw_segments() a lot with
+ only horizontal and vertical lines for widgets.
+
+API | IDirectFBVideoProvider
+- Fixed copy'n'paste(?) bug in SetStreamAttributes() argument.
+ The argument was DFBStreamDescription, but obviously should be DFBStreamAttributes.
+
+Pixel Formats
+- Added BGR555 as a new pixel format, thanks to GARDET Guillaume!
+
+Runtime Options
+- Added "[no-]cursor-updates" to never show a cursor, but still handle it.
+- New runtime option "thread-priority-scale=<100th>" to apply a scaling factor on thread type based priorities.
+
+Graphics Core
+- Removed dfb_gfxcard_sync() call from slave leaving procedure.
+- Added CCF_RENDEROPTS that needs to be set by the driver to allow acceleration when != DSRO_NONE.
+
+Input Core
+- Only suspend the input core during shutdown if it has been initialized already.
+- If a device has no caps at all, let it match with any caps being requested.
+
+Layer Core
+- Added CLRCF_FREEZE for dfb_layer_region_set_configuration() to set CLRSF_FROZEN.
+ Changes are not applied until dfb_layer_region_flip_update() is called.
+- Check if region surface is system only and avoid using CSAF_GPU_READ which would fail.
+- Keep a list of window stacks, added dfb_wm_close_all_stacks() called early during core shutdown.
+
+Software fallbacks
+- Dacc_premultiply_color_alpha() also needs Cacc.a to be set, thanks to Mandy Wu for spotting!
+
+libdirect
+- Important Fix: Actual realloc() was missing in runtime-disabled debug mode (default).
+- Remove check on element in direct_list_contains_element_EXPENSIVE() used for debugging.
+ When checking for existence in a list, avoid crashes due to already freed elements being passed
+ in as a pointer and checked for existence in a list.
+
+TI Davinci driver
+- Added scaling support to video layer using the Davinci Resizer.
+- Added local task buffer for preparing a list of commands and send at once (CPU load reduced).
+- Fixed timeout detection in DAVINCI_IOCTL_WAIT_LOW.
+- Fix kernel module Makefile for newer kernels.
+- Use FBIO_GET_TIMING to query screen size.
+- Build and install a library and header files.
+- Update allocations during Lock().
+- Allow external definition of DAVINCI_C64X_IDLE_MAX for c64xdump tool.
+- Added lots of debug messages to 2D acceleration.
+- Set StretchBlit() hook statically.
+- Replaced all hard coded addressing of 32MB DSP working area by DAVINCI_C64X_MEM.
+ DAVINCI_C64X_MEM is defined in <linux/c64x.h> to be 0x8e000000 if not defined from outside.
+- Moved call to set buffer start address to videoUpdateRegion().
+ Also made videoSetRegion() very lightweight, e.g. when only the surface is changed.
+- Commented out davinci_c64x_write_back_all() in EngineSync() which is still not working properly anyhow.
+
+CirrusLogic EP9xx
+- New driver, thanks to Brian Austin!
+
+DGIFF Font
+- Revival of the DGIFF (DirectFB Glyph Image File Format). Thanks to Vaclav Slavik!
+
+FBDev System
+- Ignore panning errors as before.
+
+X11 System
+- Fixed double wheel events by discarding ButtonUps.
+- Added missing check of layer pixel format based on conversion routines available.
+- Don't use XShm for offscreen surfaces, but always use Fusion SHM.
+
+Keyboard Input driver
+- Make driver usable without fbdev/vt just for the sake of a keymap.
+
+Linux Input driver
+- Thanks to Phil Endecott for adding F13 to F24 support!
+
+directfb-config
+- Teach directfb-config about SYSROOT and removes -L/usr/X11R6/lib, thanks to Marc Kleine-Budde!
+
+
+1.2.0-rc1
+---------
+
+API | IDirectFBSurface
+- Added IDirectFBSurface::SetSourceMask() - yes, a third blitting operand :)
+- Added DSBLIT_SRC_MASK_ALPHA to modulate source alpha channel with alpha channel from source mask.
+- Added DSBLIT_SRC_MASK_COLOR to modulate source color channels with color channels from source mask.
+- Added SetSourceMask() with a surface argument plus x/y offset and flags.
+- Added DFBSurfaceMaskFlags with DSMF_STENCIL to make x/y offset absolute and always start at a
+ fixed position in the mask, otherwise x/y from the Blit() are added.
+- Allow second string (prefix) in Dump() to be NULL to dump without numbering.
+- Added FillTriangles().
+- Changed SetMatrix() to take a 3x3 matrix.
+
+API | IDirectFBEventBuffer
+- Don't allow posting of universal events bigger than DFBEvent.
+
+API | IDirectFBImageProvider
+- Don't fail if PeekData() is not supported, same behaviour as video providers...
+
+API | IDirectFBVideoProvider
+- New events and SetAudioDelay(). Thanks to Daniel J Laird!
+- Applied patch from Daniel Laird adding buffer threshold control/notifications. Thanks!
+
+Runtime Options
+- Added option "[no-]software-warn" to show warnings when doing/dropping software operations.
+ No longer print a warning when software fallbacks are disabled. Use the new option!
+- Added "[no-]fatal-break", d_debug_at() and direct_debug_at_always().
+- Added option "surface-shmpool-size=<kb>" to set the size of the shared memory pool
+ used for shared system memory surfaces.
+- Added options to set default priority, policy and stack size for threads.
+- Don't enable mouse motion compression at input drivers by default.
+- New runtime option "quiet=<type>" to disable only certain message types.
+ Thanks to Niels Roest!
+
+Build Options
+- Added "--without-software" to save 100k+ binary size if really not needed.
+- Fixed typo in X11 detection.
+
+libdirect
+- Added extensible result codes and made other fixes to ban <directfb.h> from libdirect and others.
+- Made DirectResult the primary type for result codes.
+- Added D_RESULT_TYPE_BASE, D_RESULT_TYPE_MAX and D_RESULT_TYPE_IS for extended result codes.
+- Changed most of DFB_ codes to be assigned the corresponding DR_ code.
+- Three DirectFB specific codes remain, after DFB__RESULT_OFFSET defined as D_RESULT_TYPE_BASE('D','F','B').
+- Added DirectEnumerationResult.
+- Further cleanup of debugging code. New minimal debug mode
+ to support D_DEBUG_AT, D_ASSERT and D_ASSUME when debug support is
+ disabled, but DIRECT_ENABLE_DEBUG or DIRECT_FORCE_DEBUG have been
+ defined. No domain filters, just formatted output (all or nothing).
+- Fixed 'log-file' and 'log-udp' option.
+- Strip off "lt-" at the beginning of a program name (for config file).
+- Fixed allocation debugging always being used when available.
+
+libfusion
+- Check whether mount point is writable in find_tmpfs().
+- Implemented lock counter in single app build.
+- Added fusion_world_get_fork_action() and fusion_world_set_fork_callback().
+
+Graphics Core
+- Added mask of clipped functions to internal CardCapabilities (gfx drivers).
+ Instead of providing clipping for none or for all functions (CCF_CLIPPING) a driver
+ can set individual functions to be hardware clipped, e.g. DFXL_STRETCHBLIT where
+ clipping is crucial.
+- Added minimum glyph alignment of 8 bytes.
+- Fixed state handling bug causing wrong acceleration masks.
+- Added special graphics state debug messages in domain "Core/GfxState".
+- Added dfb_line_segment_intersect().
+ Gets the intersection point between a line and segment within the given segment.
+- Implemented (real) triangle clipping.
+- Started implementing affine transformations in software.
+- Also fixed incorrect clipping when DSRO_MATRIX is set.
+- Added support for affine transformations to dfb_gfxcard_draw_string().
+ Actually this is done by using gStretchBlit.
+ Direct glyph transformation (done by the font provider) would be better.
+
+Input Core
+- Added dfb_input_event_type_name() and event debug at Core/Input/Evt.
+- Fix crashes during shutdown by suspending the input core before shutting down anything.
+
+Layer Core
+- Only sync with accelerator in dfb_layer_region_flip_update() when DSFLIP_PIPELINE is not set.
+
+Surface Core
+- Support NV16 in dfb_surface_dump() and so IDirectFBSurface::Dump().
+- Added size field to description for pools with a defined maximum.
+- Added CORE_SURFACE_BUFFER_LOCK_ASSERT(lock) and CORE_SURFACE_ALLOCATION_ASSERT(lock).
+ These two macros are consisting of assertions for all they could check.
+
+Software Renderer
+- Print blend funcs in warning caused by 'no-software'.
+- Allow DSBLIT_SRC_PREMULTIPLY while scaling from indexed to alpha formats.
+- Scaling an image which has alpha values != 255 (non-premultiplied) now produces
+ premultiplied output (smooth scaling only). Support for non-indexed sources still
+ needs to be added.
+
+nVidia driver
+- Implemented affine transformations.
+- In case of unsupported arch (NV40), skip objects and fifo setup.
+- Cleanup overlay code. Enbale using NV12 (requires NV30 or newer).
+- Fixed buggy vertices formation in TextureTriangles.
+
+Radeon driver
+- Implemented affine transformation (all cards) and source masking (R100/R200 only).
+- Implemented antialiasing (R100 and R200 only).
+- Fixed conversion+blend with A8 destination.
+- Use LINE primitive for transformed DrawRectangle.
+- Use POINT primitive for 1x1 rectangles.
+- Implemented DSPF_DSTALPHA/INVDSTALPHA for A8.
+- Implemented DSBLIT_SRC_PREMULTIPLY (R100/R200 only).
+- Emit transformed rectangle using TRIANGLE_LIST instead of TRIANGLE_FAN.
+
+SH7722 driver
+- JPEG decoding, supports NV12 and NV16 (4:2:0 and 4:2:2 images)
+- Use VEU for scaling and format conversion of JPEG decoded data (line buffer mode).
+ Supports 4:2:0 and 4:2:2 to NV12, NV16, RGB16, RGB24, RGB32.
+- Implemented LUT8 support for the third layer. Added lock for BEU code called for different layers.
+- Automatic parent input system selection and other fixes, allowing to run df_fire on third and df_dok
+ with alpha channel on first layer.
+- Implemented XOR for drawing and blitting.
+- Implemented DSBLIT_SRC_MASK_ALPHA, cleaned up and optimized state handling.
+- Fixed byte swapping issues, e.g. no more swapping between BEU and LCDC, correct swapping of BEU input
+ depending on number of bytes per pixel.
+
+TI Davinci driver
+- More acceleration (StretchBlit for ARGB, ARGB/RGB32->RGB16 conversion and FillRectangle() blending).
+- Added colorizing support to blend functions. No additional cycles in DSP :)
+- Added properly clipped (phases!) StretchBlit() for ARGB and RGB32 without any blitting flags.
+- Added ARGB/RGB32 conversion to RGB16 without any flags (currently writing alpha data to scratch area).
+- Real IRQ based synchronization, optimization for opaque filled rectangles.
+- Fixed color calculation for filling/drawing to UYVY.
+- Allow explicit driver usage without probing by setting accelerator id to 6400.
+- Suppress errors of custom ioctls for now.
+- Added small tool c64xdump for showing DSP status (queues, load).
+- Further DSP interface updates and cleanups.
+- Work around missing alpha plane pitch setting (when differing from RGB plane).
+ The DSP function needs to be extended to fix it properly.
+- Patch from Eric Nelson to support HD OSD planes.
+
+Linux Input driver
+- Set DIEF_FOLLOW on all events known not to be the last.
+
+FBDev system module
+- Don't pan at all when it's not supported by the device.
+- Important fixes for mode switching, restructuring and cleanup.
+ Still not working again is support for virtual resolutions with panning,
+ not double/triple buffering which works.
+
+SDL system module
+- Fix mode switching/surface creation, having working accelerated SDL backend again.
+
+X11 system module
+- Bring in line with 1.0 features, expose handler, format conversion, SHM, SMP 8-)
+- Fixed threading issues using XLock/UnlockDisplay().
+- Use XNextEvent() again instead of usleep() based polling after fixes.
+ Pull up to 100 events per round, i.e. until accumulated motion events
+ are flushed and thread exit status is checked.
+- Send ClientMessage to wake up thread from blocking XNextEvent().
+- Reduced invisible 16x16 cursor to 1x1, minor cleanups.
+
+Default WM
+- Combine multiple x and/or y motion events before sending events or updating the cursor.
+ This is a better way as opposed to have the driver do the work,
+ otherwise there was too much cursor acceleration in such a case.
+
+JPEG Image Provider
+- Implemented directly loading to NV16 surfaces staying in YCbCr space.
+
+dfbdump tool
+- Added option "-ds" for dumping surfaces.
+- Show buffers' lock status again.
+
+dfbinfo tool
+- Show min/max keycodes.
+
+dfbinspector tool
+- Added dfbinspector as a small C app (graphics driver capability probing).
+
+gendoc tool
+- Lots of improvements to parser and generated documentation.
+
+
+1.1.1
+-----
+
+API
+- Added 3x2 transformation for all drawing and blitting.
+- Added render option DSRO_MATRIX and IDirectFBSurface::SetMatrix().
+ The matrix consists of 3x2 fixed point 16.16 values. The order in the array is from left to right and from top to bottom.
+ All drawing and blitting will be transformed:
+ X' = X * v0 + Y * v1 + v2
+ Y' = X * v3 + Y * v4 + v5
+- Added DSRO_ANTIALIAS to enable anti-aliasing for edges, lines...
+
+API | IDirectFB
+- Added DSCAPS_SHARED for creating shared surfaces, not using local (malloced) memory pool.
+
+API | IDirectFBDisplayLayer
+- Added DFBDisplayLayerSourceCaps featuring DDLSCAPS_SURFACE.
+- Added resource_id to DFBWindowDescription and DWDESC_RESOURCE_ID to
+ specify the resource id to use for window surface creation, rather
+ than using the window id for that.
+
+API | IDirectFBFont
+- Fixed missing translation of characters to indices in GetKerning().
+
+API | IDirectFBSurface
+- Added DSBLIT_COLORKEY_PROTECT to prohibit writing the color that the destination surface uses as a source color key.
+- Fixed GetFramebufferOffset() by adding CSAF_GPU_READ when Lock() is called on a DSCAPS_VIDEOONLY surface.
+
+API | IDirectFBVideoProvider
+- Added DVPET_FINISHED, sent when playback is finished.
+- Added DVPET_SURFACECHANGE, sent when size/format change.
+
+Runtime Options
+- Added "[no-]autoflip-window" to automatically flip non-flipping windowed primary surfaces.
+ Previously, the default was to automatically Flip() in a thread. Now it's not.
+- Added "[no-]font-premult" for premultiplication in case of ARGB glyph images. Default is enabled.
+- Added "[no-]linux-input-grab" that will control whether linux_input will grab the devices. This is
+ useful in cases where multiple processes want to receive input events.
+- Added "linux-input-devices" and "tslib-devices" options.
+- Added "no-init-layer [= <id>]" option to disable initialization of layers.
+ Primary layer is initialized by default, use this option to avoid that.
+- Added "[no-]thread-block-signals".
+- Fix background color index support.
+- Fixed missing color key flags when only index is set via config file.
+- Reimplemented "thrifty-surface-buffers".
+
+Build Options
+- Added "--with-smooth-scaling", turned off by default to avoid 100k+ binary size increase.
+
+Display Core
+- Implemented defered region realization by adding CLRSF_FROZEN which is set initially on every region that is created.
+- As long as CLRSF_FROZEN is set, all SetRegion() calls to the driver (and buffer allocations due to it) are simply discarded.
+- Only when dfb_layer_region_flip_update() is called and the region is enabled and active, the flag is removed and the region
+ is either realized or the config is just set if it was already/still realized.
+- Added GetMixerState() to screen driver API and dfb_screen_get_layer_dimension() to be used
+ instead of the deprecated dfb_screen_get_screen_size().
+- Added capabilities for display layer sources. Check source capabilities if present when determining
+ whether to allocate a surface for a layer region. This allows to add layer sources in addition to DLSID_SURFACE
+ that have a surface without using DLCAPS_SURFACE which enables surfaces for all sources.
+- Deallocate layer region surface buffers if the region is being unrealized.
+- Made DisplayLayerFuncs const when being passed or used.
+- When switching to an indexed layer format, use dfb_surface_init_palette() if no palette exists already.
+
+Graphics Core
+- Added dfb_gfxcard_get_driver_data().
+- If alpha is zero, still check for RGB when looking up the best match in a palette.
+- When resetting the 'checked' flags also reset the same in 'accel' flags. Fixes accidental hw usage.
+- Skip prechecking clip in FillRectangles() if DSRO_MATRIX is used. Other functions are also affected, but not fixed yet.
+
+Surface Core
+- Fixes to CPU/GPU read/write access interlock management.
+- Added dfb_surface_buffer_dump() implementation.
+- Fixed lock+reconfig bug: fail when trying to reconfig a locked surface.
+- Added convenience functions dfb_surface_read/write_buffer() and dfb_surface_dump_buffer().
+- Moved surface palette creation from dfb_surface_create() into new dfb_surface_init_palette().
+- Added CSALF_PREALLOCATED. The "thrifty-surface-buffers" option is implemented by iterating through all allocations
+ at the end of an update_allocation() and deallocate all other allocations, unless they have the CSALF_PREALLOCATED flag.
+ In the latter case it would not be a benefit, but the disadvantage of losing an allocation that is still up to date and
+ would probably be faster (CPU read) than others. The 'preallocated' surface pool sets CSALF_PREALLOCATED upon allocation.
+- Another flag CSALF_VOLATILE has been introduced. In case of a write access to one allocation, any other
+ allocation is deallocated if it has the flag. This is independent of the "thrifty-surface-buffers" option.
+ The 'local', 'shared' and 'preallocated' surface pools set CSALF_VOLATILE upon allocation.
+
+Window Core
+- Refuse to set non-shared surfaces as a background image for a window stack.
+
+Software Render
+- Added LUT8 -> ARGB4444 smooth scaling.
+- Made smooth scaling support source rectangles not starting at 0,0.
+- Fast RGB32/ARGB to RGB16 conversion (little endian).
+
+Utilities
+- Added dfb_convert_to_a4() and added RGB32/ARGB support to dfb_convert_to_rgb16().
+- Added dfb_convert_to_uyvy() and dfb_convert_to_yuy2(), only copy supported yet.
+
+libdirect
+- Added direct_cleanup_handler_{add/remove} to install a cleanup handler called upon exit.
+- Added direct_page_align().
+- Added mutex and condition for thread initialization to eliminate sched_yield()s.
+- Improved debug messages in thread code. Added "Direct/Thread/Init" domain to watch creation, wait,
+ startup, initialization, notification ...
+- Initialize libdirect in DirectFBCreate() already.
+- Added new URI fd:/<fileno>. Used to create a DirectStream from an already opened file descriptor.
+- Added direct_log_lock()/unlock() for ensuring multiple prints are not mixed with others.
+- Use direct_log_lock()/unlock() to ensure stack traces are one contiguous block.
+- Added sanity checks in build header if debug support is disabled.
+ If DIRECT_ENABLE_DEBUG is defined, silently undefine it.
+ If DIRECT_FORCE_DEBUG is define, show a warning and undefine it.
+- Do not use PAGE_SIZE at all on Linux, thanks to Guillem Jover.
+- Do not leak private labraries for dynamic linking, thanks to Guillem Jover.
+
+libdirect (network support)
+- Join multicast group if family is AF_INET and IN_MULTICAST is true.
+- Use bind() instead of connect() for receiving UDP data.
+- Use SO_REUSEADDR in case of multicast.
+
+libfusion
+- Print an alert message when using builtin implementation of fusion.
+- Moved FUSION_ID_MASTER definition to types.h.
+- Fix missing fusion_shm_enum_pools() for single app core.
+- Added fusion_reactor_set_name() to change the name of a reactor after its creation.
+- Implemented fusion_reactor_set_dispatch_callback().
+- (Pre)Parse shmfile group in fusion_config_set().
+- Added "ramfs" to possible types during mount point probing.
+
+libfusion (builtin multi)
+- Provide a REAL implementation of fusion_skirmish_wait/notify().
+- Always free resources allocated in builtin implementation of fusion_skirmish_wait(), either if the skirmish was destroyed.
+- Check for dead local references in fusion_ref_zero_lock()/trylock().
+- Return DFB_NOSHAREDMEMORY if requested allocation exceeds the maximum address of the shm pool.
+- When fusion_skirmish_wait() gets called with a timeout value, check whether the timeout expired *before* sleeping.
+- Use fusion_skirmish_wait() instead of usleep() in fusion_ref_zerolock().
+- In fusion_ref_zerolock(): check local references before entering the loop.
+- Check for dead property purchaser.
+- Honor FCEF_ONEWAY in fusion_call_execute(). Execute ref watcher with the FCEF_ONEWAY flag.
+- Fail in fusion_skirmish_notify() if skirmish was destroyed. Sleep for at least 10ms in fusion_skirmish_prevail().
+- Enable sleeping in fusion_property_lease()/purchase().
+- Moved socket directory from "/tmp/fusion.#" to "/tmp/.fusion-#".
+- Change socket ownership according to shmfile group.
+- Speed up fusion_call_execute(FCEF_ONEWAY) by not creating a new socket.
+- chown() the sockets directory according to "shmfile-group".
+
+Voodoo
+- Implemented some more requestor/dispatcher methods.
+- Fixed alignment issues by applying VOODOO_MSG_ALIGN() on each message block.
+
+Graphics drivers
+- Port ati128, cle266, cyber5k, i810, i830, neomagic, nsc, savage, sis315, tdfx, unichrome to the new surface core. Only compile tested.
+
+Radeon driver
+- Instead of emitting vertices instantly, store them in a buffer that is submitted on EmitCommands() (this way DrawString() is about 45% faster with my 9200SE).
+- R100/R200: Dropped some blend functions when destination format is A8 ((INV)DEST alpha never worked because A8 isn't really supported as dest format).
+- R300: Implemented BLEND_COLORALPHA, COLORIZE, PREMULTCOLOR with some limitations (source must be premultiplied and COLORALPHA+ALPHABLEND isn't supported at all).
+- Sleep for 10 usec in WaitVSync loop.
+
+nVidia driver
+- Fixed texture uploading: use the current surface lock instead of locking again.
+- Replaced state->modified by state->mod_hw.
+- Disabled some features not working with the new surface core.
+- Sleep for 10 usec in WaitVSync loop.
+
+Renesas SH7722 driver
+- Added driver for SH7722 SoC from Renesas Solutions Corp.
+- Supports DrawString(), FillRectangle(), DrawRectangle(), FillTriangle(), DrawLine(), FillSpans(), Blit() and StretchBlit().
+- Supports DSDRAW_BLEND, DSBLIT_BLEND_ALPHACHANNEL, DSBLIT_BLEND_COLORALPHA, DSBLIT_SRC_COLORKEY, DSBLIT_ROTATE180 and DSBLIT_COLORIZE.
+- Use hardware 3x2 matrix to implement DSRO_MATRIX for all blitting and most drawing.
+- Transform coordinates in driver for DrawLine() and DrawRectangle().
+- Implemented DSRO_ANTIALIAS for all drawing operations.
+- The hardware provides "anti-aliased" lines by drawing a line with doubled pixel width (minor axis). This should be drawn with
+ a transparency factor. Finally the original line is drawn on top of this.
+- For filled rectangles and triangles, only the double width line is drawn and then the shape is filled.
+
+TI Davinci
+- Added TI Davinci driver.
+- Supports OSD and Video with positioning, color key, opacity, alpha channel and vsync.
+- The driver uses the devmem system and opens all frame buffer devices itself.
+ This is required for extended ioctls like setting the OSD position, but also to
+ support alpha channels which are stored in a different frame buffer device. In
+ case of ARGB for the OSD, the alpha channel (3 bit!) is dithered during conversion.
+- Implemented surface pools for OSD and Video layer. This enables direct usage
+ of the frame buffers in case of RGB16 for OSD and UYVY for Video.
+- Added patch for davincifb to support triple buffering on OSD.
+- Hardware acceleration using the DSP with a special firmware and kernel module.
+- Driver still runs without DSP module, but unaccelerated.
+- Supports DrawString(), FillRectangle(), FillSpans() and Blit().
+- Supports DSBLIT_BLEND_ALPHACHANNEL, DSBLIT_BLEND_COLORALPHA, DSBLIT_SRC_COLORKEY, DSBLIT_SRC_PREMULTIPLY and DSBLIT_SRC_PREMULTCOLOR.
+- Supports RGB16, RGB32 and UYVY for simple filling and blitting with color keying.
+- Supports ARGB for blending and premultiplication.
+- No support for different source and destination formats.
+- No support for color keying in conjunction with blending.
+- DrawString() is not colorized yet, but enabled for testing (all text is white).
+
+TI OMAP driver
+- Added TI OMAP gfxdriver.
+- No video layer or other fancy stuff yet. Enough to run XDirectFB on the Nokia N800 though.
+
+Unichrome driver
+- Fix a pointer buglet. The pfetch pointer was compared/set instead of the value to which it pointed.
+
+Keyboard (TTY) input driver
+- Sleep 2ms when read returns 0, to avoid CPU hogging. Thanks to Luis Mondesi lemsx1 gmail.
+
+Serial input driver
+- Fixed illness in processing read data in serial driver and fixed error path.
+
+Default WM
+- Added WM key combo <Meta>-<F12> to redraw the whole window stack.
+
+Unique WM
+- Fixed wheel direction.
+- Commented out auto center.
+
+DFIFF image provider
+- Make DFIFF fast for the standard case again (60->483 MPixel/sec).
+- Added support for sub surfaces with proper clipping/offset.
+- Check for unscaled and unclipped loading without format conversion and just use dfb_surface_write_buffer().
+
+FT2 font module
+- Optimized pixel premultiplication.
+
+FBDev system module
+- Fixed SetMode / Panning Bug, thanks to Kieran Bingham!
+- Fixed allocation size for planar formats in FBDev Surface Pool.
+- Add missing libsysfs when statically linking, thanks to Guillem Jover.
+
+DevMem system module
+- Implement surface pool using surface manager.
+- Added local/shared system data.
+- Added configure.in and Makefile.am parts.
+
+Linux Input driver
+- Ignore input devices matching the TSLIB_TSDEVICE environment variable.
+
+tslib driver
+- Check the device in $TSLIB_TSDEVICE when guessing (no option given).
+
+dfbdump tool
+- Added "-dl" or "--dumplayer" for dumping the front buffer of each active contexts' primary region.
+
+dfbfx tool
+- Based on "fx", with command line options, documented code...
+- Simulates blitting flags given a source and destination ARGB pixel.
+
+
+1.1.0
+-----
+
+API
+- Extend list of custom key definitions: DIKS_CUSTOM<0-99>
+
+API | IDirectFB
+- Fix code that controls single/double buffer window creation for primary surfaces in windowed mode. If
+ DSCAPS_FLIPPING is set, it uses one buffer which already requires a Flip due to the window. Only if
+ DOUBLE is set explicitly, create two buffers.
+
+API | IDirectFBDisplayLayer
+- Added IDirectFBDisplayLayer::SetRotation().
+
+API | IDirectFBFont
+- Added DFFA_FIXEDCLIP that can be used in addition to fixed advance
+ and cuts off glyphs if they are wider than that.
+
+API | IDirectFBImageProvider
+- Added DFB_INCOMPLETE and return it from image providers
+ if rendering has been aborted by the render callback.
+
+API | IDirectFBPalette
+- Added IDirectFBPalette::SetEntriesYUV(), GetEntriesYUV() and FindBestMatchYUV().
+
+API | IDirectFBScreen
+- HD extensions, thanks to Daniel J Laird!
+
+API | IDirectFBSurface
+- Added IDirectFBSurface::SetRenderOptions() as a new state element, but not
+ mandatory for graphics drivers. At the moment it's used by the software
+ driver to choose smooth or standard scaling.
+- Made DisableAcceleration( DFXL_DRAWSTRING ) work.
+- Each sub surface interface has a reference to its parent and a list of its children.
+- Added DSBLIT_ROTATE180 with a basic software implementation.
+- Added universal resource id (unsigned long) that belongs to each surface,
+ e.g. the layer id or window id. General purpose surfaces can be given an
+ id by using the new flag DSDESC_RESOURCE_ID and setting the resource_id field.
+
+API | IDirectFBVideoProvider
+- Thanks to Daniel J Laird for Video Provider Events!
+- Extended video provider capabilities, thanks to Daniel J Laird!
+
+API | IDirectFBWindow
+- Added IDirectFBWindow::Bind()/Unbind().
+- Added DWDESC_OPTIONS and DWDESC_STACKING to give initial values in the
+ DFBWindowDescription using the new fields 'options' and 'stacking'.
+- Added DWDESC_PARENT to DFBWindowDescriptionFlags and 'parent_id' to
+ DFBWindowDescription. This can be used to associate a window to another,
+ but it's up to the WM to implement it.
+- Added IDirectFBWindow::SetKeySelection() that selects a mode for filtering
+ keys while being focused. The selection defines whether all, none or a
+ specific set (list) of keys is selected.
+- Added DFBWindowKeySelection featuring DWKS_ALL, DWKS_NONE and DWKS_LIST.
+- Added IDirectFBWindow::GrabUnselectedKeys() and UngrabUnselectedKeys()
+ to have a key collector window receiving all keys that the focused
+ window did not select.
+- Added DFBWindowEventFlags featuring DWEF_RETURNED so far, which means that
+ the event has been returned, i.e. has not been consumed by the original
+ recipient. The DFBWindowEvent field 'flags' has also been added.
+- Added advanced window geometry for positioning and scaling of windows
+ relative to their own bounds, with ability derive from parent geometry.
+- DFBWindowGeometryMode: DWGM_DEFAULT, DWGM_FOLLOW, DWGM_RECTANGLE, DWGM_LOCATION.
+ DFBWindowGeometry: mode, rectangle, location.
+- IDirectFBWindow::SetSrcGeometry() and IDirectFBWindow::SetDstGeometry().
+- Added generic dfb_window_set_config() for simplifying core code and moving
+ config handling into interfaces.
+- Added DWOP_KEEP_ABOVE and DWOP_KEEP_UNDER.
+
+Runtime Options
+- Achtung! DirectFB is using sysconfdir now! E.g. use /usr/local/etc/directfbrc.
+- New layer configuration system, staying compatible with older options:
+- init-layer=<id> chooses layer with ID to configure (following layer- options apply)
+- layer-size=<width>x<height> sets the pixel resolution
+- layer-format=<pixelformat> sets the pixel format
+- layer-depth=<pixeldepth> sets the pixel depth
+- layer-buffer-mode=(auto|triple|backvideo|backsystem|frontonly|windows)
+- layer-bg-none disables background clear
+- layer-bg-color=AARRGGBB sets a background color (hex)
+- layer-bg-image=<filename> sets a background image
+- layer-bg-tile=<filename> sets a tiled background image
+- layer-src-key=AARRGGBB enables color keying (hex)
+- New option "surface-sentinel" to enable surface sentinels at the end of chunks in video memory.
+- Added "smooth-upscale" and "smooth-downscale" options to enable smooth scaling by default.
+- Added "[no-]madv-remove" to get around the auto detection.
+- Added layer palette initialization via "layer-palette-<n> = <hexcolor>" option.
+- Added option "layer-bg-color-index = n".
+- Added option "layer-rotate = <degree>" with 0 and 180 supported.
+- Added option "layer-src-key-index".
+
+Pixel formats
+- Added DSPF_RGB444 and DSPF_RGB555, thanks to Daniel J Laird!
+
+Core
+- Use a Skirmish to synchronize slaves with the master's post core initialization.
+ The new function dfb_core_activate() will allow other processes to join.
+- Explicit shutdown order of core parts and pools.
+
+Graphics Core
+- API break! Drivers must use "state->mod_hw" instead of "state->modified"!
+- Validate clip in dfb_state_update() also if destination
+ was just set manually, not via dfb_state_set_destination().
+- Added YUV palette support. CorePalette has a second array for YUV entries.
+ Both arrays are kept synchronized. Drivers can choose.
+- Implemented StartDrawing/StopDrawing() for states. When a surface is being rendered to, its graphics
+ state is set to DRAWING. Upon Flip() the state is flushed. The new mechanism needs to be enabled via
+ "startstop" option. StartDrawing/StopDrawing() can be implemented by the graphics driver. e.g. to keep
+ track dirty surfaces and defer flipping if it would reveal other's drawing.
+- Added multifunctional color configuration function dfb_state_set_color_or_index().
+ Always tries to set both color and index. If color index is -1, color is used and
+ searched in palette of destination surface if present. If color index is valid the
+ color is looked up in palette if present.
+- Added dfb_gfx_back_to_front_copy_180().
+- Added DFBColorKey which is binary compatible with DFBColor for RGB, but
+ has an 8 bit color index instead of the alpha value.
+
+Layer Core
+- Use DFBColorKey instead of DFBColor in the CoreLayerRegionConfig.
+- Fix potential dead lock in layer context initialization.
+- Fix potential dead lock in dfb_layer_context_get_primary_region().
+
+Surface Core
+- NEW SURFACE CORE WORK IN PROGRESS (really usable, but not everything supported yet). Check TODO!
+- dfb_surface_reformat() no longer fails immediatly if the surface is locked,
+ instead it waits for 3 loops before doing it.
+- If no alignment is specified (0), default to 8 bytes offset and pitch alignment.
+ To disable alignment, simply set to 1.
+
+Window Core
+- API break! Replaced dfb_wm_start_desktop() by dfb_wm_post_init(). Removed StartDesktop which had no
+ context pointers from WM API and added PostInit with proper context pointers.
+- Simplified internal dfb_layer_context_create_window() and dfb_window_create()
+ and replaced dfb_window_*grab*() by dfb_window_change_grab().
+
+libdirect
+- API break! Changed DirectHash's u32 key to be unsigned long. This allows to use pointers.
+- Added direct_thread_detach() and direct_thread_is_detached().
+- Use pthread cleanup to free the DirectThread structure etc.
+- Added direct_thread_get_tid().
+- Avoid "unused warning" if debug domains are declared, but not used.
+- Fix 64 bit symbol address parsing in trace code.
+- Fix missing target directory for nm-n files.
+- Readded "%.nm" as an alternative to "nm-n.%".
+- Added direct_sched_yield().
+- Open log file with mode 0664. Automatically flush stderr.
+- Added direct_list_foreach_reverse().
+- Added direct_serial_check() returning true if the target serial is not higher.
+- Flush stdout and stderr before showing the signal handler message.
+- Rearrange locks in debug message code to avoid dead locks in certain circumstances.
+
+libfusion
+- API break! Changed call handler function type. The return value defines the library's behaviour
+ after exiting from the handler. To return a value immediately, write to *ret_val and return FCHR_RETURN.
+ If you want to make a call later on to fusion_call_return() yourself, use FCHR_RETAIN.
+- The new serial value allows to have more than one call pending while calls can
+ be returned in any order. The caller is still blocked on its single call, of course.
+- API break! Added "ctx" argument to fusion_object_pool_create() and FusionObjectDestructor.
+- Close file descriptor of shared memory files and be happy with just the
+ static mmap() and the filename for using truncate() instead of ftruncate().
+- Reinitialize entries in static pool array properly.
+- Added fusion_hash_set_autofree() to enable/disable automatic freeing of values and/or keys.
+- Use FusionHash for arena fields.
+- Fix general dead lock problem with reactors by using read/write locks.
+- Fix zero FusionID in forked process by entering the world after reopening it.
+- Added fusion_dispatcher_tid().
+- Fix lock order in fusion_shm_pool_destroy().
+- Added fusion_reactor_set_lock_only() which does not lock and use it in fusion_object_set_lock()
+ as this is called during object initialization.
+- Added FUSION_SKIRMISH_ASSERT macro for debug mode
+ failing if the skirmish is not locked by the current thread.
+- Added fusion_reactor_set_dispatch_callback() with a test.
+- Added fusion_reactor_attach/dispatch_channel() with the older calls using channel zero.
+- Added fusion_skirmish_wait() and fusion_skirmish_notify(). When you hold the lock you can wait until
+ you get notified, where others can get the lock while you're waiting. At the moment it requires the
+ notifier to acquire the lock.
+- Added timeout to fusion_skirmish_wait(), 0 means unlimited.
+- Added a new Fusion/IPC implementation using standard system calls:
+- Skirmish gets implemented by using sched_yield()+usleep, exactly like linuxthreads does with pthread mutexes,
+ but it's also capable of automatically unlocking whether the owner process died without doing it.
+- Property works like Skirmish, but it doesn't sleep and it doesn't check for a dead owner.
+- Dispatching and co. make use of raw unix sockets: there is a local address specific to each fusionee
+ (/tmp/fusion.@WORLD_INDEX@/@HEX_FUSION_ID@) and each call (/tmp/fusion.@WORLD_INDEX@/call.@HEX_CALL_ID@.@HEX_CALL_SERIAL@),
+ and messages are sent directly from the generator to the socket of the listeners.
+ From a network point of view, this is similar to UDP Multicast (e.g. conference or meeting).
+- The new implementation gets build when --enable-bulti is specified but no usable linux/fusion.h was found
+ (however you can edit fusion/build.h to force building it).
+- Raise max number of shm pools to 16.
+
+Software Rendering
+- Fixed RGB24 to RGB16 conversion.
+- Fix ARGB on RGB16 blending. Use Duff's Device and optimize for 0% and 100% opaque.
+- Fix hi/lo mixup for big/little endian in 32 bit wise 16 bit color keying code.
+- Added smooth up/down scaling for different formats.
+- Fix 64bit implementations of RGB32 source and destination color keying.
+
+DFIFF Image provider
+- Use a preallocated surface to render the image
+ (this should fix support for destinations that are premultiplied, separated, and co.).
+
+PNG Image provider
+- Avoid abort() caused by libpng and return an error instead.
+- Plug a memory leak in the PNG image provider. Thanks to Eugene Everson.
+- Fixes for grayscale PNGs.
+
+Mach64 driver
+- Ported to new surface core.
+- Added RGB444 and RGB555 support.
+
+Matrox driver
+- Ported to new surface core.
+- Added RGB444 and RGB555 support.
+- Eliminate libsysfs dependency from i2c detection.
+- Reset besvcnt to 0 prior to disabling the backend scaler.
+- Sometimes the BES would not turn off with just BESCTL. It seems besvcnt
+ not being programmed to zero has something to do with it since resetting
+ BESGLOBCTL before BESCTL seems to help.
+
+nVidia driver
+- Added support for RGB555.
+- Fixed support for premultiplied surfaces.
+- Dropped down blits from system memory on the NV20 (crashes on Xbox).
+- Optimizations and cleanup.
+
+Radeon driver
+- Ported to new surface core.
+- Support RGB555 and RGB444.
+- RGB555 support on Overlay and CRTC2.
+- Removed limit of 8x8 surfaces:
+ apparently it comes from the Rage128 driver but it doesn't apply to Radeon(s).
+- Implemented DSBLIT_ROTATE180.
+
+Unichrome driver
+- Fix blitting of planar surfaces (YV12/I420) when a source rectangle is used
+ or the source and destination surfaces are different sizes.
+
+Linux Input driver
+- Fix evdev ioctl() parameters.
+- Only use FBDev system module data in linux input driver if system is built.
+- Don't bail out with other system modules if LINUX_INPUT_USE_FBDEV is not set.
+
+FBDev System module
+- Add source rectangle support to fbdev layer.
+- Check fbdev pan/wrap capabilities for double/triple buffering.
+- Fix fbdev_ioctl_call_handler() return value.
+- Fix transfer of errno from master to slaves when doing ioctls.
+- Do FBIOPAN_DISPLAY ioctls directly.
+
+DevMem System module
+- Added generic /dev/mem based system module.
+- There's no screen or layer registered, a graphics driver is required.
+- Added some new runtime options for the new system module.
+- video-phys=<hexaddress> sets the physical start of video memory.
+- video-length=<bytes> sets the length of video memory.
+- mmio-phys=<hexaddress> sets the physical start of MMIO area.
+- mmio-length=<bytes> sets the length of MMIO area.
+- accelerator=<id> sets the accelerator ID for selecting the graphics driver.
+
+SDL System module
+- Support different DirectFB formats on 32 and 16 bit displays.
+- Disable SDL backend by default.
+
+X11 System module
+- Support different DirectFB formats on 32 and 16 bit displays.
+- Use an ShmImage with twice the height of the output. Alternate between bottom and top image and
+ do XSync() BEFORE doing the next XShmPutImage(). Only call XShmPutImage() for the updated region.
+- Takes advantage of SMP now.
+- Added true keymap support to X11 input driver. Read the X11 keymap entries properly and translate to
+ identifier and symbols. Only send key code in events. X KeySym to DFBInputDeviceKeySymbol translation
+ might not be complete for everyone.
+- Provide the original timestamps from the X events.
+- Use DIEF_FOLLOW for x/y motion.
+- Added call to XFlush() after XShmPutImage() boosting df_andi from 100 to 130 FPS
+ and making window stack updates really smooth and no longer distorted.
+- Use preallocated shared memory for calls, the layer context lock allows this.
+- Support non-SHM connections.
+- Fall back to non-shm if XShmAttach() or XShmPutImage() fail after XShmQuesryExtension() returned success.
+- Handle expose events.
+- Enable X11 System Module by default.
+
+Default WM module
+- Pan the layer to follow the mouse cursor (aka. virtual resolution).
+- Actually fail if a parent window for the newly created one was specified (not supported).
+
+dfbdump tool
+- List buffers in video memory if "-s" is passed.
+
+dfblayer tool
+- Added option "-R <degree>".
+
+directfb-csource tool
+- Add --raw option to directfb-csource to allow encoding data files in headers
+
+
+1.0.0
+-----
+
+libfusion
+- Use local memory for FusionVector (D_MALLOC instead of SHMALLOC) if pool is NULL in fusion_vector_init().
+
+SDL Input
+- Thanks to Ben Combee for adding DIEF_FOLLOW support!
+
+dfbdump tool
+- Align output of summarized surface memory again.
+
+
+1.0.0-rc5
+---------
+
+API | IDirectFBVideoProvider
+- Another (binary compatible) API change: added DVSTATE_BUFFERING.
+
+Build Options
+- This patch adds '--with-message-size=SIZE' to allow fusion messages up to SIZE bytes (default is 1024).
+
+Runtime Options
+- New option "shmfile-group=<groupname>" to set the group that owns shared memory files.
+- Added option "[no-]thrifty-surface-buffers" to free sysmem instance on xfer to video memory.
+- Don't abort if an unsupported option is found, but give a fat warning.
+- New option "vt-num=<num>" to use given VT instead of current/new one.
+
+Graphics Core
+- Added dfb_gfxcard_get_device_data().
+- This fixes unconditional access to conditionally allocated font row data, thanks to Ben Combee!
+- Surface manager always deallocates all auto video instances when suspending.
+ This has the nice side effect of free space being defragmented after resume :)
+
+Window Core
+- Don't notify WM if cursor opacity didn't actually change.
+
+Software Rendering
+- Added fast RGB24 to RGB16 conversion (little endian only).
+
+libdirect (optional part)
+- Finally found the way to embed MPEG streams within the RMF container.
+- Dropped down RTSP seekability (never worked fine).
+
+PNG Image Provider
+- Implemented 1 and 2 bit indexed PNG support.
+
+Keyboard (TTY)
+- Added keypad equal support.
+
+Linux Input
+- Added keypad equal support.
+- Fixed segfault in event thread.
+
+H3600 Touchscreen
+- Thanks to Philip Jägenstedt :philipj 0pera c0m: for fixing the H3600 check!
+
+FBDev System
+- Improved robustness of VT switching, e.g. for rapidly switching back and forth.
+- Set FD_CLOEXEC on the frame buffer device file descriptor.
+
+dfbdump tool
+- Show creator of references (of windows, surfaces, contexts etc).
+
+
+1.0.0-rc4
+---------
+
+FBDev System Module
+- Many thanks to Vaclav Slavik for fixing up VT initialization.
+ Check the ChangeLog for a detailed description.
+
+Unichrome Driver
+- Allow for improved timing of video layer flips when the FIELD_PARITY option
+ is in use. The improvement is only possible if the kernel framebuffer
+ supports it. If not, we do the best we can but occasional glitches may
+ occur under high processor load.
+
+Misc/minor (usually not in a summary, but due to the few changes...)
+- Distribute autogen.sh
+- Add new lines to work around nested structs being taken by the doc generator.
+- Avoid cutting away the last pixel of a planar yuv row.
+
+
+1.0.0-rc3
+---------
+
+API
+- Added IDirectFBWindow::SetBounds() to do a move and resize in one step.
+- New window option DWOP_SCALE prevents the surface from being resized when the window
+ size on screen changes, i.e. via IDirectFBWindow::Resize() or SetBounds().
+- The surface can be resized separately using IDirectFBWindow::ResizeSurface() if needed.
+- Enable DWOP_SCALE by default for windowed primary surface (IDirectFB::CreateSurface).
+- Fixed DIKT_UNICODE detection in DFB_KEY_TYPE(symbol) for values > 255.
+
+Runtime Options
+- New runtime option "scaled=<width>x<height>" scales the window to the specified size
+ for 'force-windowed' apps. The surface size will not be affected, still set via "mode=".
+- Added options "debugmem" and "debugshm" to turn on local/shared memory allocation
+ debugging separately from "debug" option.
+- Let "debugmem" option only influence output of allocations, but always track
+ them in debug enabled builds.
+- Added option "no-software" to disable software fallbacks. This is mainly for
+ debugging/profiling purpose. It will print out a warning with the operation
+ and flags each time a fallback would occur.
+- Read DIRECTFB_SESSION variable after reading all files and DFBARGS,
+ so only the command line can override the current session.
+- Added runtime option "force-slave" to always enter as a slave, waiting for
+ the master, if not already there. This feature only works with recent kernel module.
+
+Graphics Core
+- Added InvalidateState() at driver level API to notify the driver that
+ the current rendering state is no longer valid.
+
+Surface Core
+- Added ability to let only one Fusionee write to a surface,
+ set via owner field of CoreSurface.
+- Don't try to immediately allocate the new video instance when reallocating
+ a buffer (unless the policy is CSP_VIDEOONLY). Fixes corruption problems
+ in XDirectFB caused by window resize failing.
+- Dispatch surface's notifications directly (if local).
+ This change fixes an assertion failure that happens in the following case:
+ Resize (Downsize) Surface ... and immediatly after ... Blit to Surface.
+
+Layer Core
+- Support DLBM_BACKSYSTEM as a (driver) default.
+
+Window Core
+- Give the WM a chance to provide its own surface.
+ The WM may link a surface to the window in the PreConfigureWindow() call.
+- Dispatch window's notifications directly (if local).
+
+Software Rendering
+- Added Bop_argb_blend_alphachannel_src_invsrc_Aop_PFI[] as a fast path for blending
+ from ARGB with SRCALPHA / INVSRCALPHA. Implemented for RGB16 and RGB32 so far.
+- Use cpp templates for 16bpp and 32bpp code.
+- Removes duplicated code.
+- Implements some missing gfx funcs.
+- Fixes missing EXPAND() calls in some acc funcs.
+- Fixes blit direction handling in some 16bpp blit funcs.
+
+Utils
+- Added some basic update region management (DFBUpdates) with functions for adding
+ updates, keeping a maximum number of regions, merging if possible or required.
+ First version, IQ 10.
+
+libdirect
+- Autodetect clock skew.
+- Added direct_list_move_to_front( **list, *link ).
+- Added direct_snputs(s,d,n) to set a string with a maximum size including the
+ zero termination. This acts like a strncpy(d,s,n), but always terminates the
+ string like snprintf(d,n,"%s",s) which is more or less slower.
+- If trace support and shared libraries are enabled, for each library to install,
+ also generate a file containing the output of "nm -n <that library>".
+ That's the command that is used at runtime via popen().
+- Now the code first checks if it can fopen() a file with the same name as the one passed
+ to "nm -n", but with an "nm-n." prefix. This is both a performance improvement and a nice
+ solution for (embedded) targets without 'nm' being available or fast enough.
+
+libdirect (optional part)
+- Implemented seekability over RTSP.
+
+libfusion
+- Use MADV_REMOVE if possible to give memory back to the system after freeing a block
+ in the middle of the heap.
+- No more signal handler used, because no more mremap() is done, only ftruncate()
+ is called to resize the shared memory heap. The initial mmap() now covers the whole
+ address range.
+- Initialize the heap info table to serve for the maximum pool size specified
+ at creation of the pool. Previously, the initial table served for 4 MB heap.
+ If there were more allocations, the heap info table was reallocated at the
+ end of the heap, i.e. at 4 MB making it impossible to ever go back below
+ the 4 MB heap size. Next barrier was 8 MB, 16 MB ...these are gone.
+- The maximum size specified during creation of a pool is now taken as an
+ additional size after the heap info table. Previously, it could happen that
+ the size was too small to host the fixed sized heap info table.
+- Include Fusion ID of allocator and offset within heap in shm allocation debug info.
+- Print shared memory leaks on pool shutdown (debug mode and 'debugshm' option).
+- Added fusion_reactor_direct(bool) to specify whether local message handlers (reactions)
+ should be called directly, which has been the previous behaviour for years...
+- Fall back to /dev/shm if no mount point could be determined.
+- Added FCEF_NODIRECT which forces execution of the call in the Fusion
+ Dispatch thread even if it's the calling process' own call.
+- Only call fusion_sync() if the pool that is to be destroyed has objects.
+- Fixed fusion_sync() timeout during XDirectFB shutdown.
+- Fixed concurrent startup of master and slaves.
+
+Voodoo
+- Missing methods added and more implemented.
+
+PNG Image Provider
+- Support loading of indexed PNG files directly to LUT8 surface.
+- Provide palette of image via GetSurfaceDescription().
+
+FT2 Font
+- Added support for LUT2 fonts for using fast antialiased text rendering with indexed to indexed translation.
+- Thanks to Vaclav Slavik for fixing loading of mono-only fonts.
+
+Default WM
+- Added support for scaled windows.
+- Make cursor area backing store surface same format as layer.
+- Use DFBUpdates to manage an update queue and do optimizations like taking
+ the bounding box instead of multiple smaller regions if the number of pixels
+ in the bounding box is not much higher than the total of the smaller ones.
+- Even this takes the number of smaller regions into account, because of the
+ increasing overhead per region.
+- Next to performance, the visual experience is enhanced by coalesced updates.
+- Another advantage is that when multiple regions are updated, first it renders
+ all regions and then it flips all regions. Previously, each time the flip was
+ done immediately for each rendered region.
+
+Radeon Driver
+- Implemented StretchBlit, TextureTriangles, Alphablend, Deinterlacing
+ for the R300 chipset family, thanks to Timon +timon37 * interia-pl+!!!
+- Support color keying for TMU based functions on R300.
+
+Unichrome Driver
+- Implemented acceleration for blits involving the AiRGB pixel format.
+- DSPF_AiRGB is now supported as a source format for most blits and stretch blits.
+- Blits _to_ AiRGB surfaces are also accelerated provided they don't require blending.
+
+Linux Input
+- Added Touchpad support!
+
+tslib Input
+- New driver, thanks to Shane Volpe!
+
+dfbdump tool
+- Added the option "-p" to pause() dfbdump after initialization, e.g.
+ to run it as a master and look at the foot print or other things that
+ are there before any application specific stuff happens.
+- Show allocations in both DirectFB shared memory pools with option "-s".
+
+
+1.0.0-rc2
+---------
+
+API
+- Breaking API Freeze but keeping source and binary compatibility!
+- All __u8, __s16 etc. types have been changed to u8, s16 etc.
+- Compatibility is in place unless DIRECTFB_NO_CRUFT is defined.
+- Added DSPF_LUT2 being indexed 2 bit per pixel packed, i.e. four pixel in one byte.
+
+API | IDirectFBSurface
+- Added SetIndexTranslation() that sets a translation table used for
+ fast indexed to indexed pixel format conversion. Negative or undefined values in the
+ table will result in no pixel being written.
+- Added DSBLIT_INDEX_TRANSLATION to do fast indexed to indexed translation, this flag
+ is mutual exclusive with all others.
+- So far only LUT2 to LUT8 is supported, used for fast anti-aliased text rendering
+ to indexed format. The translation table contains "-1, 36, 37, 38" for example.
+ First entry makes the background transparent and the other three are shaded versions
+ of the text color.
+
+Build Options
+- Use libpng-config if present. Thanks to Gery <gxkahn-et-gmail.com>!
+
+Runtime Options
+- Added "primary-only" to tell applications only about the primary layer, pretending there are no others.
+- Fixed "tmpfs" option.
+- Fixed "pixelformat" option.
+- Don't depend on "debug" option when printing interface leakage at exit time (only debug builds).
+
+Core
+- No longer create a new process group in dfb_core_create().
+- Don't take certain locks in core shutdown functions if emergency is true.
+
+Layer Core
+- In dfb_layer_context_get_primary_region() if increasing the ref count of the
+ existing primary region fails, due it being destroyed, wait for a short time
+ and try again, probably recreating the region.
+
+Surface Core
+- Fixed bug in auto-video surface locking that could return a NULL pointer.
+
+libfusion
+- Safely cycle through hash nodes while freeing them.
+- Don't print an error if an object revived after it's ref count reached
+ zero but got increased again before the destructor is called. That applies
+ to the multi application core only. In the single application core the
+ destructor is called synchronously.
+
+libdirect
+- Use readdir_r() instead of readdir().
+- Don't include config.h in direct/types.h. Fix stdbool.h warnings.
+- No longer use pthread_kill(KILL) which doesn't only kill the specified thread, use pthread_cancel().
+- Let direct_assert() and others try raise(TRAP) first, then killpg(0,TRAP) and pthread_exit().
+- At the end of the global signal handler no longer use killpg(0,KILL) but remove all handlers,
+ raise(num), abort() and then exit( -num ). But the exit shouldn't be reached.
+- Register signal handler with empty instead of full blocking mask and use SA_NODEFER except
+ for SIGSEGV. Also no longer use SA_RESTART.
+- Use recursive mutexes in trace support if available.
+
+libdirect (optional network stuff)
+- Replaced the usage of setitimer()+recv() in net_peek() with a single call to select().
+- Fixed username/password parsing.
+
+DGIFF
+- DirectFB Glyph Image File Format
+- Purpose of DGIFF is to offload as much as possible from runtime, especially during
+ application startup when loading the default or system fonts.
+- Added a new font module and a tool called mkdgiff to generate .dgiff from .ttf or other.
+- mkdgiff uses FreeType2 to load the glyphs of the font and stores them in one or more ready
+ to use font cache rows, up to 2047 pixels wide right now.
+- The loader creates preallocated surfaces from the mmapped font file. The only copy ever
+ made would be when the surface is transfered to video memory for acceleration.
+- DGIFF supports different sizes of one face in a single file.
+
+DFIFF
+- Build mkdfiff only if PNG support is enabled.
+
+FT2 Font
+- Made DFFA_NOCHARMAP work again.
+- If Unicode/Latin1 failed, try Symbol Encoding and do some 0xf000 magic.
+
+Mach64
+- Disable dithering when doing alpha blended blits. Dithering it is applied
+ even when the source pixels are completely transparent. This change makes
+ the mouse cursor look sane.
+
+Matrox
+- Include <linux/i2c.h> and <linux/i2c-dev.h> now.
+
+SiS315
+- Include <linux/sisfb.h> now.
+- Build only if this header is found by configure.
+
+Linux Input
+- Ignore repeat events for mouse buttons.
+
+FBDev System
+- Use other signals than SIGUSR1/SIGUSR2 for vt-switching.
+
+Other fixes
+- Plugged mem leak of AttachedWindow struct when DetachEventBuffer() happens
+ after the window has been destroyed.
+- Fix Bop_a8_set_alphapixel_Aop_yuy2() for big endian.
+- Remove/relicense GPL code.
+
+
+1.0.0-rc1
+---------
+
+API
+- Added DIEF_FOLLOW to DFBInputEventFlags which indicates that another event
+ will follow immediately. In the mouse driver this is used to "link" the x/y
+ axis motion events. The window manager no longer sends two motion events (x/0, 0/y)
+ for one x/y mouse movement (x and y axis at once). Zig-zag cursor/window movement
+ and double event/update rate are gone.
+- Moved DirectFBGL header to the proper location. We need the header here since the DirectFBGL
+ interface is strongly integrated within DirectFB and we want to support external implementations.
+- More Porter/Duff rules (SRC_ATOP,DST_ATOP,ADD,XOR).
+- Added DFB_SUSPENDED error meaning "The requested object is suspended!".
+- Added 4 bit packed alpha pixel format DSPF_A4, e.g. for fonts.
+- Added support for the 18bpp format family.
+
+API | IDirectFBDisplayLayer
+- Added SwitchContext() that switches between the shared
+ and the exclusive context if present.
+- Added SetClipRegions() that, if supported by hardware, sets the clipping regions that are used to to
+ enable or disable visibility of parts of the layer. The number of regions is stated in the display layer
+ description. The layer will be shown only in these regions or except in these regions.
+
+API | IDirectFBFont
+- Added GetStringBreak() to break a text line by line. Thanks to sridewa <sridewa@gmail.com>.
+- Added EnumEncodings() enumerating all provided encodings, also see Fonts section below.
+- Added FindEncoding() to look up an encoding directly by its name.
+- Added SetEncoding() for choosing the encoding for local interface methods and as a default for the surfaces.
+
+API | IDirectFBImageProvider
+- Added DIRenderCallbackResult to DIRenderCallback to be able to abort rendering.
+
+API | IDirectFBInputDevice
+- Added DetachEventBuffer() to detach an event buffer explicitly.
+
+API | IDirectFBScreen
+- Allow connectors to be selected at the encoders without the need to define
+ outputs, add slow blanking, thanks to Daniel J Laird <danieljlaird@hotmail.com>.
+- Populating screen API a bit more, thanks to Daniel Laird <danieljlaird@hotmail.com>.
+- Added GetSize().
+
+API | IDirectFBSurface
+- Added ReleaseSource() to release a possibly attached source,
+ e.g. after blitting from it only once and from nothing else afterwards.
+- Added GetFramebufferOffset() returning the offset within
+ the graphics memory, thanks to Stefan Lucke <stefan@lucke.in-berlin.de>.
+- Added GetPosition() returning the offset of a sub surface.
+- Finally decided to catch horizontal/vertical lines in DrawLine() and optimize them using rectangle filling.
+- Added SetEncoding() to choose an encoding for the text routines, will be overwritten by SetFont() which takes
+ the default encoding of the new font, also see Fonts section below.
+
+API | IDirectFBVideoProvider
+- Removed return value from DVFrameCallback.
+- Added SetPlaybackFlags(), SetSpeed() and GetSpeed().
+- Added SetVolume() and GetVolume().
+
+API | IDirectFBWindow
+- Added DetachEventBuffer() to detach an event buffer explicitly.
+
+Build Options
+- Added option --enable-netork to enable/disable building network protocols handlers.
+
+Fonts
+- Added support for other encodings than UTF8. Encodings are (or can be) provided
+ with each font implementation. This model reduces code sharing slightly, but
+ allows higher efficiency via optimized combination of decoding and translation.
+- Every encoding just has a name and an ID, where the name can be chosen freely,
+ except for DTEID_UTF8 which is always available and has the name "UTF8".
+- Implemented UTF8 and "Latin1" encoding in FT2 font loader. Nice demonstration how
+ different encodings can be used, while still having a single glyph cache, which is
+ no longer based on character codes, but on their raw indices.
+- See ChangeLog from 2006-05-06 for more details.
+
+Graphics Core
+- Added DFBResult return value to graphics driver's EngineSync() and WaitSerial()
+ to be able to return DFB_TIMEDOUT or other errors. In these cases the core resets
+ the accelerator via EngineReset() and takes care of state invalidation etc.
+- dfb_gfxcard_sync() and dfb_gfxcard_waitserial() also lease the graphics property,
+ i.e. there are no more concurrent calls to the driver, e.g. FillRectangle() along
+ with EngineSync().
+- Moved clipping from dfb_clip_stretchblit() to gStretchBlit() doing all clipping,
+ phase and offset calculations in place, otherwise clipping suffered from rounding
+ and off-by-one errors due to going back to integer in between.
+- In case of no hardware clipping but rectangle filling, if in DrawRectangle()
+ the whole rectangle outline was outside the clipping area, the clipping area
+ was drawn in the software fallback code.
+- In dfb_surfacemanager_deallocate() make sure no hardware read or write
+ access on the buffer is pending before freeing the chunk.
+- Added global function pointer __DFB_CoreRegisterHook with __DFB_CoreRegisterHookCtx
+ to allow application level layer (and screen) implementations building on top of existing layers.
+- New capabilities for setting destination size limit. If the rectangle is
+ too big, first try clip, then try again and eventually fall back to software.
+- Implemented font cache limit, currently hardcoded to five rows, each row stores a number of glyphs.
+ When the maximum number is reached it will reuse the least recently used row, kicking out all glyphs
+ that have been on it.
+- Before every graphics operation, i.e. in dfb_gfxcard_state_check(),
+ clip the state's clipping region to the destination surface dimension.
+
+Input Core
+- First and fully working implementation of dead key handling using static
+ tables for mapping of dead keys and following symbols to the combined symbol.
+
+Surface Core
+- Some changes that decrease system memory usage for surface buffers, especially where graphics memory
+ is available.
+- Allocate system instance of auto-video buffers on first access, not immediately during creation of the surface.
+- Deallocate system memory when buffer is written to in video memory. Reallocate it if the buffer is kicked out
+ of video memory.
+- Implemented "suspended" surface buffers, temporarily deallocated. No valid instance at all until it's resumed.
+- Added dfb_surface_buffer_suspend/resume().
+- Added SBF_SUSPENDED.
+- Align pitch of system memory buffers to be a multiple of 8 instead 4.
+- Add extra 16 bytes at the end of a buffer as a dummy area for optimized
+ routines, e.g. to avoid segfaults due to prefetching.
+
+Window Core
+- Rewritten cursor handling (software cursor) to use a surface instead of a window.
+ The window manager module gets notified about all kinds of updates regarding the cursor.
+ All window manager modules use the same code for now, using backing store for the region under
+ the cursor. This avoids revealing window content that hasn't been commited via Flip(), yet.
+ It should also be faster as it no longer depends on the windows that are covered by the cursor.
+- Check if window is destroyed and return DFB_DESTROYED in all functions
+ which would have called the WM, because a destroyed window is no longer
+ known to the WM and the WM's window data structure is deallocated.
+
+Software Renderer
+- Fix unaligned 32 bit accesses in color keying code.
+- Allocate the accumulator only if it will be used.
+- Check if palettes are equal when blitting indexed formats.
+
+Misc
+- Added dfb_rectangle_subtract() to subtract insets from rectangle.
+- Added DFB_RECTANGLE_CONTAINS_POINT and DFB_REGION_CONTAINS_POINT macros.
+- Added dfb_gfx_copy_to() as an extension of dfb_gfx_copy(). The advantages are
+ different x/y offset for source/destination and blitting from back buffer.
+ The latter was a must for the backing store based software cursor.
+
+libdirect
+- Reworked Direct/Stream to gain more efficiency, added several optional network protocols.
+- Added direct_stream_mime() that returns mime description of the stream.
+- In addition to DIRECT_FORCE_DEBUG one can use DIRECT_ENABLE_DEBUG now.
+- Only duplicate used portion of array in direct_trace_copy_buffer(), set limit from 256 to 200.
+- Added BSWAP16 and BSWAP32 macros, direct_base64_encode, direct_base64_decode and direct_md5_sum.
+- Due to increasing amount of debug messages the default is "no-debug" now. It makes more sense to
+ only enable wanted debug domains by hand, e.g. "debug=core/font". Otherwise, "debug" option still
+ works, too.
+- Replaced direct_stream_fopen() by direct_stream_fileno().
+- Added direct_stream_dup() to increase the stream's reference counter.
+- In the stack trace show base address of each file to allow offset calculation 'by hand' within
+ dynamically loaded modules, i.e. where ldd doesn't help.
+
+libfusion
+- Local 'local reactions' are no longer processed before dispatching further via the kernel device.
+ This causes all local reactions within each Fusionee to be called by the Fusion Dispatcher only,
+ in chronological order. It's a fundamental change in runtime behaviour which might break some code
+ that relies on the synchronous execution of the dispatcher's own local reactions.
+- Implemented experimental fork() handling in Fusion. Added FusionForkAction being FFA_CLOSE by default,
+ which can be changed to FFA_FORK with a call to fusion_world_set_fork_action() for each Fusionee/World.
+- Added "name" parameter to fusion_ref_init() like others already have.
+- Return DFB_LOCKED in fusion_ref_up() if EAGAIN is received (ref is zero locked).
+- New shared hash table implementation and property support for object.
+- Added fusion_skirmish_lock_count() returning the lock counter if held by the caller.
+- Added fusion_reactor_destroy() like fusion_reactor_free() but without freeing the shared structure etc.
+- No longer (need to) access the shared structure during local message processing in the Fusion dispatcher.
+
+i830 driver
+- Fixed overlay destination color keying for 8/15/16 bit primary layer formats, add
+ "i8xx_overlay_pipe_b" option, thanks to Stefan Lucke <stefan@lucke.in-berlin.de>.
+
+Matrox driver
+- Added field based blitting support.
+- Added DSCAPS_SEPARATED support to BES, CRTC2 and SPIC.
+- Fixed pixelpitch alignment for YUY2/UYVY.
+- PAL-60 support (or at least close enough for Ville's TV).
+
+nVidia driver
+- Avoid to set the overlay memory limit, it's already done by the kernel.
+- Basic acceleration for ALUT44.
+- Disable host-to-video hardware blit for simple blits without format conversion.
+- Added nvEngineReset().
+
+Radeon driver
+- R300: Support FillTriangle() and DSDRAW_BLEND.
+- RV250: Dropped YUV->RGB support.
+- Enable VC_32BIT_SWAP on big-endian machines.
+- Removed (erroneously set) flag VF_RADEON_MODE in r200DoDrawRectangle3D().
+- Added patch to radeonfb fixing support for R300 chipsets (it also adds new devices).
+- Use different settings for R300 and non-R300 when setting MC_FB_LOCATION.
+- Added the possibility to use the graphics layer as an OSD. It works exactly the same way
+ as in the unichrome driver: Set the video layer level to -1 and enable DLOP_ALPHACHANNEL
+ on the graphics layer.
+- Applied patch by Christer Palm <christer.palm@pulsen.se>: fixes word swapping on PPC.
+
+Unichrome driver
+- Disable hardware cursor in VIA_REG_CURSOR_MODE. Thanks to Michel van
+ Noorloos <michel.van.noorloos@sioux.nl>.
+- Added PCI ID for CN700.
+
+DynaPro input driver
+- New 3M DynaPro Touchscreen driver, thanks to Pär Degerman <parde@ikp.liu.se>!
+
+Keyboard input driver
+- Added support for dead keys.
+
+Linux Input input driver
+- Added support for dead keys.
+
+DFIFF image provider
+- New DirectFB Fast Image File Format with a fast image provider module and a tool to
+ convert images from PNG to DFIFF.
+
+GIF image provider
+- Dropped support for GIF87 (can't be animated).
+
+GIF video provider
+- New animated GIF video provider.
+
+V4L video provider
+- Fixed planar data copy.
+- Added more pixelformats for v4l2.
+
+FBDev System
+- Clean up error handling in system_initialize() and fix bug with shared memory (de)allocation.
+- Treat fbdev format 8/16,8/8,8/0,0/0 as ARGB when ARGB was requested
+ (that because framebuffer drivers tend to ignore the alpha channel).
+- Don't touch console blanking when using graphics-vt.
+
+SDL System
+- Better keymap emulation.
+- Fake video modes by reading fb.modes, just like the fbdev backend.
+
+directfb-csource tool
+- Added option --rgbformat which in contrast to the --format option only is effective if the image
+ doesn't require an alpha channel. That's useful e.g. with RGB16 for opaque and ARGB for blended images,
+ when the primary format will be RGB16. So far directfb-csource either used ARGB/RGB32 automatically, or
+ it always used RGB16 or whatever you specified via --format.
+- Make structs and pixel data const, helps with use in shared libs.
+
+fx tool
+- Very basic program to emulate/illustrate the pixel pipeline, blitting flags etc. No 100% guarantee that
+ itself is correct, but in the end it will serve as a verification for software/hardware driver.
+
+
+0.9.25
+------
+
+API
+- Added DSPF_AYUV, a 32bit packed AYUV format for graphics,
+ being the counterpart of ARGB in the YUV color space.
+
+API | IDirectFBSurface
+- Added GetClip().
+
+API | IDirectFBDisplayLayer
+- Allow empty flags in SetColorAdjustment().
+- Allow to control background and cursor in exclusive cooperative level.
+
+API | IDirectFBEventBuffer
+- Added DFBEventBufferStats containing various counters for the event queue,
+ e.g. total number of events, number of window events, motion events etc.
+ These reflect the current content of the queue, i.e. dequeueing decrements.
+- Added EnableStatistics() to enable/disable collection.
+- Added GetStatistics() to query current statistics.
+
+API | IDirectFBVideoProvider
+- Added SendEvent() to send a window or input event
+ to video providers that supports interactivity (DVCAPS_INTERACTIVE).
+ For cursor events, coordinates must be in the destination rectangle space.
+- Added GetStreamDescription() to query informations about the stream.
+- Added IDirectFBVideoProvider::GetStatus() to get the status of the playback;
+ this method replaces the previous end-of-playback detection method using GetPos().
+
+Runtime Options
+- Added config option unichrome-revision=<rev> to manually set the hardware
+ revision number for the unichrome driver. This cannot be determined
+ automatically unless the process runs as root.
+- Added option [no-]dma (disabled by default).
+- Added option fatal-level=<level>:
+ Abort on NONE, ASSERT (default) or ASSUME (incl. assert)
+
+Graphics Core
+- Added FlushReadCache() to the graphics driver API.
+ Used in the matrox driver to flush the direct access read cache.
+- Pass CoreDFB to graphics drivers as a new argument to driver_init_driver().
+- Added dfb_gfxcard_surface_{enter/leave}(), called when a software access to
+ video memory begins/finishes.
+- Fix negative line width handling in fill_tri().
+
+Surface Core
+- Added support for surfaces stored in auxiliray memory (PCI/AGP/PCIE).
+- Added support for Surface Managers with a variable number of heaps.
+- In dfb_surfacemanager_allocate() do dfb_gfxcard_sync() only if hardware has
+ read from the buffer about to be kicked out. The call to
+ dfb_surfacemanager_assure_system() should already take care of the hardware
+ write case.
+- Change dfb_surfacemanager_assure_system() to call dfb_gfxcard_wait_serial()
+ instead of dfb_gfxcard_sync() since we're only interested whether the
+ hardware has written to the buffer.
+- Use a separate shared memory pool for surface buffer data.
+
+Input Core
+- Don't toggle lock states repeatedly when holding a lock key.
+- Added FusionCall to each input device for maintenance via master,
+ driver calls etc. using new CoreInputDeviceCommand enum.
+- Added dfb_input_device_reload_keymap() implemented via the new call passing
+ the CIDC_RELOAD_KEYMAP command. The master will reload the whole keymap via
+ driver API.
+- Added a new tool called "dfbinput" which features keymap dump/reload so far.
+- DIKI_ALTGR is gone. The key right to the space bar is the right alt key.
+ No matter which map is loaded, the identifiers are just named hardware keys,
+ where you really specify the physical entity on your keyboard. In this case
+ it's always DIKI_ALT_R, no matter if it's mapped to DIKS_ALTGR or DIKS_ALT.
+ On standard keyboards it's also always the same hardware key code, no matter
+ if you by a German keyboard with AltGr or a U.$. one with Alt.
+- Changed the input core logic for keeping track of modifiers. If DIKI_ALT_R
+ is pressed, also look at the symbol to decide if DIMM_ALT or DIMM_ALTGR is
+ to be added/removed.
+- Now application developers don't need to check for both DIKI_ALTGR and
+ DIKI_ALT_R if they want to check for the key right next to the space bar :)
+
+Software Rasterizer
+- Almost completed support for Planar YUV formats (lacks colorkeying).
+- Fixed Cb/Cr offset computation (height*pitch/4 is different from
+ height/2*pitch/2 if height is odd).
+
+libdirect
+- Made debug/release versions binary compatible, being able to link
+ dynamically against both or even run in the same session.
+- Added D_OOM() message if thread structure can't be allocated.
+- Added D_MAGIC_SET_ONLY which is D_MAGIC_SET without assuming that the magic
+ hasn't been set already. Useful to avoid compiler warnings when acting on
+ uninitialized structures on the stack.
+- Removed dependency on -D_GNU_SOURCE when including <direct/util.h>:
+- Made direct_util_recursive_pthread_mutex_init() non-static-inline.
+- Removed DIRECT_UTIL_RECURSIVE_PTHREAD_MUTEX_INITIALIZER and replaced all
+ of its occurences by PTHREAD_MUTEX_INITIALIZER. These didn't need to be
+ recursive. If there's a recursive mutex required, you can still use the
+ utility function direct_util_recursive_pthread_mutex_init().
+- Removed -D_GNU_SOURCE from direct.pc and directfb-config.
+- Added DIRECT_SIGNAL_ANY as a replacement for the magic -1.
+- If the debug domain being registered contains a slash, but didn't exactly match an entry
+ in directfbrc, check to see if the domain is descended from an entry in directfbrc,
+ e.g. 'ui/field/messages' matches 'ui' or 'ui/field'.
+- New D_DEBUG_ENTER and D_DEBUG_EXIT to ease debug messages for tracing function calls.
+- Added UDP support to DirectStream.
+- Added symbol resolving support for static binaries.
+- Replaced the enum based bool definition by a typedef to __u8.
+- Defined false and true via macros like stdbool.h does.
+- Allow NULL argument in direct_free().
+- Thanks to Andy Stewart for fixing the hash table reallocation which didn't
+ check for collisions during reinsertion.
+
+libfusion
+- Using the new Fusion Kernel API 2.0
+- Parallel Fusion Worlds in one process via extended API
+- Multiple Shared Memory Pools in one world via new API
+- No race condition between (potential master) processes starting in parallel
+- Fusion APIs have been extended to support different worlds and pools.
+- Added fusion_reactor_sized_dispatch() to dispatch a message to any attached
+ reaction with a given size. Instead of using the size defined by the reactor,
+ the caller can specify the size of the data.
+- Added a parameter to fusion_enter() - FusionEnterRole - to specify either
+ FER_ANY, FER_MASTER or FER_SLAVE. If the world can't be entered playing the
+ specified role, an error message is printed and DFB_UNSUPPORTED is returned.
+- Added FusionCallExecFlags parameter to fusion_call_execute().
+- Allow pending reactions (in local dispatcher queue) to be executed
+ after the shared reactor part has been destroyed. This fixes for example
+ occasionally missing DWET_DESTROYED events.
+
+libvoodoo
+- Avoid tons of warnings by using D_MAGIC_SET_ONLY instead of D_MAGIC_SET.
+- More Requester/Dispatcher method implementations.
+
+Radeon driver
+- New unified Radeon driver for R100/R200/R300+.
+- Supports smooth page flipping.
+- Supports seconday head output.
+- Supports overlay on secondary head.
+- Improved overlay RGB rendering.
+- Improved R100/R200 3d functions performance.
+- Fixed 2d/3d engines synchronization.
+- Added support for surfaces stored in AGP memory.
+- Use the POINT primitive to fill rectangles with size=1 (i.e. to draw points) [~60% faster].
+- Speed up FillRectangle, Blit and StretchBlit by using the RECTANGLE_LIST primitive
+ instead of QUAD_LIST [~15% faster]. :)
+- Reset MC_FB_LOCATION to avoid problems with X (thanks to Michel Danzer).
+- Check for integrated GPUs.
+- When AGP support is enabled, turn off pci gart and turn on bus mastering.
+- Added acceleration for AYUV, but color conversion is not supported because
+ radeon supports AVYU instead of AYUV.
+
+Matrox Driver
+- Support for DSDRAW_SRC_PREMULTIPLY.
+- Limited support for DSBLIT_SRC_PREMULTIPLY.
+- PCI device ID cleanup.
+- Fixed Mystique vs. Mystique 220 detection.
+- Allow DSPF_ARGB surface for BES.
+- Finally remove DLOP_FLICKER_FILTERING on CRTC2.
+- Don't reinitialize the whole TV encoder when changing field parity.
+- Disable BES if the destination region is completely off-screen.
+- Allow surface height up to 2048 with DLOP_DEINTERLACING (BES).
+- Limit surface width with DLOP_DEINTERLACING to guarantee BESPITCH < 4096.
+- Disable vertical filtering when surface width > 1024 (BES).
+- G200 BES doesn't support color adjustments.
+- Don't touch hardware in SetRegion() if nothing changed (SPIC).
+- Separated spic_calc_buffer() out of spic_set_buffer().
+- Fixes for G100 with SDRAM.
+- Fixed YUY2/UYVY and texture LUT state handling.
+- Fixed color keying mask, G100 doesn't have TEXCTL2 so TEXTRANS
+ must be used to disable color keying.
+- Completely untested PPC support.
+- Misc. cleanups.
+
+Mach64 driver
+- Added support for DSDRAW_SRC_PREMULTIPLY and DSBLIT_SRC_PREMULTCOLOR.
+- Don't advertise DFXL_STRETCHBLIT when it hasn't been checked.
+- Fixed scaler/texture color key for chips < 3D Rage Pro.
+- Avoid chip lockups with destination color keying.
+- Fixed surface size limits (Overlay).
+- Fixed color keying on 264VT2 (Overlay).
+- Check the chip type in ovSetColorAdjustment().
+- Enabled SCALE_Y2R_TEMP.
+- Minor cleanup.
+
+nVidia driver
+- Added support for AGP
+- Added support for DMA using AGP or Framebuffer memory.
+- Finally fixed the "random-crashes-when-blitting-from-system-memory" problem.
+
+Unichrome driver
+- Fix hardware revision number detection and allow override via new config
+ option unichrome-revision=<rev>. The revision number can only be
+ auto-detected if the process runs as root.
+- Added simple script to determine revision number for addition to
+ directfbrc.
+- Added support for DLOP_FIELD_PARITY. For this to work, the kernel
+ framebuffer must support an extension of the WAITFORVSYNC ioctl that
+ allows waiting for the top or bottom field.
+- YV12, I420, YUY2 and AiRGB simple blits, AiRGB 2D drawing
+- Disable broken SetColorAdjustment for the overlay and remove color keying diagnostic.
+- Round to nearest when positioning up-scaled YV12/I420 video to reduce error.
+- Fix YV12/I420 video layer corruption on revision 0x11 hardware. Also
+ fix bug setting SUBP_CONTROL_STRIDE register in uc_spic_set_buffer. Sadly
+ subpicture layer still doesn't work.
+- ARGB4444 as source and destination pixel format for all supported operations.
+- Overhaul of LEVELS, OPACITY and primary ALPHACHANNEL features which were
+ previously only partially implemented and did not work together.
+- The video overlay and the primary layer now both support the OPACITY option
+ and either can be on top. The order is determined by the 'level' assigned
+ to the video layer. The primary also supports an alpha channel which is
+ useful when the video layer is positioned behind.
+- The old DFB_CLE266_UNDERLAY environment variable switch has been removed.
+
+FBDev System module
+- Added AGP support.
+
+SDL System module
+- Decoupled screen updates from Fusion Dispatcher.
+ Updates are handled in a separate thread; they're accumulated rather than
+ queued in case an update is already pending.
+- Use the flag FCEF_ONEWAY to not wait for the call being executed,
+ otherwise a deadlock could occur. The return value is meaningless anyways.
+ Queued updates will be merged on the receiving side (master) to avoid a
+ lag and improve performance.
+
+Gunze Input driver
+- Added Gunze Touchscreen driver, thanks to Nathanael D. Noblet <nathanael@gnat.ca>!
+
+PenMount Input driver
+- Added input driver for PenMount 9509 serial touchscreen.
+
+PS/2 Input driver
+- Applied patch from Christian Krause <krause.chr@gmail.com> that allows
+ usage of the option "mouse-source" without "mouse-gpm-source".
+
+dfbdump tool
+- Show "1k" again for '0 < bytes < 1024'.
+
+dfbsummon tool
+- Avoid division by zero if no video memory is available.
+
+fusion_bench tool
+- Do the shmalloc benchmark once with debug and once without.
+
+
+0.9.24
+------
+
+- Added missing source (header) files to their appropriate Makefile.am, mostly from voodoo.
+- Don't use fusion_reactor_free() too early in case of an error in init_devices().
+ Thanks to "Jakub Bogusz <qboosh@pld-linux.org>" for this and other patches.
+- IDirectFBVideoProvider::GetPos() returns DFB_EOF to notify end-of-playback.
+ After stream has reached the end, the next call to PlayTo()
+ restarts playback from the beginning.
+- No need for <linux/wm97xx.h> and <linux/sisfb.h> anymore.
+- Build all graphics drivers without checking for FB_ACCEL_* in <linux/fb.h>,
+ because we have a fallback for each of those ids.
+- Don't build cle266 by default as it's obsolete because of the unichrome driver.
+
+
+0.9.23
+------
+
+Authors
+- Added "Claudio Ciccani <klan82@cheapnet.it>" to main authors,
+ welcome number five and thanks for your appreciated work :-)
+
+API
+- Added IDirectFBSurface::DisableAcceleration( DFBAccelerationMask mask ).
+- Added DSBLIT_SRC_PREMULTCOLOR which modulates the source color with the
+ color alpha value only.
+- Replaced IDirectFB::GetCardCapabilities() by GetDeviceDescription()
+ and DFBCardCapabilities by DFBGraphicsDeviceDescription which contains
+ additional information like device and driver name, version etc.
+- Added more enums to the autogenerated directfb_strings.h.
+- Added errorcode DFB_EOF.
+- Added DSBLIT_XOR.
+- Added universal event class for custom usage with variable size. New structure DFBUniversalEvent
+ has a 'clazz' and a 'size' member. The clazz is always DFEC_UNIVERSAL and the size is at least
+ sizeof(DFBUniversalEvent). There are no other members, but any amount of additional data may
+ follow according to the specified size. Best usage would be to derive from the struct.
+- Added new input event flag DIEF_REPEAT indicating a repeated key or button press.
+- Support fractional font sizes in DFBFontDescription.
+- Added IDirectFBDataBuffer::CreateVideoProvider().
+- Added IDirectFBDataBuffer::Finish(): used to notify a streaming databuffer that the end-of-file has been reached.
+
+Runtime Options
+- Fixed pixelformat=NV21 option.
+- Added option 'busid' to specify the graphics card bus id (unused if sysfs support is enabled).
+
+Build Options
+- Allow predefinition of FREETYPE_CFLAGS and FREETYPE_LIBS outside of configure.
+- New configure option "--with-sysroot=DIR" lets you prepend a path to the runtime library/module paths.
+
+Graphics Core
+- Added support for system to video memory blits in (semi-)hardware.
+- Some 24bit big endian fixes, thanks to Mark Salter <msalter@redhat.com>!
+- Added dfb_gfxcard_invalidate_state() which sets the state pointer to NULL
+ and therefore forces a full SetState() before the next operation is executed.
+- If the destination has premultiplied alpha do real Porter/Duff SRC_OVER
+ composition for glyphs.
+- Fixed build_clipped_rectangle_outlines() to handle special cases
+ where width and/or height is/are one or two.
+- Take into consideration DSDRAW_DST_COLORKEY and DSDRAW_XOR when drawing strings.
+- Added RGB332 and LUT8 support to dfb_surface_dump().
+- Fixed artifacts produced by clipped triangles, thanks to Damian Kowalewski <damian.kowalewski@mail.mcgill.ca>!
+
+Layer & Screen Core
+- Fixed missing updates to the hardware state under some circumstances.
+- It's allowed to create and use windows in exclusive mode, showing the own windows only, of course.
+- Changed EnableCursor() to be allowed in exclusive mode, too.
+- Added dfb_screens_hook_primary() using it in some drivers instead of dfb_screen_register_primary().
+- During flip using blitting, wait for pending writes to the back buffer before issuing
+ the blit command from back to front buffer to avoid lags caused by too much queued commands.
+
+Windowing Core
+- Support windows with premultiplied alpha by checking if their surface has DSCAPS_PREMULTIPLIED.
+- Support premultiplied cursor shapes.
+- If during window creation the pixel format for windows with an alpha channel is
+ unspecified, don't always take DSPF_ARGB, but the layer's format if it has alpha.
+
+Software Rasterizer
+- Fixed inverted YV12 colors.
+- Changed Bop_a8_set_alphapixel_Aop_argb() to be a fast path for real SRC_OVER
+ DrawString() that uses DSBLIT_SRC_PREMULTIPLY and DSBLIT_BLEND_ALPHACHANNEL
+ with SrcBlend = ONE and DstBlend = INVSRCALPHA. Other formats will follow.
+- Fixed DSDRAW_SRC_PREMULTIPLY if used without blending.
+- Implemented DSBLIT_SRC_PREMULTCOLOR.
+- Added optimization for drawing blended with Src = ONE, Dst = ZERO.
+- Improved Dacc_YCbCr_to_RGB_MMX.
+- Fixed A8 to A8 font rendering.
+- Added some functions optimized for 64bit architectures.
+- Added duff's device for 8 bit color keying.
+
+Image Loading
+- Premultiply image data when loading into premultiplied alpha surfaces.
+- Limit number of weights to 64 in x and y direction for down scaling. Without this
+ limitation down scaling to 1x1 or similar could take minutes on embedded platforms.
+- If JFIF or Exif header detection failed, try detecting by filename extension.
+- For PNGs with alpha don't always suggest DSPF_ARGB, but the primary layer format if it has alpha.
+
+Font Loading
+- If the font format is ARGB, use premultiplied font surfaces.
+- Use "signed char" explicitly to fix kerning in FT2 loader on PPC, thanks to Uli <Uli.H@triple-dragon.org>!
+- Support fractional font sizes in FT2 loader.
+- Fixed segmentation fault when loading OpenType fonts with FT2 loader.
+
+libdirect
+- A lot of code is using D_DEBUG_AT, D_ASSERT, D_MAGIC_ASSERT etc. now.
+- Added D_MAGIC_ASSUME.
+- Added D_FLAGS_ASSERT(flags,f) being D_ASSERT( D_FLAGS_ARE_IN(flags,f) ).
+- Protect against bogus siginfo_t pointer by checking if it's smaller than 0x100.
+- Some changes to support KallistiOS.
+- Enable X86 memcpy()s on AMD64.
+- Added a generic memcpy() for 64bit Architectures.
+- MMX and SSE support on AMD64.
+- Fixed a bug in direct_list_remove()! If the last item is removed while other items exist,
+ the first item's "prev" pointer was not updated (pointing to the last element).
+- Added low level logging abstraction. Added runtime options "log-file = <name>"
+ and "log-udp = <host>:<port>" for configuring the default log.
+- Added direct_thread_set_name() for setting the name of threads that haven't been created by direct_thread_create().
+- Added DirectStream, a wrapper for accessing files locally and through network (http, ftp and generic tcp).
+
+libfusion
+- Added fusion_object_get() that gets a pool and an object id and returns
+ the appropriate object with a local reference added to it. If the object
+ is not found DFB_IDNOTFOUND is returned, or any abnormal other error from
+ locking or referencing.
+- Added FusionObjectID to replace plain int usage.
+- Fixed an evil dead lock that only occured by moving a window with one of my new mice,
+ having superior precision generating lots of events, thanks for spotting this bug, Logitech :)
+- Fixed a rare crash in single application mode, thanks to Mark Adams <mark147m@gmail.com>!
+
+i830
+- Fixed multi application support, but it only works with root privileges so far.
+- Fixes for coexistence with intelfb and for color adjustments,
+ thanks to Sylvain Meyer <sylvain.meyer@worldonline.fr>!
+
+i810
+- Implemented destination color keying for overlay.
+- Merged back multi app fixed from i830 driver.
+
+Mach64
+- Cleaned up register definitions and added all known register names.
+- Improved chip type detection.
+- Made LCD register access work on 3D Rage LT.
+- Big overlay code update including support for DLOP_DEINTERLACING.
+- Scaler/3D acceleration now works on older GT chips. Tested on Rage II+ and IIC.
+- ARGB4444 support for GT chips.
+- Other minor fixes.
+
+Matrox
+- Always use alphamode = ALPHACHANNEL.
+- Implemented DSBLIT_SRC_PREMULTCOLOR using the Color ALU. If it's already
+ used for colorizing, simply modulate the color values with the alpha,
+ otherwise overwrite them.
+
+nVidia
+- Rewrite of the driver, following the structure of other drivers, e.g. Matrox.
+- Overlay and blitting supports Deinterlacing.
+- WaitForSync no longer burns the CPU (but actually requires a 2.6 kernel).
+- Decide texture buffer size according to available video memory.
+- StretchBlit() on A8,LUT8,RGB332 (>= NV20).
+- FillRectangle(),DrawRectangle(),FillTriangle(),DrawLine(),Blit() on LUT8,RGB332 and A8.
+- StretchBlit(),TextureTriangles(),[DrawString()],Alphablend and Colorize from A8 (>= NV10).
+- Alphachannel blend for ARGB1555.
+- Added support for system to video memory blits.
+- Improved TextureTriangles() performance.
+- NV30 supports StretchBlit(), blit with format conversion, alphablend and colorize.
+- Fixed NV30 initialization.
+- Made the driver work with the new nvidiafb framebuffer driver.
+- Made deinterlacing work properly with TextureTriangles().
+
+R200
+- New driver for ATI Radeon R200 based cards by Claudio Ciccani <klan82@cheapnet.it>!
+- Accelerates FillRectangle,FillTriangle,DrawRectangle,DrawLine, Blit,StretchBlit,TextureTriangles.
+- Supported Drawing Flags: Blend, Xor.
+- Supported Blitting Flags: Alphablend, Coloralpha, Colorize, SrcPremultColor, SrcColorKey, Deinterlace.
+- Supported Formats: A8, RGB332, RGB16, RGB32, ARGB, ARGB1555, ARGB2554, ARGB4444, AiRGB, LUT8, ALUT44, YUY2, UYVY, YV12, I420.
+- Overlay supports YUY2, UYVY, YV12, I420, ARGB1555, RGB16, RGB32 and ARGB,
+ color adjustments, DLOP_DEINTERLACE, DLOP_DST_COLORKEY and DLOP_OPACITY.
+
+SiS 315
+- Compatibility stuff for newer fb driver versions.
+
+Unichrome
+- Added missing flag DLCAPS_LEVEL, thanks to Stefan Lucke <stefan@lucke.in-berlin.de>!
+
+Linux Input
+- Fixed AltGr.
+- Added translation of KEY_FASTFORWARD, KEY_SOUND, KEY_QUESTION, KEY_EMAIL and KEY_CANCEL.
+- Better touchscreen/smartpad detection, thanks to Stefan Lucke <stefan@lucke.in-berlin.de>!
+- Don't abort if checking for LEDs fails.
+
+MuTouch Input
+- Improved packet reading loop, thanks to Ivan Daniluk <ivan@shvydko.ua>!
+
+PS/2 Mouse Input
+- Added GPM support. The mouse-protocol option specifies the protocol for
+ the mice or the repeater (supported values: PS/2 and IMPS/2).
+
+FBDev System
+- When restoring the video mode during shutdown, set xoffset and yoffset to 0.
+- Keep the original display offset if no mode has been set, e.g. just running "dfbinfo".
+- Added ARGB4444 support.
+
+SDL System
+- Hide the SDL cursor so DirectFB one shows.
+
+VNC Server System
+- Preliminary system module using libvncserver.
+
+X11 System
+- Preliminary native X11 support, thanks to Martin Luetken <nitram@lutken.dk>!
+
+Unique WM
+- Started work on the decoration framework, still not usable.
+
+dfbdump
+- Show 'premultiplied' surface capability.
+
+directfb-config
+- Added options "--system=" and "--wm=" for static linking.
+- Option "-s" additionally shows the shared memory file size.
+
+
+0.9.22
+------
+
+API
+- Added DLCAPS_ALPHA_RAMP: Alpha values for formats with one or two alpha
+ bits can be chosen, i.e. using ARGB1555 or ARGB2554 the user can define
+ the meaning of the two or four possibilities. In short, this feature
+ provides a lookup table for the alpha of these formats.
+- Added DLCAPS_PREMULTIPLIED indicating that a display layer
+ can display surfaces with premultiplied alpha.
+- Added DSCAPS_PREMULTIPLIED indicating that the surface has
+ premultiplied alpha data.
+- Added DLCONF_SURFACE_CAPS and field 'surface_caps' to DFBDisplayLayerConfig
+ to specify any combination of the flags: DSCAPS_INTERLACED, DSCAPS_SEPARATED
+ or DSCAPS_PREMULTIPLIED.
+- Added DLCAPS_SCREEN_POSITION and DLCAPS_SCREEN_SIZE.
+ These are set if DLCAPS_SCREEN_LOCATION is set and vice versa.
+ Unscalable layers just have DLCAPS_SCREEN_POSITION.
+- Added DSECAPS_BRIGHTNESS, DSECAPS_CONTRAST, DSECAPS_HUE, DSECAPS_SATURATION.
+- Added DSECONF_ADJUSTMENT to DFBScreenEncoderConfigFlags.
+- Added 'DFBColorAdjustment adjustment' to DFBScreenEncoderConfig.
+
+API | IDirectFB
+- Cleaned up the way CreateSurface() determines the primary surface
+ pixelformat and size. Previously the behavior varied depending on
+ cooperative level and the force-desktop option. New behavior:
+ 1. DSDESC_{WIDTH,HEIGTH,PIXELFORMAT}
+ 2. SetVideoMode()
+ 3. mode= and pixelformat= options
+ 4. current layer config
+
+API | IDirectFBDisplayLayer
+- Added IDirectFBDisplayLayer::SetScreenPosition() which
+ sets the position of the layer on the screen specified in pixels.
+- Added IDirectFBDisplayLayer::SetScreenRectangle() which
+ sets the position and size of the layer on the screen specified in pixels.
+
+API | IDirectFBSurface
+- Added IDirectFBSurface::SetAlphaRamp(a0,a1,a2,a3): Either all four values
+ or the first and the last one are used, depending on the format.
+ Default values are: 0x00, 0x55, 0xaa, 0xff.
+- Added IDirectFBSurface::FillRectangles().
+
+Build Options
+- Added option "--with-inputdrivers=..." for selecting drivers to build,
+ thanks to Marcel Siegert <mws@twisted-brains.org>!
+
+Runtime Options
+- Replaced "argb-font" and "a1-font" with a more flexible "font-format" option.
+- Make "graphics-vt" the default.
+- Added "h3600-device", keeping the default of "/dev/ts".
+- Added "mut-device" which must be used to enable the driver.
+
+Pixel Formats
+- Added DSPF_ARGB2554.
+- Added DSPF_ARGB4444.
+- Added DSPF_NV21 (like NV12, but with swapped CbCr).
+
+Software Driver
+- Added support for YUY2/UYVY->RGB conversion (with src colorkeying).
+- Force alignment to even coordinates if blitting YUY2 or UYVY.
+- Added NV12/NV21/NV16 blitting and rectangle filling.
+- Made YV12<->I420 blitting possible.
+- Fixed YUV422 handling on big-endian architectures.
+- Optimized Bop_yuy2_Sto_Aop() and Bop_uyvy_Sto_Aop(),
+ these are used for StretchBlit() using YUY2 or UYVY.
+
+Display Layer Core
+- Keep a list of all realized (added) regions to remove them during
+ emergency shutdown, e.g. signal received or missing deinit of master app.
+- Added CLRCF_SURFACE_CAPS and field 'surface_caps' to CoreLayerRegionConfig
+ in the display layer driver API.
+- HW Windows created with DWDESC_SURFACE_CAPS and DSCAPS_PREMULTIPLIED
+ in 'desc.surface_caps' are created as premultiplied layer regions.
+- Store normalized and pixel based destination area in a layer context.
+- Added CoreLayerLayoutMode which defines incorporation of
+ configuration based size changes and destination area values.
+- Activate the most recent context instead of the primary (shared) context
+ when the current context is removed.
+- Restore color adjustment when (re)activating a context.
+
+Windowing Core
+- Create layer regions for hw windows in single buffered mode, unless
+ explicitly configured using DSCAPS_DOUBLE/TRIPLE or DWCAPS_DOUBLEBUFFER.
+ This is a preliminary solution, because by default a window surface should
+ require a Flip() to make changes visible.
+- Activate DWOP_ALPHACHANNEL for other non indexed alpha formats, too.
+- Implemented hw window resizing.
+
+libfusion
+- Take the largest one, if multiple tmpfs are found.
+
+Proxy Interface Implementations (Voodoo)
+- Implemented BatchBlit() in IDirectFBSurface_Requester and _Dispatcher.
+
+Fixes (excerpt)
+- Fixed a video memory leak in dfb_surface_reconfig() that happened if a
+ surface with multiple buffers is configured to have less, e.g. switching
+ a layer from DLBM_TRIPLE/BACKVIDEO to DLBM_FRONTONLY.
+
+dfblayer
+- Show the layer level if supported.
+
+Intel
+- Added i830 driver (overlay support only) for Servision Ltd.
+ (http://www.servision.net/)
+- Note, due to unsolved conflicts regarding ring buffer usage
+ you have to load the "intelfb" module with the parameter "accel=0".
+
+Matrox
+- Added DSPF_ARGB4444 support.
+- Added DSPF_NV21 support.
+- Added support for G400 dual head add-on (disabled by default).
+- Alpha ramp support for CRTC2.
+- Added support for progressive chroma on CRTC2.
+- Added support for progressive half-height sub-picture.
+- Dropped I420/YV12 support for old chips.
+- NV12/NV21 Blit() for >= G200.
+- NV12/NV21 StretchBlit() for >= G400.
+- Accelerated I420/YV12/NV12/NV21 FillRectangle().
+- YUY2/UYVY FillRectangle(), Blit() and StretchBlit().
+
+NSC
+- Perform additional check (returned phys. fb base) before considering the
+ fb driver to be the one that it's expected to be.
+
+nVidia
+- Experimental alpha blending support for Riva TNT.
+- Fixed NV20 and GeForce3 Xbox support, Blit() should work on the latter now.
+- Added experimental support for NV30 chipsets.
+- Found the way to make NVScaledImageFromMemory (used for StretchBlit,
+ Alphablend, Color Conversion) work on NV20 chipset: it was another rivafb
+ bug, therefore the rivafb-nv20fix-* patch is absolutely required.
+- Added basic support for drawing with alphablend on NV20.
+- Great performance improvements: it's possible to move a translucent window
+ at 32bpp while the cpu stays idle.
+- No longer return a surface stored in system memory for YUY2 and UYVY;
+ return directly the video surface instead.
+- Added FillRectangle() and Blit() (without effects) for YUY2 and UYVY.
+- Added an hack to do StretchBlit() on YUV422 (result is almost acceptable).
+
+Joystick Input
+- Do not dispatch events if unknown or JS_EVENT_INIT are received.
+ Fixes crash upon initialization under some conditions.
+
+DreamBox Remote
+- Added dreamboxremote driver mainly based on dbox2remote,
+ thanks to Marcel Siegert <mws@twisted-brains.org>!
+
+Unique WM Module
+- Lots of changes that have been lying around for more than two months,
+ but this module is still not fully usable, yet.
+
+
+0.9.21
+------
+
+API
+- Added DFBLocation which is like DFBRectangle but has normalized coordinates.
+- Added macros to compare rectangles, regions, locations, colors etc.
+- Added diagonal cursor keys.
+- Added more types to the auto generated "directfb_strings.h".
+- Added DFBVertex containing transformed x, y, z, w, s and t coordinates.
+- Added DSCAPS_DOUBLE and changed DSCAPS_FLIPPING to be a
+ combination of DSCAPS_DOUBLE and DSCAPS_TRIPLE.
+- Added "const" to some parameters.
+- Added DFXL_DRAWSTRING for IDirectFBSurface::GetAccelerationMask().
+- Added prefix "ret_" to all output parameters.
+- Added DFBSpan containing x and width of a span.
+- When specified use the pixelformat of the surface description
+ to create a windowed primary surface.
+- Added DFB_VERSIONMISMATCH and DFB_NOSHAREDMEMORY error codes.
+- Added DFBInsets specifying a distance from each
+ edge of a rectangle: left, top, right, bottom.
+- Added DLCAPS_SOURCES which indicates that the layer supports multiple
+ sources that can be selected, e.g. from frame buffer (surface) or from
+ hardware decoders (using buffers outside of the frame buffer).
+- Added DFBDisplayLayerSourceID with pre-defined DLSID_SURFACE.
+- Added number of supported sources to DFBDisplayLayerDescription.
+- Added DFBDisplayLayerSourceDescription containing the ID and a name.
+- Added DLCONF_SOURCE along with a field in DFBDisplayLayerConfig to
+ select the source to be used.
+
+API | IDirectFB
+- Added IDirectFB::EnumScreens() and IDirectFB::GetScreen().
+
+API | IDirectFBEventBuffer
+- Added IDirectFBEventBuffer::CreateFileDescriptor() returning a file
+ descriptor that can be read from, including support for select().
+
+API | IDirectFBDisplayLayer
+- Added IDirectFBDisplayLayer::GetScreen().
+- Moved IDirectFBDisplayLayer::SetScreenPowerMode()
+ to IDirectFBScreen, called SetPowerMode().
+- Added IDirectFBDisplayLayer::SetSourceRectangle() for source cropping etc.
+- Added IDirectFBDisplayLayer::GetSourceDescriptions().
+
+API | IDirectFBScreen
+- New interface IDirectFBScreen for mixer, encoder and output settings.
+- An output is connected to an encoder which is connected to a mixer which
+ combines selected display layers.
+- Added a lot of types for description and configuration of these components.
+ (see the API Reference Manual for more details)
+
+API | IDirectFBSurface
+- Added IDirectFBSurface::TextureTriangles() using a surface as the texture,
+ a pointer to a DFBVertex array, an optional index array, the array size and
+ the DFBTriangleFormation which can be DTTF_LIST, DTTF_STRIP or DTTF_FAN.
+- Added IDirectFBSurface::BatchBlit() which increases pixel throughput
+ of many small blits with same source and destination, e.g. custom font
+ rendering like GTK+-DirectFB does.
+- Preliminary depth buffer support using DSCAPS_DEPTH to allocate and use it,
+ currently hard coded to 16 bit, only useful for TextureTriangles().
+- Added DSFLIP_PIPELINE for advanced synchronization with the accelerator,
+ currently implemented for Flip() on window surfaces. This feature is for
+ accelerators with a command buffer that can store more graphics operations
+ than required to render one frame.
+- Added IDirectFBSurface::FillSpans() which is passed a DFBSpan array.
+
+Runtime Options
+- Added "force-desktop" to run fullscreen applications in the background.
+- Added "a1-font" to force usage of monochrome fonts (FreeType2).
+- Added "linux-input-ir-only" which tells the linux input driver
+ to ignore all non-IR Linux Input devices.
+- Added "wm=<wm>" to select the window manager module to use.
+- Added "[no-]trace".
+- Users can enable/disable debug output separately,
+ e.g. using "no-debug,debug=direct,no-debug=direct/memcpy".
+- Added "vt-switching" which is enabled by default.
+- Added "no-vt" which disables usage of VT code completely.
+- Added "no-decorations" to disable automatic window decorations
+ of the "UniQuE" window manager implementation.
+
+Build Options
+- Allow "--enable-static" and "--enable-trace" at the same time.
+- Added "--enable-zlib" that activates gzipped screen shots etc.
+- Added "--enable-voodoo", default is no.
+- V4L2 has to be enabled explicitly via "--enable-video4linux2".
+- Detect cygwin, default to static builds and don't require libdl.
+- In static build mode, add an ".o" version of the ".a" module file.
+ Applications can link statically against the ".o" files without having
+ to specify an extra linker option for each module, e.g. "-Wl,-udirectfb_sdl".
+- Applied patch from "Oskar Liljeblad <oskar@osk.mine.nu>"
+ which adds the configure option "--disable-sonypi-jogdial".
+- Added "--disable-wm97xx" to disable WM97xx driver.
+- With "--disable-gettid" one can enforce usage of getpid(),
+ e.g. on broken systems where gettid() simply segfaults,
+ though the system call is present in <linux/unistd.h>.
+- Added "--enable-unique", disabled by default.
+
+Pixel Formats
+- Added DSPF_AiRGB, i.e. DSPF_ARGB with inverted alpha channel.
+- Added DSPF_A1, e.g. for monochrome fonts.
+- Removed DSPF_RGB15 in the flavor of DSPF_ARGB1555.
+- Added DFB_COLOR_BITS_PER_PIXEL(format), DFB_ALPHA_BITS_PER_PIXEL(format)
+ and DFB_PIXELFORMAT_INV_ALPHA(format).
+- Added DFB_PIXELFORMAT_ALIGNMENT(format) which is non-zero if alignment
+ is required to do byte aligned access, e.g. 7 for DSPF_A1.
+- Added DSPF_NV12 (planar YUV).
+ (8 bit Y plane followed by one 16 bit quarter size CbCr [15:0] plane)
+- Added DSPF_NV16 (planar YUV).
+ (8 bit Y plane followed by one 16 bit half width CbCr [15:0] plane)
+
+System
+- Use gettid() instead of getpid() if available.
+
+Graphics Core
+- Minimize state changes during text drawing.
+- Drivers can choose between byte/pixel pitch alignment, or even use both.
+- Added convenience macros and inline functions for setting state members.
+- Added CoreGraphicsSerial storing the "serial" of a certain graphics operation.
+- Added GetSerial() and WaitSerial() to the graphics driver API:
+ GetSerial() returns the serial of the last queued graphics operation.
+ WaitSerial() waits until the operation with the specified serial is finished.
+- Store the serial of the most recent accelerated graphics operation that has
+ been queued for writing to a surface buffer.
+- dfb_layer_region_flip_update() is no longer waiting for an idle accelerator,
+ if the buffer that is becoming the front has or had a write operation queued.
+ Instead it waits exactly for the last operation that is or was about to write
+ to this buffer. If WaitSerial() is not supported by the driver and/or hardware,
+ the fallback, of course, is to wait for each and every operation to finish.
+- Wait for only the last write operation queued for a buffer,
+ if the software needs to access it.
+- Speed up tiled blitting by clipping in advance.
+- Implemented software clipping for hardware accelerated DrawRectangle().
+- Use hardware accelerated FillRectangle() if DrawRectangle() is not accelerated.
+- Removed the surface listeners attached by dfb_state_set_destination() and
+ dfb_state_set_source().
+- Added dfb_state_update() which does the work of the removed listeners
+ if direct_serial_update() returns true. Updating the source is optional.
+ Only surfaces set via dfb_state_set_*() are handled.
+- Use dfb_state_update() in dfb_gfxcard_state_acquire() and gAcquire().
+- Added parameter "write_front" to dfb_surface_flip_buffers() which is useful
+ for triple buffering. If true, the new back buffer will be the front buffer.
+ Drivers should detect if the current front buffer is not being shown already,
+ in which case the idle buffer might be still shown and should not be written.
+- Added "__u32 dfb_color_to_aycbcr( const DFBColor *color )".
+
+Display Layer Core
+- Refactored display layer core.
+- Added contexts along with regions allocated within them.
+- Drivers are only aware of regions. Usually a driver supports one region
+ per layer. Hardware windows are implemented via hardware regions.
+
+Input Core
+- Added dfb_input_add_global() and dfb_input_set_global() to register global
+ reactions at run time, e.g. from another library or module in which case the
+ static reaction table can't be initialized with the address of those functions.
+- Cleaned up input core code, e.g. by replacing the "inlined" singly linked list
+ code by using a "DirectLink" and the "direct_list_*()" functions, or by adding
+ usage of D_MAGIC_ASSERT() etc.
+
+Windowing Core
+- Pressing <Meta>-<Ctrl> + Left/Right Click generates 3rd/4th button event.
+- Switch to color keyed cursor if shape doesn't have alpha or if translucent
+ windows are disabled.
+- Changed <Meta>-'S' to raise the lowest window, e.g. to revert a <Meta>-'A'.
+- Added <Meta>-<Escape> to switch from fullscreen mode to the desktop.
+ (currently not advisable if a flipping fullscreen app is still rendering)
+- Modularized window management for different implementations on desktop
+ and embedded systems.
+- Added new experimental window manager "UniQuE" with window decorations.
+- Added a CoreWindowConfig containing position, size, opacity, stacking,
+ options, events, color key and opaque region.
+
+Software Driver
+- Added DSBLIT_DEINTERLACE support to gBlit.
+- Implemented missing blending modes.
+- Implemented lots of missing format specific code.
+- Implemented stretchblitting for YUV.
+- Fix a8 font rendering for argb1555, i.e. remove alpha pits around glyphs.
+- Replaced gDrawLine() by gFillRectangle() in rectangle outline drawing code.
+- Allocate accumulators dynamically.
+- Lots of optimizations and fixes.
+
+Debugging Support
+- Major speed up by using thread specific data instead of gettid().
+- Use popen("nm -n ...") to load symbols of any module on demand.
+- Show static symbols in stack traces.
+- Produce gdb like stack dumps (output formatting).
+- Added thread names to debug output, stack traces etc.
+- Added interface instance tracking in debug mode, showing remaining
+ instances at exit time (like it's done for allocated memory).
+- Added debug domains which can be enabled/disabled separately.
+- Added "<Meta>-<BackSpace>" debugging shortcut for
+ dumping the stack of each thread of the master process.
+- Align debug output of domains.
+- Indent debug output if trace support is enabled
+ by using direct_trace_debug_indent() which sets the flag TF_DEBUG for the
+ current frame and returns the current debug message indention level by
+ examining the stack, counting any upper frames that produced debug output.
+- Added tons of assertions and assumption, mostly to new code.
+- Added support for A8,YUY2 and UYVY surfaces in dfb_surface_dump().
+
+Fixes (excerpt)
+- No need to call SetOpacity() before RequestFocus() for input only windows.
+- Don't allow GetWindow() on the cursor window.
+- Don't wait for Fusion Dispatch Thread during emergency shutdown.
+- Fixed missing MMX initialization in slaves, only the master used MMX before.
+- Use RTLD_NOW to detect undefined symbols before the module is used at all.
+
+libdirect
+- Migrated base functionality (threads, signals, interfaces, debugging,
+ lists, modules etc.) into a separate library that can even be used by apps.
+- Added direct_clock_set_start() that is called by Fusion's initialization
+ to synchronize time stamps of debug messages.
+- Added a minimalistic hash table implementation for usage with IDs as keys.
+- Added DirectResult which is the DFBResult outside of DirectFB.
+- Added message macro D_UNIMPLEMENTED which prints a warning once.
+- Added a name argument to direct_thread_create(),
+ printed during creation and termination of threads.
+- Added direct_thread_self(), direct_thread_get_name(thread)
+ and direct_thread_self_name().
+- Added DIRECT_UTIL_RECURSIVE_PTHREAD_MUTEX_INITIALIZER.
+- Added direct_list_append() and changed the list structure to have
+ the first element's 'prev' pointing to the last element of the list.
+- Added DirectThreadInitHandler which can be installed/uninstalled using
+ direct_thread_add_init_handler() and direct_thread_remove_init_handler().
+ The registered init handler function is called at the beginning of new threads.
+- Allow per file debug mode forcing via definition of DIRECT_FORCE_DEBUG.
+- Added D_DERROR(ret,message) which acts like D_PERROR(message), but takes
+ a DirectResult (DFBResult) instead of using errno.
+- Added D_ARRAY_SIZE(array) to calculate the size of an array.
+- Added D_FORMAT_PRINTF(n) to check the format of (debug) messages.
+- Added flag manipulation macros D_FLAGS_*.
+- Added D_CONST_FUNC to declare const functions.
+- Added DirectSerial providing a 64 bit serial number with functions
+ for initialization, increasing, copying and updating.
+- Added D_DEBUG_ENABLED which is defined depending on three other macros.
+ It's defined to be 1, if the D_DEBUG* macros produce code. Useful for
+ embracing code that is just required for the debugging output.
+- Added D_OOM() which prints the warning "out of memory" and gives
+ DFB_NOSYSTEMMEMORY if used as a (return) value.
+- Added D_OOSHM() which is the same as D_OOM() in single app build.
+ Only in multi app build it prints the warning "out of shared memory"
+ and gives DFB_NOSHAREDMEMORY if used as a (return) value.
+- Renamed direct_list_contains() to direct_list_contains_element_EXPENSIVE()
+ to ensure that developers know that they shouldn't use it in non-debug code.
+- Added direct_list_count_elements_EXPENSIVE().
+- Added direct_util_count_bits(), slow version,
+ but at least optimized for bit sets with lower bits set only.
+
+libfusion
+- Migrated Fusion into a separate library to be used without DirectFB,
+ e.g. using FusionSound without initializing DirectFB.
+- Added fusion_object_globalize() doing the often used combination of
+ fusion_object_link() and fusion_object_unref(), i.e. increasing the global
+ reference counter and decreasing the local reference counter.
+- Removed FusionResult using DirectResult instead.
+- Use new Fusion API for entering the world (including version checking).
+- Added fusion_ref_inherit() using the new ioctl FUSION_REF_INHERIT.
+- Added fusion_object_inherit() to inherit the local reference count
+ from another object of any type.
+- Added "docs/ReferenceMaps.txt" which explains references
+ and visualizes different cases of inter object referencing.
+- Heavily cleaned up code of FusionReactor and added lots of debug messages and
+ comments. You should add "no-debug = fusion/reactor" to disable these loads
+ of debug messages, while still showing other messages if "debug" is used.
+- Cleaned up FusionObject code and debug messages.
+- Added some assertions and assumptions to the shared memory code.
+- Added a parameter to fusion_skirmish_init() and fusion_reactor_init() to
+ set the name of the skirmish or reactor using the ioctl FUSION_ENTRY_SET_INFO.
+- Don't create a skirmish for each reactor's global reactions, but use a single
+ skirmish for all reactors which is created during Fusion's initialization.
+- Added fusion_reactor_set_lock() to use another skirmish for the global
+ reactions of the reactor.
+- Added fusion_object_set_lock() to set the skirmish for the global reactions
+ of the object's reactor, while default is the skirmish used to lock the pool.
+
+libvoodoo
+- Added network transparency to DirectFB, called Voodoo.
+ (see the related news entry on the web page for more details)
+
+Reference Manual
+- Parse preceding comments within enums.
+- Fixed hyper link generation for "const" parameters.
+- Improved layout of types page.
+- Added macro definitions to types page.
+- Added callback definitions to types page.
+- Automatically generate links if comments include function names,
+ e.g.: "... IDirectFB::GetDisplayLayer() ...".
+- Show index of types and definitions on the index page.
+
+directfb-config
+- Added "--fusionsound" and "--voodoo" to generate static linking
+ parameters for FusionSound and Voodoo respectively.
+- Use new ".o" versions for all modules (static linking).
+
+directfb-csource
+- Support for combining multiple images into one surface.
+
+dfbdump
+- Dump layer contexts.
+- Option "-s" shows a list of all shared memory allocations (debug mode only).
+
+dfbinfo
+- Show all mixers, encoders and outputs.
+- Show display layer sources.
+
+dfblayer
+- Added option "-L, --level <level>" to change the level of a layer.
+
+dfbscreen
+- Added configuration tool for mixers, encoders and outputs.
+
+fusion_bench
+- Replaced getpid() reference benchmark by an flock(2) benchmark.
+- Use recursive mutexes in threaded mutex benchmark.
+- Each benchmark runs for one second now.
+- Added shmalloc/shfree benchmark.
+
+FreeType2 Font Loader
+- Added DSPF_A1 (monochrome font) support.
+- Speed up kerning cache.
+
+Video4Linux Video Provider
+- Added deinterlacing support for grabbing mode,
+ i.e. added dfb_surface_set_field() calls to grabbing thread and added
+ second frame callback to the loop (to make 50Hz out of the 25Hz of v4l).
+- Use CSLF_FORCE, fixes failing PlayTo() on a fresh surface.
+- Some other fixes.
+
+FBDev System
+- Print error message if the given mode (via "mode=" option) is not supported.
+
+OSX System
+- Added native OSX support without using SDL.
+
+Matrox
+- Backend Scaler (BES) fixes and improvements.
+- SGRAM auto-detection via /proc/bus/pci.
+- Added sysfs support to i2c detection code. Now it works on 2.6 kernels.
+- Use better constants for black/white level calculation on G450/G550 CRTC2.
+- Implemented TextureTriangles().
+- Added texture LUT support (G200) and some other 8bpp improvements.
+- Added support for DSPF_NV12 (BES).
+- Cleanups and optimizations.
+
+VIA CLE266
+- Added video underlay mode.
+- Added DLOP_DEINTERLACING support to video layer.
+- Use fbdev to map registers, obsoletes cle266vgaio.
+ Code still works with cle266vgaio for vesafb users...
+- Implemented DSBLIT_DEINTERLACE.
+- Implemented TextureTriangles().
+- Fixed the broken fonts problem.
+- Thanks to Bryce Nichols <bryce@bnichols.org> for reducing the hardware
+ rounding errors in 16 bit mode by rendering the upper left and lower right
+ triangle pair instead of the upper right and lower left.
+- Other major improvements and fixes.
+
+VIA Unichrome
+- New driver based on the CLE266 driver.
+- Support for multiple north bridges.
+- DVD Sub Picture Layer support.
+- Destination Color Keying for the Video Layer.
+
+nVidia
+- Impressive improvements by Claudio Ciccani <klan82@cheapnet.it>.
+- Added support for ARGB1555, RGB32 and ARGB.
+- Added support for blit with conversion (ARGB1555,RGB32,ARGB to all).
+- Added support for YUY2 and UYVY on Primary Layer.
+- Added support for adjusting Brightness, Contrast, Saturation and Hue.
+- Destination Color Keying for Video Layer.
+- Implemented TextureTriangles().
+- Implemented StretchBlit().
+- Implemented alpha blended blitting and drawing.
+- Added experimental support for Colorizing.
+- Added sysfs support.
+- Added a fast Flip() function (not using ioctl).
+- Experimental WaitForSync() support.
+- Fixed ram amount detection on Xbox (thanks to Oliver Schwartz).
+- Giant cleanup and rewrite of the objects configuration routines:
+ we use runtime configuration instead of fixed tables now.
+- Cleanups and fixes.
+
+SiS 315
+- Added by Andreas Oberritter <obi@tuxbox.org>.
+- Rectangle Filling/Drawing, Line Drawing in 8, 16 and 32 bit.
+- Blitting (with Source Color Keying) in 8 and 16 bit.
+- Destination Color Keying, Clipping.
+
+ATI Mach64
+- Added by Ville Syrjala <syrjala@sci.fi>.
+- Drawing and (Stretch)Blitting with keying, blending, conversion etc.
+- Video Overlay with source and destination color keying.
+- SGRAM block write support.
+- Added texture engine blitting code using power of two textures.
+
+ATI Radeon
+- Video Overlay support by Vadim Catana <vcatana@registru.md>.
+- State handling fixes.
+
+NSC Geode
+- Improvements by Ed Millard <emillard@direcway.com>.
+- Blitting on GX1, though it is constrained by hardware to only blit
+ surfaces whose width matches the stride of the frame buffer.
+
+LibMpeg3 Video Provider
+- Added FusionSound support for audio playback.
+- Moved to DirectFB-extra package.
+
+Linux Input
+- Take Linux Input key code as hardware keycode.
+- Use EVIOCGRAB ioctl to grab the device.
+- Primary mouse is also identified as a mouse now.
+- Added keyboard LED support.
+- Copied keymap support from the keyboard driver.
+- Support more axes.
+
+LIRC Input
+- Emulate keyboard like key repeat behaviour using select() with timeout
+ and a counter to drop the first few repeats.
+
+PS/2 Mouse Input
+- Added /dev/misc/psaux.
+- Just use one of "/dev/psaux" and "/dev/misc/psaux" if both are available.
+- Don't try them at all if uname() yields release "2.5.*" or "2.6.*".
+
+Serial Mouse Input
+- GPM repeater support by Micha Nelissen <micha@neli.hopto.org>.
+
+ELO Touchscreen Input
+- Added by Brandon M. Reynolds <breynolds@comtime.com>.
+
+SDL Input
+- Wheel event support by Tom Bridgwater <genuss@gmail.com>.
+
+
+0.9.20
+------
+
+- Added CLE266 driver by Andreas Robinson <andro134 at student.liu.se>, thanks!
+ The driver supports alpha blending, color keying, video overlay etc.
+- Added WM97XX Touchscreen driver,
+ thanks to Liam Girdwood <liam.girdwood@wolfsonmicro.com>!
+- Added DWOP_SHAPED which enables shaped input handling, windows with an alpha
+ channel or a color key are ignored if the pixel under the cursor is completely
+ transparent. Thanks to Monge Maurizio <monge@sns.it>!
+- Added IDirectFBEventBuffer::WakeUp() causing any WaitForEvent() or
+ WaitForEventWithTimeout() to return with DFB_INTERRUPTED.
+- Added new display layer buffer mode DLBM_WINDOWS where the layer itself
+ has no surface, but the hardware is aware of each window and displays
+ the window stack. Added DLCAPS_WINDOWS, too.
+- Added <Meta>-<Print> hot key to make a screenshot of the focused window
+ including its alpha channel if present. Creates a ppm (RGB) and a pgm (alpha).
+ Use "pnmtopng -alpha foo.pgm foo.ppm > foo.png" to combine them.
+- Added IDirectFBSurface::Dump() similar to <Meta>-<Print>, see above.
+- Added "memcpy = <method>" option to save a lot of startup time.
+ "time dfbinfo" went from 0.080 secs to < 0.010 secs on my machine.
+- New environment variable "DFBARGS" is now parsed like the "--dfb:" parameter.
+- Added Fusion Kernel Device patch for Linux 2.6.
+- Added a patch to set proper clocks on a G400 (great performance boost).
+- Updated vmwarefb for VMware Workstation 4.0 with resolution and depth switch
+ at run time, can disable acceleration at run time. Also fixed palette mode.
+- Video4Linux 2 support by Michael Hunold <hunold@convergence.de>, thanks!
+- Send valid button events in MuTouch driver,
+ thanks to Tim Wright <tim.wright@iosystems.co.uk>.
+- Added support for color keyed PNGs (palette converted to RGB with color key).
+- Enable key repeat in SDL input driver.
+- Fixed segfault in slave processes when no graphics driver is loaded.
+- Signal handler now displays the faulting address in case of SIGSEGV.
+- Added configure option "--enable-trace" activating stack trace dumps in the
+ signal handler. Uses "-finstrument-functions" and therefor only includes
+ functions of DirectFB unless you compile your code with that option, too.
+- Optimized window stack updates by Maurizio Monge <monge@sns.it>.
+- Optimized auto-video surface handling, speeding up Create/Clear a lot.
+- Software driver optimizations for LUT8 (e.g. colorkeyed blitting).
+- Switching single/multi between builds doesn't require "make clean" anymore.
+- Improved output of dfbdump (multi app resource monitor).
+- Important bug fix in state handling (multi app only).
+- Enhanced stability and bug fixes.
+
+
+0.9.19
+------
+
+- Initial version of a Radeon DirectFB driver featuring solid drawing/filling
+ and simple blitting with or without key by Michel Dänzer <michel@daenzer.net>.
+- Added VT switching support which has to be enabled via option "vt-switching".
+ It's pretty well working already, though there are some minor issues left.
+- Added support for multiple multi application worlds with new option
+ "session=<num>" selecting the multi application world being joined or created.
+ VT switching between multiple DirectFB sessions rocks!
+- Added option "primary-layer=<id>" to swap the primary with the specified one,
+ this way all applications can be started on the second head (Matrox).
+- Added "dfblayer", a display layer configuration tool (for multi app).
+- Added IDirectFB::GetInterface() to load interface modules like "IFusionSound".
+- Added time stamp to DFBWindowEvent.
+- Quitting the master (first multi app process) sends SIGTERM to all slaves
+ and waits for them to quit (with a timeout).
+- Core systems (currently FBDev and SDL) are dynamically loaded as modules,
+ which prevents DirectFB from being linked against SDL if support is enabled.
+- Added window manager key 'E' to focus the window under the mouse cursor.
+- Moved all global variables of the software driver to a new struct resulting
+ in a major increase of primitive throughput, e.g. FillRectangle(1x1) by 16%.
+- Enhanced tmpfs detection and added option "tmpfs=<dir>" to set it explicitly.
+- Enhanced locking and safety in v4l video provider.
+- Improved graphics primitive throughput up to 100% by saving locks.
+- Added shared memory allocation tracking like for local memory.
+- Modules and drivers are now binary compatible with single/multi app library.
+- No more bone collector threads (3/master), almost instant object destruction.
+- Other bug fixes and cleanups.
+
+
+0.9.18
+------
+
+- National Semiconductors Geode driver by Sarma Kolluru <Sarma.Kolluru@nsc.com>.
+ Great thanks to NSC for their support!!!
+- nVidia Overlay support by Oliver Schwartz <Oliver.Schwartz@gmx.de>, currently
+ hard coded to XBox. For plain nVidia graphics adapter you need to change line
+ 618ff of nvidia_overlay.c (uncomment line 618, comment out line 620).
+- Added multi application support to SDL backend.
+- Added triple buffering for display layers.
+- Added DPMS support via IDirectFBDisplayLayer::SetScreenPowerMode().
+- Added IDirectFB::GetClipboardTimeStamp().
+- Added optional time stamp return value to IDirectFB::SetClipboardData().
+- Added DFB_KEY_IS_ASCII for your convenience.
+- Split DSFLIP_WAITFORSYNC into DSFLIP_WAIT and DSFLIP_ONSYNC.
+- Added DSPF_ALUT44, a new pixel format having 4 bits of alpha and 4 bits
+ being an index to a color lookup table.
+- Added DIEF_GLOBAL indicating that the event was received without focus.
+- Added IDirectFBWindow::SetOpaqueRegion() which excludes one rectangle of
+ the window from alpha blending, e.g. for blended borders around fast opaque
+ content. This is especially useful if the content has no valid alpha values.
+- Added DWOP_OPAQUE_REGION which enables the opaque region.
+- Made all unsigned width, height in the API signed.
+- Made text drawing honor DSDRAW_BLEND flag to render translucent text.
+- Added Intel i810 driver from Tony Daplas < adaplas at users.sourceforge.net >.
+- New Fusion synchronous RPC mechanism speeds up fbdev layer flipping by slaves.
+ Benchmark shows that RPC flips take as long as three non-RPC flips.
+- Non global input event buffers now also get events if any window of the
+ application is focused.
+- The cursor is no longer enabled in DirectFBCreate(), but automatically when
+ the first window is created unless the cursor was enabled/disabled before.
+ Option "no-cursor" now forces the cursor to be disabled forever.
+- Implemented more software driver routines for DSPF_LUT8.
+- Always blit from top to bottom if source and destination buffers differ
+ in the software driver.
+- Fixed state handling and other bugs in the ATI driver.
+- Significantly improved speed of DrawString() with matrox driver,
+ other fixes and improvements to the matrox driver.
+- Multi application core fixes and improvements.
+- Improved graphics card locking for coexistence with DRI drivers.
+- Improved video memory management.
+- Improved matroxfb-vsync-irq and matroxfb-32mb patch.
+- Added Matrox TV output cable type selection.
+- Added README describing Matrox TV-out functionality.
+- Fixed DSCAPS_SEPARATED with planar formats in software driver.
+- Fixed tiled layer background mode.
+- Fixed bug which resulted in black screens with some framebuffer drivers.
+- Fixed segfault in MPEG2 I-Frame image provider by avoiding alloca.
+- Nicer debug output (show time in seconds with three digits after the comma).
+- Many bug fixes, gcc-3.3 fixes, build cleanups, optimizations, updated patches.
+
+
+0.9.17
+------
+
+- Added input driver for Microtouch serial touchscreens.
+- Added input device name and vendor to DFBInputDeviceDescription.
+- Added clipboard functionality via IDirectFB::Set/GetClipboardData()
+ including mime type. This is an intermediate solution that will be replaced.
+- Added new tool "dfbinfo" which currently enumerates input devices and layers.
+- Added IDirectFBDisplayLayer::SetFieldParity(), thanks to Ville.
+- Added cooperative level restrictions to many display layer functions.
+- Readded DSPF_RGB15 (= DSPF_ARGB1555).
+- Graphics drivers are now able to return false in graphics functions to
+ trigger a 'late' software fallback. Useful if blitting direction can't be set.
+- It is finally possible to specify which gfxdrivers should be built.
+ ./configure --with-gfxdrivers=<list>
+- Fix "could not adjust heap offset message" if the primary layer surface
+ consumes the whole video memory (thanks to Ville Syrjala).
+- Fix for planar formats and other fixes by Ville Syrjala <syrjala@sci.fi>.
+- Fixed "directfb-config" for static linking.
+- Fixed destination color keying for blended drawing in software driver.
+- Fixed blitting within one buffer with NeoMagic (scrolling errors).
+- Reject YUV for fbdev layer, thanks to Jiri Svoboda <Jiri.Svoboda@seznam.cz>.
+- Many bug fixes, code cleanups, comments and assertions added etc.
+
+
+0.9.16
+------
+
+- Added IDirectFBWindow::GrabKey() and UngrabKey().
+- Added IDirectFBWindow::SetColorKeyIndex().
+- Added IDirectFBWindow::SetCursorShape().
+- Added IDirectFBDisplayLayer::WaitForSync(), thanks to Ville Syrjala.
+- Made IDirectFBWindow::SetColorKey() lookup the index if the format is indexed.
+- Removed DSPF_RGB15 in favor of DSPF_ARGB1555, not completely tested yet.
+- Added DFB_COLOR_EQUAL macro to compare two DFBColor.
+- Added <Meta>-P shortcut to enable the cursor manually.
+- Added new multi app core shortcut Ctrl-Alt-Break which sends a SIGKILL to
+ fullscreen applications, useful if a fullscreen app hangs.
+- Added optimized memcpy routines for PPC (disabled in default build).
+- New automatic grabbing mechanism for fullscreen applications running windowed.
+- Added options for statically linking applications with selected modules
+ to directfb-config.
+- DirectColor visual support by Antonino Daplas <adaplas@pol.net>.
+- Color adjustment support on primary layer (via gamma ramp in direct color
+ mode) by Antonino Daplas <adaplas@pol.net>.
+- Fixed implementation of window stacking classes.
+- Fixed segfault with default font provider (non-FT2).
+- Some essiential fixes of outstanding multi app bugs related to layers.
+- Only detach slave processes from their terminal if it's really necessary.
+ Framebuffer ioctls are executed by the master only via fast RPC mechanism.
+- Avoid short single frame flicker when starting fullscreen apps by
+ temporarily switching to KD_GRAPHICS mode.
+- New configure option "--disable-text" which disables all init, debug and
+ error messages and saves about ~20k binary size (tested on i386).
+- Other minor bug fixes and improvements.
+
+
+0.9.15
+------
+
+- IDirectFB::CreateEventBuffer() no longer attaches input devices and doesn't
+ take input capabilities. It just creates an empty event buffer.
+- Added IDirectFB::CreateInputEventBuffer() which implements both the 0.9.14
+ and pre 0.9.14 behaviour of CreateEventBuffer().
+- Added DFBBoolean (with DFB_TRUE and DFB_FALSE).
+- DFBWindowEvent fields cx, cy, buttons, locks and modifiers are always valid.
+- Added implicit key grabbing while a key is held down in a window.
+ Fixes interoparability ugliness between XDirectFB and DFBTerm (e.g. Ctrl-D).
+- Great improvement of performance and stability of the multi application core
+ via new Fusion Kernel Device. SysV IPC usage completely dropped.
+- Added Fusion benchmark application (no graphics, just for testing).
+- Added desktop background configuration tool for multi app sessions.
+- Implemented additional config file loading for each application.
+ E.g. running ".../foo" loads "/etc/directfbrc.foo" and "~/.directfbrc.foo".
+- Option 'no-hardware' now only disables acceleration, but driver is loaded
+ and additional layers can still be used.
+- Options 'mode=' and 'pixelformat=' are now always fully supported.
+ Fullscreen applications forced to run windowed (with 'force-windowed' option)
+ will have a window with the size and format specified.
+- Fixed fatal bug in FreeType2 font loader that made many apps look wrong.
+- Fixed off-by-one bug in image loading code. Fixes color keyed blits in df_dok.
+- Some other bug fixes and optimizations.
+
+
+0.9.14
+------
+
+- Added IDirectFB::CreatePalette().
+- Added IDirectFBSurface::SetPalette().
+- Added IDirectFBPalette::GetCapabilities().
+- Added IDirectFBPalette::CreateCopy().
+- Added IDirectFBSurface::SetSrcColorKeyIndex() and SetDstColorKeyIndex().
+- Added experimental blitting flag DSBLIT_DEINTERLACE which is implemented
+ only in the Matrox driver for now.
+- Added DFDESC_FIXEDADVANCE forcing proportional fonts to be fixed width.
+- Added LUT8 and RGB332 acceleration to NeoMagic driver.
+- Added Meta (or Windows) key to wm hack (moving window etc.).
+- Added MPEG2 I-Frame image provider derived from mpeg2decode (mpeg.org).
+- Added driver for ucb1x00 based touchscreens.
+- Added dfbdump, a DirectFB debugging tool.
+- Renamed DSCAPS_SEPERATED to DSCAPS_SEPARATED.
+- Started abstraction of the "core system" featuring the "fbdev" system like
+ before and a new experimental "sdl" system. Yepp, DirectFB running on SDL.
+ Use "--dfb:system=sdl" to run applications under X.
+- Made the code compile on a variety of BSD flavours.
+- Enabled support for RGB332 by default.
+- Implemented YUV rectangle filling support for planar and non-planar
+ formats in software driver (Ville Syrjala <syrjala@sci.fi>).
+- Added gfxdriver for CyberPro 5xxx, a card found mainly in settop-boxes.
+- Matrox second head support via additional layers.
+ New option "matrox-crtc2" to activate this (Ville Syrjala <syrjala@sci.fi>).
+- Updated matrox vsync irq patch to support the second head.
+- Planar YUV blitting support in Matrox driver (Ville Syrjala <syrjala@sci.fi>)
+- Fixed nVidia driver for big endian hosts.
+- The window stack and video mode are now restored even if a fullscreen
+ application simply exits or gets killed by any signal (multi app core).
+- Improved multi application core stability via optional kernel device.
+- Some bug fixes, especially (de/re)initialization, multi app.
+- Added a directfb.spec file (Till Adam <till@adam-lilienthal.de>).
+
+
+0.9.13
+------
+
+- Added new interface IDirectFBDataBuffer with three implementations
+ (File, Memory and Stream).
+- Made image providers use the new IDirectFBDataBuffer.
+- Added DFBDisplayLayerTypeFlags for a basic layer classification.
+- Added DFBDisplayLayerDescription (changes DFBDisplayLayerCallback).
+- Added (yet unimplemented) IDirectFBImageProvider::SetRenderCallback().
+- Added input_only windows (windows w/o a surface).
+- Added support for interlaced surfaces with seperate field buffers to
+ all drawing and blitting functions.
+- Added new drawing flag DSDRAW_XOR.
+- Added support for color lookup tables. Added new surface type DSPF_LUT8
+ and IDirectFBSurface::GetPalette() and IDirectFBSurface::SetPalette().
+- Added DSDESC_PALETTE to IDirectFBSurfaceDescription.
+- Added DSCAPS_STATIC_ALLOC to DFBSurfaceCapabilities.
+- Added DWDESC_SURFACE_CAPS to DFBWindowDescriptionFlags.
+- Added DWOP_ALPHACHANNEL to DFBWindowOptions.
+- Added IDirectFBSurface::SetColorIndex() for indexed pixel formats.
+- Added pre/demultiplication to drawing functions.
+- Added IDirectFBDisplayLayer::GetWindow().
+- Added input driver for linux input driver (/dev/input/eventX).
+- Improved resource management with automatic cleanup (multi app core).
+- Cleaned up vertical retrace handling.
+- Added DFFA_NOCHARMAP to DFBFontAttributes to allow to access glyphs by
+ their raw indices.
+- Improved V4L video provider, added support for grabbing and planar YUV. Thanks
+ to Ville Syrjala <syrjala@sci.fi> and Mike Pieper <mike@pieper-family.de>.
+- Fixed color key handling in GIF provider.
+- Improvements to the layer driver API.
+- Renamed DLCAPS_INTERLACED_VIDEO to DLCAPS_DEINTERLACING.
+- Renamed DLOP_INTERLACED_VIDEO to DLOP_DEINTERLACING.
+- Enabled acceleration for the second head of a dual head Matrox card.
+- Updated Matrox vsync IRQ patch.
+- Improved S3 Savage drivers, thanks to Alex Song <alexsong@comports.com>.
+- Added directfb-csource, a C code generator for inline images.
+- Lots of bug-fixes, multi app core improvements.
+
+
+0.9.12
+------
+
+- Added IDirectFBSurface::DrawGlyph().
+- Added IDirectFBFont::GetKerning().
+- Added IDirectFBFont::GetGlyphExtents().
+- Added experimental blitting flags DSBLIT_SRC_PREMULTIPLY,
+ DSBLIT_DST_PREMULTIPLY and DSBLIT_DEMULTIPLY.
+- Added dfb_utf8_prev_char() and fixed dfb_utf8_next_char().
+- Added a mask of currently pressed buttons to input and window events.
+- Added structs DFBPoint and DFBDimension.
+- Added DIDTF_VIRTUAL for virtual input devices.
+- Added DSFT_BOTTOM to DFBSurfaceTextFlags.
+- Added DFB_NUM_PIXELFORMATS macro.
+- Give font providers control over pixel format and blending function.
+- Define DFBKeyIdentifierNames in directfb_keynames.h.
+- Some smaller fixes to the keyboard mapping.
+- Support all keysymbols in the lirc input driver.
+- Implemented planar YUV blitting in software driver.
+- Optimizations in the software driver.
+- Fixed blitting and drawing to ARGB in matrox driver.
+- Implemented missing BES flipping in matrox driver.
+- Lots of bug-fixes.
+
+
+0.9.11
+------
+
+- Added IDirectFBSurface::Clear().
+- Added IDirectFBWindow::EnableEvents() and DisableEvents().
+- Added IDirectFBWindow::SetStackingClass().
+- Added IDirectFBDisplayLayer::GetLevel() and SetLevel()
+- Added IDirectFBInputDevice::GetKeymapEntry() (see below).
+- Redone keyboard handling. Each key now has a unique key_id which is mapped
+ to a Unicode-compatible key_symbol using the keymap provided by the driver.
+- Use kernel keymapping table in keyboard driver.
+- Added kernel patch for VMware SVGA frame buffer.
+- Added kernel patch for S3 Savage frame buffer (experimental).
+- Added S3 Savage driver (experimental).
+- The Print key can now be used to dump screenshots in PPM format.
+- Left and right modifiers have seperate key identifiers now.
+- Introduced kerning cache in FT2 font provider.
+- Added module probing to FT2 font provider.
+- Speed up text rendering by using a special state.
+- Allow to change the buffermode of layers.
+- Support buffermode changes for additional layers.
+- Fixed A8 font blitting bug in Matrox driver.
+- Install directfb headers in a directfb subdirectory.
+- Install and look for modules in versioned subdirectory.
+- Fixed vsync polling when MDA emulation is active.
+- Cleaned up config options (directfbrc and command-line options).
+- New option "videoram-limit=<amount-in-kb>".
+- New option "dont-catch" to disable signal handlers.
+- Added directfbrc(5) man-page.
+- Made shared memory handling thread-safe (multi-application core).
+- Optimizations in software driver.
+- Lots of bug-fixes.
+
+
+0.9.10
+------
+
+- Added options "mode=<width>x<height>" and "depth=<bpp>".
+- Added SonyPI Jogdial input driver acting as a third axis and button.
+- Added a destination rectangle to IDirectFBImageProvider::RenderTo().
+- Added IDirectFBEventBuffer::HasEvent().
+- Added IDirectFBDisplayLayer::SetCursorAcceleration().
+- Added IDirectFBWindow::PutAtop and PutBelow for restacking windows relatively.
+- Added destination colorkeying for display layers (like Xv does).
+- Added IDirectFBWindow::SetOptions() and GetOptions().
+- Added color keying option for windows (e.g. for shaped windows).
+- Added window options to disable moving, resizing, stacking and destruction by
+ wm hack. Added an option to turn a window into a passive output only window.
+- Added brightness control to neomagic video overlay (by Martin Mueller).
+- Added tmpfs mount point detection by Sebastian Klemke <packet@convergence.de>.
+- The shared memory area is now reinitialized during startup if it already
+ existed, but with no DirectFB apps running. Other multi app core fixes.
+- Added more cleanup code, less IPC resource leakage after shutdown.
+- Bit depths of fb.modes entries are ignored now when looking for a requested
+ mode. However, the default bit depth is the one of the first entry.
+- Improved RGB332 rendering using precalculated lookup tables with 4/8 entries.
+- Greatly optimized 16Bit StretchBlit in generic driver doubling performance
+ on PowerPC systems (others than Intel/PowerPC not tested).
+- Windows can now be resized and destroyed via wm hack (CapsLock shortcuts).
+- Window stack compositing optimizations.
+- Simplified and cleaned up internal layer driver API.
+- Major code cleanups in windowing and layer core.
+- Fixed NeoMagic driver, that was broken in 0.9.9.
+- Fixed doubled and interlaced video modes.
+- Enhanced reference manual including an introduction to IDirectFB.
+- Many, many bug/stability fixes. More code commented. Bigger TODO file ;)
+
+
+0.9.9
+-----
+
+- Added DSPF_I420 and DSPF_YV12, two planar YUV formats.
+- Added ATI Overlay support for all four YUV formats.
+- Added NeoMagic YUV Overlay support.
+- Added static linking support. Minor changes to driver and interface modules.
+- There's a general IDirectFBEventBuffer now that can be connected to
+ input devices and windows. Added DFBEvent union that can contain
+ any specific event class.
+- Added DFBUserEvent that can be used by developers (user of the library).
+- Added IDirectFBEventBuffer::PostEvent that can be used for any event class.
+- Each window has a unique window id now. DFBWindowEvent contains the id.
+- Added GetID functions to IDirectFB- DisplayLayer, Window and InputDevice.
+- Added IDirectFBSurface::TileBlit.
+- IPAQ buttons support by Ara Hacopian <ahacop@anthrotronix.com>.
+- Windows can now be created with a specific pixel format, e.g. YUV.
+- RGB332 acceleration on Matrox cards (including alpha blending).
+- Added fast memcpy routine that uses MMX, MMXEXT or SSE.
+- Changed DirectFB command-line parsing: The only recognized options are
+ --dfb-help and --dfb: follow by a comma-separated list of DirectFB options.
+ The format of the options is the same as used in the directfbrc file.
+- Surfaces can now be created using existing surface data.
+- New option "[no-]cursor" to enable/disable the default cursor on startup.
+- New option "disable-window-opacity" for testing/tweaking purposes.
+- New option "lefty" that enables swapping of left and right button.
+- Applied patch from Till Adam <till@adam-lilienthal.de> that adds
+ DFBInputDeviceLockState, IDirectFBInputDevice::GetLockState() and
+ LED handling in keyboard driver.
+- Rewritten Libmpeg3 provider based on OpenQuicktime provider (YUV/Sound).
+- Make usage of CON2FBMAP (by Jiri Svoboda <Jiri.Svoboda@seznam.cz>).
+- '/dev/input/js*' support by W. Michael Petullo <mike@flyn.org>.
+- Detailed documentation of dbox2 remote driver code (example driver).
+- More code documentation, especially state handling.
+- Additional frame buffer device can be used to debug the surface manager.
+- All global DirectFB symbols have the prefix "dfb_" now.
+- Enno Brehm <enno@convergence.de> added dlopen on libdirectfb with RTLD_GLOBAL.
+- Completely rewritten shmalloc stuff (used by Multi Application Core)
+ based on libc5's GNU malloc. It now uses tmpfs (former shmfs).
+- Some optimizations, Matrox colorkeying fixes.
+- ATI state fix by Topi Kanerva <topi.kanerva@eke.fi>.
+- USB and PS/2 mice fixes, endian fixes on parisc, many other bugfixes.
+
+
+0.9.8
+-----
+
+- Merged multi application core, which is currently under development. Must be
+ enabled at compile time (--enable-multi). It is *NOT* stable yet.
+- Input/Gfx driver API changes to be ready for multihead and multi application
+ core.
+- Added OpenGL support via the new interface "IDirectFBGL".
+- Added support for IMPS/2 mice including wheel support.
+- Added remote control driver for dbox2.
+- Added DWET_WHEEL window event. Focused windows now receive events if the
+ mouse wheel is use.
+- Added simple blitting support for nVidia cards <dfoesch@cs.nmsu.edu>.
+- Added "wm_hack" feature: press shift lock over a window and spin the mouse
+ wheel to change the window opacity.
+- Completed support for RGB332 (8bit mode), not fully optimized yet.
+- New triange fillig code from Holger Waechtler. Adds clipping support and
+ utilizes accelerated rectangles as a fallback if possible.
+- Removed rounding factor when blitting non-scaled with tmu,
+ very big fonts looked incorrect (matrox driver).
+- Fixed triangle filling in tdfx driver <DWood@daedalcorp.com>
+- Fixed segfault when rendering pipeline is empty, e.g. using DSDRAW_BLEND
+ with SrcFunc DSBF_ZERO and DstFunc DSBF_ONE.
+- In RGB332 mode initialize alpha values in palette. Corrected color
+ values in palette.
+- Fixed segfault in jpeg provider with large images.
+- Fixed some small memory leaks.
+- Include SMF_SOURCE in SMF_ALL, could have caused blitting from the wrong
+ source recently (longer for a very few drivers) when switching to another
+ state.
+- Fixed "--fbdev=" option.
+- ABI version handling for all drivers.
+- Moved examples to extra package (DirectFB-examples).
+- The mouse cursor is now activated by default.
+- DirectFB can be build with dietlibc.
+- Some namespace cleanups.
+- Updated aty128fb patch for linux 2.4.16.
+
+0.9.7
+-----
+
+- Added deinterlacing for interlaced video sources to Matrox Backend Scaler.
+- Added DSPF_UYVY and clarified description of both YUV formats.
+- Added acceleration for Matrox Mystique, Millennium I&II, G100.
+- Added support for YUV in V4L video provider.
+- Added support for deinterlacing in df_layer example.
+- Added option "--fbdev=<device>" to specify another device than "/dev/fb0".
+- Added support for 'gsync true', 'csync high' and 'extsync true' in fb.modes.
+- Added 8bit RGB332 pixelformat, implementation is not complete yet.
+ If you want RGB332, you have to enable it using ./configure --enable-rgb332.
+- Optimized RGB15/RGB16 color keyed blit (doubled performance on some CPUs).
+- Allow RGB15 mode on fbdev drivers that report to use one bit for alpha.
+- Fixed blocking of CreateImageProvider when called on /dev/video with BTTV.
+- DirectFB now restores the palette during deinitialization, turns cursor and
+ blanking back on and restores the terminal attributes like local echo.
+ These fixes help a lot when using DirectFB with the option "--no-vt-switch".
+- Updated NeoMagic frame buffer driver patch for 2.4.10 and above.
+- Updated aty128fb frame buffer driver patch. The patch was tested with kernel
+ versions from 2.4.7 - 2.4.12. It may work with older versions too.
+- IDirectFBSurface::SetSrcColorKey has to be called on the source now,
+ when blitting to a surface which has source color keying enabled.
+- SetSrcColorKey and SetDstColorKey take three values now: r, g and b.
+ They will be converted to the pixelformat of the surface automatically.
+- Some minor fixes.
+
+0.9.6
+-----
+
+- Added H3600 (ipaq) Touchscreen input driver.
+- We now accept compatible pixelformats,
+ e.g. IPAQ's RGB 444 format is compatible with RGB 565.
+- Matrox Backend Scaler support as additional display layer.
+- YUY2 format added for video playback.
+- Added 'IDirectFBDisplayLayer::Set/GetColorAdjustment()'.
+- Added simple layer example which plays a video onto the second layer.
+- Added new window capability DWCAPS_DOUBLEBUFFER to create windows with
+ two back buffers. This is useful for overlapping windows which both
+ cause frequent updates of the window stack.
+- Added 'IDirectFBWindow::Close()' that puts a 'DWET_CLOSE' event into the
+ window's event queue. The event dispatcher thread can then decide to close it.
+- Added 'IDirectFBWindow::Destroy()' which actually destroys the window after
+ sending a 'DWET_DESTROYED' event, so the event dispatcher thread can notice
+ and release any interfaces belonging to it.
+- Added result 'DFB_DESTROYED' which is currently returned by 'IDirectFBWindow'
+ and 'IDirectFBSurface' if the window or surface has been destroyed.
+- Fixed surface manager bug causing inconsistency between video/system memory.
+- More changes to surface manager fixing problems when using many many threads.
+- Fixed segfault when loading big PNGs, seemed to be a problem with alloca.
+- Minor fixes to window stack code.
+- Some fixes to deinitialization code.
+
+0.9.5
+-----
+
+- Added 'IDirectFB->CreateInputBuffer()' that allows to easily
+ create input buffers for specific events.
+- Added 'IDirectFBInputDevice->AttachInputBuffer()' to
+ attach an existing input buffer to another input device.
+- Added 'IDirectFBImageProvider->GetImageDescription()' to obtain information
+ about alpha channel availability and possible color keys.
+- New LIRC input driver, name your keys (lirc config file) like the DirectFB
+ keycode enum does without the "DIKC_" prefix, e.g. "OK", "MENU" or "VOLUMEUP".
+- First version of nVidia RIVA TNT/TNT2/GeForce driver (very limited right now).
+- Updated kernel patches, improved synchronization for FBIO_WAITFORVSYNC.
+- New pkg-config file "directfb-internal.pc" for better support
+ for third party modules built outside the DirectFB source tree.
+- You can move windows with the mouse when holding down CapsLock.
+- Font width can now be set independent from height, e.g. for non-square pixels.
+- Set gamma ramp, fixes "strange-colors-effect" with some frame buffer drivers.
+- Accept interlaced or double scan modes, 320x200 looks really cool in some way.
+- Deinitialization code cleaned up and reactivated.
+- V4L capturing is now stopped by exit and signal handlers.
+- Matrox driver cleanup and blending state fixes.
+- More detailed generated API Reference (more comments in directfb.h).
+- Many bug fixes, some compile fixes.
+
+0.9.4
+------
+
+- Software driver pipeline optimization giving me 70% speed up for solid lines.
+- Several bugfixes for image loading, Matrox driver, mode handling and more.
+- Removed 'realloc()s' that caused callback functions to write into the
+ old memory location if 'realloc()' returns a new one.
+- API rewrite for IDirectFBDisplayLayer with new capabilities, e.g. flicker
+ filtering, better configuration handling by 'Get/Set/TestConfiguration()'.
+- Sub surface handling improved, especially for surface resizing.
+- More safety and sanity checks and new error codes
+ (DFB_MISSINGIMAGE, DFB_INVAREA, DFB_THIZNULL and DFB_IDNOTFOUND).
+- Additions to IDirectFBVideoProvider: 'GetCapabilities()' retrieves info about
+ the provider, 'Set/GetColorAdjustment()' set/get values like contrast etc.
+- Cursor can be enabled/disabled and opacity can be set independently.
+ Also cursor appears centered now.
+- Experimental support for VT switching during runtime ;-)
+- New command line option "--force-windowed" which already works with most of
+ the examples, levels other than DFSCL_NORMAL give DFB_ACCESSDENIED.
+- GIF loading to ARGB fixed, transparent GIFs are now supported as ARGB.
+- Several fixes to video mode list and pixelformat handling in
+ 'read_modes()', 'fbdev_set_mode()' and 'fbdev_get_pixelformat()'.
+- Added IDirectFBSurface->DrawLines(), used by df_dok now.
+- Some optimizations in DrawString and core font handling.
+- Fixed font problems with Matrox cards, their texture cache is flushed
+ now after writing the glyph into the frame buffer (i.e. into the texture).
+- Mouse cursor movements are now clipped by the screen ;-)
+- Fixed 'directfb.h', identifier "id" was also a keyword in Objective C.
+- Added IDirectFBInputBuffer->WaitForEventWithTimeout,
+ was missing in last release.
+
+0.9.3
+------
+
+- All modules (drivers/providers) are built conditionally, can be
+ disabled. configure spits out a summary of all modules.
+- Some license headers were forgotten to change to LGPL.
+- New remote control keycodes and remote control input type.
+- df_window can play video files and behaves like a window manager.
+- New "thanks to" section in README.
+- Window stack repaints optimized through recursive function.
+- Added DirectFBSetOption from Till Adam <till@adam-lilienthal.de>.
+- Added IDirectFBInputBuffer->WaitForEventWithTimeout.
+- Changed to pthread conditions in waiting code.
+- Matrox driver fixed when blitting from 32bit without blending.
+- Added DFBInputDeviceTypeFlags, removed DIDID_TYPE.
+- Several cleanups in core, common code moved into helper functions.
+- Fonts can be loaded monochrome and/or without kerning.
+- Console blanking now disabled.
+- Software alpha blending performance boost for non MMX machines.
+- Added inputdriver for serial mice with config option "mouse-protocol".
+- Modularized inputdrivers.
+- Even faster DrawString() software implementations.
+- New function Font->GetStringExtents.
+- Use of antialiasing, kerning and hinting for fonts is now configurable.
+- Some fixes in the software rendering functions.
+- Support for interlaced PNGs (thanks to Johannes Zellner).
+- Two new example applications in very early stage.
+- New function IDirectFB->WaitForSync.
+
+0.9.2
+------
+
+- Fix for loading jpegs unscaled into 24bpp surfaces
+- 15bpp support for jpeg provider
+- v4l provider support for devfs (/dev/v4l/video*)
+- API change for DFBSurfaceDescription (pixelformat field instead of bpp
+ field, removed DSCAPS_ALPHA.)
+- DrawString() and GetStringWidth() support UTF-8 encoded strings now. They
+ take an additional parameter that specifies the number of bytes to use from
+ the passed string or -1 for the complete string.
+- Fonts are no longer loaded completely, instead glyphs are loaded on demand
+ and are cached for later use.
+- Font kerning tables are no longer loaded by the core.
+- Removed default font from the core and made it a IDirectFBFont interface.
+ Pass NULL as filename to CreateFont() to get the default font.
+- Added MPEG video provider written by Kim JeongHoe based on libmpeg3.
+- Performance improvements in the software functions for DrawLine(), 16 bit
+ drawing functions and DrawString() in all depth.
+- Added GetPos() and GetLength() functions to the video provider API.
+- Use /dev/tty0 or /dev/vc/0 (for devfs) instead of /dev/console so DirectFB
+ works on machines with serial consoles.
+- Removed dependency on libm.
+
+0.9.1
+------
+
+- pkg-config files are available for optionally installed interfaces
+ like IDirectFBVideoProvider_AviFile, so apps can test for their existence.
+- Added IDirectFBInputDevice->GetButtonState() which returns the
+ state of the specified button. GetButtons() is also still available.
+- New demo called "df_knuckles" draws a three dimensional lighted skull
+ that can be rotated by the mouse. (Port from Mark Vojkovich's DGA demo)
+- Fixed accelerator ids in neomagic driver to match the ids in the
+ current neofb kernel patch that is now included in "patches".
+- Moved command-line parsing out of DirectFBCreate() into DirectFBInit().
+ This means to inititalize DirectFB() there are now two calls necessary:
+ DirectFBInit( &argc, &argv ); DirectFBCreate( &dfb );
+- Added IDirectFBSurface->FillTriangle() for solid and blended triangles.
+ Implemented in generic driver and Voodoo, Matrox acceleration.
+- Interfaces with a reference counter of zero are automatically freed
+ unless you enabled debugging during configure. In debug mode a released
+ interface returns DFB_DEAD if a function has been called.
+- Added Shockwave Flash Video Provider written by Joachim 'Roh' Steiger.
+ You will need the libflash, that can be downloaded as a shared library
+ from our download section. No modifications of libflash code.
+- Added an option to directfb-config that makes "--libs" output
+ the suitable LDFLAGS that are needed to have AviFile symbols resolved.
+- Mouse cursor is no longer enabled by default.
+- AviFile Provider now probing for ".asf" files, too.
+- Fixed Stop in AviFile Provider, work around crashing AviFile call
+ Player->Stop by using Pause and Continue. PlayTo can now be called
+ several times without stopping to change the destination on the fly.
+- V4L Video Provider no longer gets a NULL pointer as the filename,
+ but "/dev/video0" and so on. Removed v4l code from core.
+- AviFile Provider updated to compile with newest AviFile version.
+- Implemented flipping of surfaces that are no window or layer surfaces,
+ when the surface is a subsurface, a flipping region has been specified
+ or the flipping flag DSFLIP_BLIT has been used.
+- Improved documentation generator, a few parsing fixes.
+- Added missing "void *callbackdata" to
+ DFBInputDeviceCallback and DFBVideoModeCallback.
+- Some minor fixes and cleanups.
+
+
+0.9.0
+------
+
+Initial release.