mjohnson@APPLE.COM (Mark B. Johnson) (12/02/89)
This message was originally submitted by mjohnson@APPLE.COM to the APPLE2-L list at BROWNVM. If you simply forward it back to the list, it will be distributed with the paragraph you are now reading being automatically removed. If you edit the contributions you receive into a digest, you will need to remove this paragraph before mailing the result to the list. Finally, if you need more information from the author of this message, you should be able to do so by simply replying to this note. ----------------- Message requiring your approval (91 lines) ------------------ Apple II Technical Notes _____________________________________________________________________________ Developer Technical Support Apple IIGS #72: QuickDraw II Quirks Written by: Dave Lyons November 1989 This Technical Note points out some things things you need to watch out for when using ScrollRect and when using QuickDraw II's FastPort-aware and Shadowing modes under System Software 5.0.2. _____________________________________________________________________________ Shadowing Bit 15 of the MasterSCB parameter to QDStartUp requests that QuickDraw II use the memory at $012000 to shadow onto the real screen memory at $E12000. (This speeds up QuickDraw II, since memory in bank $01 can be read at full speed.) QDShutDown on ROM 01 machines does not dispose of the $012000 memory block if it was allocated. If your application is about to quit anyway, it doesn't make any difference. But if your application restarts QuickDraw II (for example, because it's switching between 320 mode and 640 mode), QDStartUp is unable to reallocate the shadow memory, since it's already allocated. At this point, QuickDraw II is no longer shadowing, and the lost speed advantage is not your biggest problem: if you had any windows open, their ports' pixel map pointers are still pointing into bank $01, where any drawing done is now invisible. A solution to this problem is to manually dispose of the $012000 memory after QDShutDown if your application is affected. pha _GetMasterSCB _QDShutDown pla bpl WasNotShadow ;bit 15 was off--not shadowing pha pha pea $0001 pea $2000 _FindHandle plx pla bcs WasNotShadow pha phx _DisposeHandle WasNotShadow ;now it's okay to restart QuickDraw FastPort-Aware Anomaly When the FastPort-aware bit is turned on in the MasterSCB parameter to QDStartUp, DrawPicture does not notice changes in the pen pattern. If your application uses pictures, either directly or indirectly (i.e., by printing to the ImageWriter driver), you may need to leave FastPort-aware mode turned off to get the expected behavior. FastFont and Large Pixel Maps FastFont does not work correctly when drawing past the first 64K of a pixel map. If you are drawing text that uses FastFont (i.e., Shaston 8), you can avoid this problem by using a non-rectangular clipRgn. ScrollRect Can Hang Under certain conditions, ScrollRect hangs. For the hang to occur, the port's visRgn must be non-rectangular and the scroll must be with a positive dY value small enough that some pixels are actually moved on the screen. Since SetContentOrigin calls ScrollRect, this problem can affect you even if you don't call ScrollRect directly. For example, the hang can occur when a word processor's Find dialog obscures part of a document window and the search wraps back to the beginning of the document . One way to avoid the problem is to call SetContentOrigin2 with ScrollFlag = False and then redraw the window contents as appropriate. Further Reference _____________________________________________________________________________ o Apple IIGS Toolbox Reference, Volumes 1 and 3