Developer Release Notes

BeOS Release 3.0/3.1


This document lists major (or at least interesting) changes and bug fixes for BeOS Release 3.0/3.1. Items that are new in 3.1 are tagged with "New in 3.1".

For information on updating your app so it runs in the Release 3 world, see Development Layout.

Contents



Warnings and Bugs



Systems, Disks, and RAM



Applications

Tracker

"Open With"

Tracker windows now let you choose which application you want to use when opening a selected file. The "File" menu includes an "Open With" item, as does the context sensitive menu that you get when you mouse-and-hold on a file. The list of candidate applications is based on the file's type: All applications that recognize the type are listed in the "Open With" choices.


"Open With" relation

The Open With... panel sorts the candidate apps according to their "relation" to the file you're trying to open. There are four relationships:

  1. The app is the declared "Preferred App" for that file.
  2. The app can handle the file's full type (e.g. "text/plain")
  3. The app can handle the file's supertype ("text/...")
  4. The app can handle any file type (".../...")

You can see this phenomenon by opening an Open With... panel, or by popping open the context menu for a file.


Workspace-specific windows

The Tracker now remembers the correspondence between windows and workspaces such that when you reboot your machine, your restored windows are placed in the correct workspaces.


Opening an open folder

When you open a folder (window) that's already open in some other workspace, the folder window is brought to the workspace that you're in (and removed from its present workspace). Previously, opening an open folder would switch you to the workspace of the open window.


More "Find..." options

The "More Options" checkbox in the Find panel lets you name your query (the name appears as the title of the query result window), and lets you optionally search through the Trash. Also, you can start a query "by Name", or "by Attribute" and then switch to "by Formula" without losing information.


Busy Tracker window feedback

Busy Tracker windows now display an animated "sideways barber pole" in the lower left corner. If the barber pole is spinning, the Tracker window is thinking.


Smarter current selection

The Tracker's notion of the current selection has improved. For example, if you send the current selection to the Trash, the next entry in the window is selected. This is particularly convenient when you're reading (and trashing) your mail.


Option key parent dismissal

Starting in PR2, you could dismiss a parent folder window by option-clicking a subfolder. Now, the option dismissal trick has been extended to keyboard navigation (option+command+down-arrow, for example), and can be used to dismiss a child (option+command+up-arrow). You can even launch an app and dismiss a Tracker window at the same time (option+double-click the app).


Clipped text on the desktop

You can now drag a text selection from a document and drop it on the desktop; a file is automatically created to contain the "clipped" text. If you then drag the clipped text file and drop it on an open document, the text is automatically pasted at the insertion point.


Smart app launching

Dragging a file icon over an app icon (as if to drop) asks the app if it can handle the file's type. If it can't, the app isn't highlighted and so won't be launched if the icon is dropped. To override this behavior, control+drag the icon.


Scripting

Tracker now supports a scripting suite that lets applications have tighter integration with Tracker windows. See the documentation in the "Playing with Tracker" chapter of the Be Book.


Smarter message handling

Tracker is smarter about messages that include commands to copy files; the files are copied into the proper destination, rather than in place in the source directory.


File panel improvements

  • alt+esc now sets the keyboard navigation focus to the menu bar in file panels, and esc closes the file panel.
  • Tabbing through file panels now proceeds forward instead of backward.
  • Trashed files

  • New in 3.1 The query result window no longer displays files that have been sent to the Trash.

  • Deskbar


    FileTypes (and MIME Strings)


    BeMail and the Mail Daemon


    Installer


    NetPositive


    Miscellaneous App Changes



    New or Improved Drivers and Hardware

    CD-ROMs


    Floppy Driver


    Graphics Drivers


    MIDI Ports


    Modems


    Motherboards


    Network Cards


    Parallel Port


    PostScript and Printing


    SCSI


    Sound Cards and Chips



    Graphics and the App Server

    Focus Follows Mouse

    The app server offers "focus follows mouse." Use the Mouse preference to turn it on.


    Endianism

    In the graphics science world, there is an endian situation you should be aware of when handling offscreen bitmaps. With this release, the official offscreen 32-bit bitmap byte sex is little endian. To wit:

  • Byte 0 : Blue
  • Byte 1 : Green
  • Byte 2 : Red
  • Byte 3 : Alpha
  • Little endian bitmaps have always been the norm, so this isn't news. However, the way you might be accessing your bitmap data may be nonportable Do you use a uint32 pointer to look at your buffer? If your code looks something like the following, it's going to break in the little-endian world:

    int32    i;
    uint32 color;
    uint32 *buffer;
    color = 'BGRA';
    buffer = (uint32*)my_bitmap->Bits();
    for (i=0; i<10000; i++)
    	*buffer++ = color;
    

    To get it to work on any platform, rewrite your code as shown below:

    union {
    	uint8   bytes[4];
    	uint32 word;
    } color;
       
    color.bytes[0] = 'B';
    color.bytes[1] = 'G';
    color.bytes[2] = 'R';
    color.bytes[3] = 'A';
    buffer = (uint32*)my_bitmap->Bits();
    for (i=0; i<10000; i++)
    	*buffer++ = color.word;
    


    More color spaces

    There are new color_space values in interface/GraphicsDefs.h, and the old names are in a more concise format. An excerpt from the list:

    B_RGB32    	/* was B_RGB_32_BIT */
    B_RGB32_BIG	/* was B_BIG_RGB_32_BIT */ 
    B_GRAY8    	/* was B_GRAYSCALE_8_BIT */
    B_YUV422   	/* new */

    The old constants are still supported, but their use is discouraged.


    Miscellaneous



    Virtual Memory

    The system uses a new heuristic for selecting an appropriate size for the swap file. The following table demonstrates how this works:

    RAM Size (Mb) Swap File Size
    16 - 31 3.0 x RAM size
    32 - 63 2.5 x RAM size
    64 - 127 2.0 x RAM size
    128 - 511 1.5 x RAM size
    512 - 4095 1.25 x RAM size
    4096+ RAM size

    The swap file's size is also limited by how much free disk space is available on your boot volume--for example, if you have 64Mb of memory, the swap file size is computed to be 128Mb. If you only have 100Mb of free space on your boot volume, the swap file will be set to 84Mb instead. BeOS won't use your last 16Mb of free space for the swap file.

    In other words, the maximum size of the swap file is the minimum size computed using the table above plus the amount of free disk space, minus 16Mb.

    It's possible for the system to decide not to create a swap file at all. This can happen if you have more memory than free disk space.


    VM Preferences

    The VirtualMemory preferences app presents two modes for selecting the size of the swap file.
    1. Clicking the "Defaults" button puts the system into automatic mode, where the computation is done using the table and formula above.
    2. You can override the automatic computation by adjust the swap file size slider.

    If the VirtualMemory app is in auto mode and you install more memory in your computer, the swap file will automatically be resized using the heuristic described here. If the system decided not to create a swap file because your RAM exceeds your free disk space, VirtualMemory displays an alert that says:

    "The swap file could not be created. For the system to create a minimum swap file size of 128Mb you will need 144Mb of free disk space."



    Kit and Library Fixes and Improvements

    The App Kit


    Device Drivers


    The Device Kit


    The Game Kit


    The Interface Kit

    New Classes


    New Scripting Properties


    BAlert


    BBitmap


    BListView and BOutlineListView

    BPicture

    BTextView


    BView


    BWindow


    The Kernel Kit


    The Midi Kit


    The OpenGL®® Kit


    The Standard Template Library


    The Storage Kit and POSIX File System Calls