Short: Layers Library V45 for Os 3.9 Author: thor@math.tu-berlin.de (Thomas Richter) Uploader: thor math tu-berlin de (Thomas Richter) Type: util/sys Version: 45.27 Requires: Os 3.1 Architecture: m68k-amigaos ------------------------------------------------------------------------------------------------- This is release 45.27 of the layers.library. One minor bug was fixed, see the release notes for details, and the code got cleaned up. Otherwise, no changes. The NOTES directory contains additional information on the internal workings of layers V45. ------------------------------------------------------------------------------------------------- ..with special thanks for the permission to redistribute to Ben Hermans. What is this: This archive contains the V45.24 of the layers.library. The layers library is the part of the operating system that performs the "slice and dice" operations when windows partially overlap, it prepares all the information on the clipping regions that are used by the graphics.library to draw lines, rectangles or text. It is also responsible for saving back graphics if windows get occluded, and restore their content as soon as they are moved back to front. How official is this? This publication has been agreed upon by Hyperion; it is free for owners of the classic AmigaOs and released here hoping that it may be useful for at least some. Since the source code of this library version formed the basis of the Os 4.x layers.library, users of newer versions will get the benefit of this software anyhow, and owners of the classic system at least some of the benefits of the new layers in Os 4. I just considered it fair to release what I still have (with permission) for the classic Amigas. Why a new release: Essentially, the V40 layers.library that is in the Os ROM is in quite a bad shape. At first, it does not behave well with graphics cards, which is why P96 and Cybergraphics patch it heavily. The graphics swap logic that exchanges the background with the foreground uses a double- XOR trick that works nice with the blitter, but not with rtg graphics. Second, V40 layers is highly inefficient. If the window order is re- organized on a screen with many overlapping windows, the amount of swaps required for a single window arrangement grows linear in the number of windows, even though it could be constant. Third, V40 layers is the number one reason why memory fragments. It allocates a lot of tiny structures, but does not attempt to pool them, throwing a fragmentation bomb on the memory manager if many windows are rearranged. Fourth, V40 layers contains a couple of bugs that break window arrange- ment in low memory situations. It does not attempt to fail properly if it runs out of memory, and then leaves the window order in a desolate state. How was it made: V45 layers was created as a contribution to AmigaOs 4.0, but since my Amiga failed back then, it never became part of the Os, and not of the classic system by any means. Layers V45 is based on the V40 ROM version of layers, but with many bug fixes. Many parts of the code have been re-written to compile and built with the latest version of SAS/C. How to install it: 1) Copy Workbench/LIBS/layers.library to the LIBS: directory. 2) If you are not already using "LoadModule": Copy Workbench/LIBS/C/LoadModule to C: Edit the Startup-Sequence to include the following line above SetPatch: LoadModule LIBS:layers.library 3) If you are already using LoadModule, edit the startup sequence such that LIBS:layers.library is included, i.e. add the single argument "LIBS:layers.library". On my system, the line reads as follows: LoadModule LIBS:icon.library LIBS:workbench.library DEVS:console.device L:Ram-Handler L:FastFileSystem L:Shell-Seg LIBS:layers.library DEVS:audio.device LIBS:keymap.library DEVS:keyboard.device 4) If you are using Picasso96, go into the directory "LIBS:Picasso96" It should contain a file named "newlayers.library" (or similar). Rename or delete this file. This library is no longer required. 4.1) I do not know what to do with cybergraphics. I do not use it. If you use version 4 of CGfx, rumors say that it is enough if ENVARC:CyberGraphX/SUPERLAYERS is *not* set. Delete this file if it exists. Or maybe not, who knows. In case of doubt, copy the file "LayersAntiHack" from Workbench/C to C:, and insert it into the Startup-Sequence. This file will prevent patches into layers.library. 5) Reboot the system. 6) If you want to, try the "Examples". Probably "AmiSnap", see below. How stable is it: Well, this is actually beta software. But, given that it was installed on my Amiga for 12 years now, and even though I only use the Amiga occasionally (whenever the hardware is in the right mood), it seems to work pretty well. I did not notice any negative side effects, except better speed. What is new: Despite the code cleanup, you mean? Well, layers is more lean and clean than before, uses less memory and is hopefully more tolerant in low-memory situations. Yes, a couple of functions in layers. First, Layers V45 includes a function to test whether a layer is partially occluded. This is important for picture-in-picture functions (nowadays called "video overlays") offered by some graphics functions. Second, V45 layers allows programs to hide layers completely. Hidden layers can still be drawn into, but nothing appears on the screen. The AmiSnap utility demonstrates this by implementing a "Window Iconification" commodity. Third, V45 layers implements layer_info clipping of layers. Together with a new revision of intuition, this feature would allow users to drag windows partially off the screen. "Clippy" demonstrates this feature (though without modifying intuition). Developer Documentation: Is in the NDK directory. It contains the includes and autodocs for V45 layers, including the new functions. Examples: To demonstrate the V45 layers, this archive contains two example programs. These are *NOT* in production quality, but are rather "tech demos". Since the examples come completely with source code, you are invited to enhance them and complete them, problably make them full programs. "AmiSnap" is a window-iconifying program. Press Left-Alt and click on *any* window, and it will turn the window into an icon on the workbench. Double-click on the icon, and the window will re-appear. While this program demonstrates V45 layers and is in this respect os-friendly, grabbing the window without locking intuition properly is *not* good practise and should be avoided. I said it is a "tech demo" and not a good program, didn't I? It has known bugs. For example, it does not handle the situation correctly in case an iconified window is closed under its feet. Enjoy, but do not use. "Clippy" installs a clip rect onto the workbench screen. Another new feature of V45 layers. Which means that anything outside this cliprect will not be updated. Means, your workbench will behaive weird as it will only update content in the middle of the screen. This is intentional. What is the future of this code? Probably none. I will likely not have the time to keep it updated. Bug reports welcome, of course, but without promise that I will provide fixes. If you find problems, you are on your own. De-install by removing layers.library from LIBS: and remove the corresponding argument from LoadModule, you should be fine again. Thomas Richter, December 2014