Microwindows 0.89pre8 out.

53

Author: JT Smith

Greg Haerr, leader of the Microwindows project, has announced that Microwindows version 0.89pre8 is released and available for ftp download. Get it while it’s hot.A very large number of enhancements are included in this pre-release. The code base is stable, and is being used in a variety of other open source projects, including the Mozilla web browser, SMPEG digital video viewer, SDL gaming/direct video library, rdesktop RDP Windows thin client, and the PIXIL operating environment. The plan is to release final version 0.89 after a several week comment period for last-minute bugfixes and changes. Following is a list of additional available source compatible with this release:

SDL v1.1.3
SMPEG v0.4.0
rdesktop v1.5.0
Mozilla v0.9.4
PIXIL OE v1.0

Major enhancements for this release include:

Dynamic portrait mode — Nano-X now supports display in all four portrait orientations without requiring a server restart. The startup options -N, -L, -R and -D force the server into normal, left, right and upside-down display. The -A option specifies automatic re-orientation to the left or right successively with a mouse-down at the left or right edge of the screen. Run ./nxkbd.sh to see this in action. The server sends a new GR_EVENT_TYPE_PORTRAIT_CHANGED event when the server orientation changes, allowing applications to resize to the new display form factor. There are still some issues using portrait mode with offscreen pixmaps; this version requires offscreen pixmaps to be reconstructed when the above event is received.

StretchBlit driver support — The Win32 StretchBlt and Nano-X GR_BACKGROUND_STRETCH functions now allow images and blits to use a fast stretchblit driver entry point for resizing image data.

eCOS operating system support — The complete system can be built for the eCos operating system on the Compaq iPAQ, including all Nano-X demos, linked together with the eCos OS and executing as multiple threads.

Direct client-side framebuffer mapping — This feature was added to implement extremely fast MPEG video decoders using Microwindows. A client Nano-X application desiring direct access to framebuffer video memory uses the GrOpen ClientFramebuffer API call to initially mmap() the actual framebuffer as shared memory in the client process address space. Then, the GrGetWindowFBInfo API call can be used on any window ID to have Microwindows compute the upper-left hardware pixel address, along with an appropriately faked line pitch (bytes per scan line) that makes the client application think the window is in fact the entire addressable framebuffer video memory. The client can then draw directly into the window, while Microwindows continues to draw the window decorations around the window, while continuing to handle the normal window move, map, and other event reporting/management actions.

16 ROP drawing modes for all graphics drawing and blitting — All possible source destination copy, xor, and and or logical functions are now possible for drawing and blit operations. See include/mwtypes.h::MWMODE_* functions for details.

Many additions to Nano-X API required for Mozilla, SMPEG, SDL, rdesktop, and the PIXIL Operating Environment — A large list of new API calls have been added for a variety of enhancements.

Following is a quick description of what’s new:

GrNewCursor, GrDestroyCursor, GrSetWindowCursor – server side cursors
GrNewBitmapFromData – X11 compatible bitmaps from C data structures
GrQueryTree – search server window list
GrDelay – msec standard delay
GrSetBackgroundPixmap supports GR_BACKGROUND_STRETCH
GrCreateTimer, GrDestroyTimer server-based periodic timers
GrSetPortraitMode – set server runtime portrait mode
GrOpenClientFramebuffer, GrCloseClientFramebuffer – direct framebuffer access
GrGetWindowFBInfo – get framebuffer information about window
GrLoadImageFromBuffer, GrDrawImageFromBuffer – image routines not requiring file i/o
GrGetFontList, GrFreeFontList – font query routines
GrPeekWaitEvent – wait for input, then peek event
GrSetGCClipOrigin – set user clip region x,y offset

Large list of bug fixes and small additions — This version of Microwindows has become more stable, with the inclusion of very many contributions over the last ten months. Many structures have been expanded to include additional information. See include/mwtypes.h and include/nano-X.h for more information.