Path: utzoo!attcan!uunet!mcvax!unido!laura!hmm From: hmm@laura.UUCP (Hans-Martin Mosner) Newsgroups: comp.lang.smalltalk Subject: Re: Problems with PPS 2.n on SUN 3/60 + CG4 Message-ID: <948@laura.UUCP> Date: 22 Jan 89 16:56:32 GMT References: <807@sequent.cs.qmc.ac.uk> Reply-To: hmm@unido.UUCP (Hans-Martin Mosner) Organization: Georg Heeg Smalltalk-80 Systeme Lines: 38 In article <807@sequent.cs.qmc.ac.uk> eliot@cs.qmc.ac.uk (Eliot Miranda) writes: >There is a problem with the bfins instruction on SUN 3/60s using a CG4 frame >buffer. Here's a message to comp.sys.sun outlining the problem in detail: > [other message deleted] > >In ParcPlace Smalltalk-80 V2.2 & V2.3 paragraphs displayed with instances of >DisplayScanner are garbled. Text display using instances of TextDisplayScanner >is ok. I've kluged a fix by copying the scanCharacters:... method down to >DisplayScanner & removing the primitive but this reduces performance to 1/4 >of the primitive. How do I fix DisplayScanner so that it invokes the primitive >as does TextDisplayScanner? As you might see from the TextDisplayScanner code, this beast first scans into a normal Form and then pushes this Form onto the screen using one BitBlt call. It would be possible to do the same (or nearly the same) for DisplayScanner. Just write a scanCharactersFrom:to:in:rightX:stopConditions:displaying: method that just calls the superclass method when displaying is false, else builds up a Form big enough to hold the characters (Form extent: ((rightX min: clipX+clipWidth) - destX) @ height), save its current destForm, destX and destY, set destForm to the newly created Form, destX and destY to 0, adjust the clipping rectangle, and call the superclass method with modified rightX. Display the part of the Form actually modified onto the real destForm at the right position, restore all variables and there you are. Take care of the combinationRule as well (best is to set it to 3 (Form over) for calling the superclass method and using the original to display the scanned Form). For better performance you might want to use a cached Form to scan into so that the machine does not have to create and throw away thousands of little Forms. But I think this is hardly necessary. Sorry if this was so long-winded, I suspect the actual code is a bit shorter :-) Hope the information helps anyway. Hans-Martin -- Hans-Martin Mosner | Don't tell Borland about Smalltalk - | hmm@unido.{uucp,bitnet} | they might invent Turbo Smalltalk ! | ------------------------------------------------------------------------ Disclaimer: Turbo Smalltalk may already be a trademark of Borland...