#
#	File:		DisplayMgr Release Notes
#
#	Contains:	xxx put contents here xxx
#
#	Written by:	xxx put writers here xxx
#
#	Copyright:	© 1993 by Apple Computer, Inc., all rights reserved.
#
#	Change History (most recent first):
#
#		 <1>	 3/25/93	IH		first checked in
#
#

DisplayMgr Release Notes
First created on: 2/23/93 9:54:35 AM

----------------------------------------------------------•----------------------------------------------------------

2/23/93 9:54:41 AM

File: Displays.a,1     
Owner: Ian Hendry     
Project: MainProj∫Interfaces∫AIncludes∫

File: Traps.a,83     
Owner: Ian Hendry     
Project: MainProj∫Interfaces∫AIncludes∫

File: Displays.h,1     
Owner: Ian Hendry     
Project: MainProj∫Interfaces∫CIncludes∫

File: Traps.h,19     
Owner: Ian Hendry     
Project: MainProj∫Interfaces∫CIncludes∫

File: SysPrivateEqu.a,72     
Owner: Ian Hendry     
Project: MainProj∫Internal∫Asm∫

File: DisplaysPriv.h,1     
Owner: Ian Hendry     
Project: MainProj∫Internal∫C∫

File: ExpandMemPriv.h,55     
Owner: Ian Hendry     
Project: MainProj∫Internal∫C∫

File: BBSStartup,152     
Owner: Ian Hendry     
Project: MainProj∫Make∫

File: Build,283     
Owner: Ian Hendry     
Project: MainProj∫Make∫

File: SysObj.Make,503     
Owner: Ian Hendry     
Project: MainProj∫Make∫

File: DisplayComponents.h,1     
Owner: Ian Hendry     
Project: MainProj∫Toolbox∫DisplayMgr∫

File: DisplayMgr.a,1     
Owner: Ian Hendry     
Project: MainProj∫Toolbox∫DisplayMgr∫

File: DisplayMgr.c,1     
Owner: Ian Hendry     
Project: MainProj∫Toolbox∫DisplayMgr∫

Radar bug: 

> Release notes for this change:

First Check in of Display Manager Files.  The code is linked in and loaded via linked
patch, but it is not called yet.

> What was tested:

Built system, made sure it booted.  Played with system for a while.
----------------------------------------------------------•----------------------------------------------------------
2/25/93 11:41:30 PM

File: Displays.a,2     
Owner: Ian Hendry     
Project: MainProj∫Interfaces∫AIncludes∫

File: Displays.h,2     
Owner: Ian Hendry     
Project: MainProj∫Interfaces∫CIncludes∫

File: SysPrivateEqu.a,74     
Owner: Ian Hendry     
Project: MainProj∫Internal∫Asm∫

File: DisplaysPriv.h,2     
Owner: Ian Hendry     
Project: MainProj∫Internal∫C∫

File: ExpandMemPriv.h,58     
Owner: Ian Hendry     
Project: MainProj∫Internal∫C∫

File: DisplayMgr.a,2     
Owner: Ian Hendry     
Project: MainProj∫Toolbox∫DisplayMgr∫

File: DisplayMgr.c,2     
Owner: Ian Hendry     
Project: MainProj∫Toolbox∫DisplayMgr∫

Radar bug: 

> Release notes for this change:

Changed to reintegrate with ThinkC project.  Cleaned up headers (removed unused data
structures) and made code compatable with INIT version.

> What was tested:

Built and played with a system with and without init version running.
----------------------------------------------------------•----------------------------------------------------------
3/1/93 7:18:59 PM

File: BuildDisplayMgrInit,1     
Owner: Ian Hendry     
Project: MainProj∫Toolbox∫DisplayMgr∫

File: DisplayMgrExtension.r,1     
Owner: Ian Hendry     
Project: MainProj∫Toolbox∫DisplayMgr∫

File: StartDisplayMgr.a,1     
Owner: Ian Hendry     
Project: MainProj∫Toolbox∫DisplayMgr∫

Radar bug: 

> Release notes for this change:

Checked in files to build the display manager as a stand along linked patch init.  The
basic build instructions are as follows:

# build the code for the system extension
Build System -p -woInterface -init DisplayMgrINIT “DisplayMgr.o” ∑∑ “{Worksheet}”
# add other resources to the extension
“{DisplayMgr}BuildDisplayMgrInit” ∑∑ “{Worksheet}”

The linked patch extension is “{sources}BuildResults:System:Display Manager”

> What was tested:

Build and tested.  Linked patch installed correctly and is called.  System builds and
runs.
----------------------------------------------------------•----------------------------------------------------------
3/5/93 4:04:04 PM

File: Displays.a,3     
Owner: Ian Hendry     
Project: MainProj∫Interfaces∫AIncludes∫

File: Displays.h,3     
Owner: Ian Hendry     
Project: MainProj∫Interfaces∫CIncludes∫

File: DisplaysPriv.a,1     
Owner: Ian Hendry     
Project: MainProj∫Internal∫Asm∫

File: DisplaysPriv.h,3     
Owner: Ian Hendry     
Project: MainProj∫Internal∫C∫

File: BuildDisplayMgrInit,2     
Owner: Ian Hendry     
Project: MainProj∫Toolbox∫DisplayMgr∫

File: DisplayMgr.a,3     
Owner: Ian Hendry     
Project: MainProj∫Toolbox∫DisplayMgr∫

File: DisplayMgrExtension.r,2     
Owner: Ian Hendry     
Project: MainProj∫Toolbox∫DisplayMgr∫

Radar bug: 

> Release notes for this change:

Rolled in 2 QuickDraw patches and made more compatable with UltraDesk debugging override.
There is still work to be done.  I will be starting work on a modified monitors to move
monitors on the fly.  I may want to add patch to the PaintBehind too.

Cleaned up the build.  Changed suggested build line in “BuildDisplayMgrInit”

Rearranged headers a little.  Added “DisplaysPriv.a”.  I will migrate more stuff to
Private headers as time goes on.

Open Issue: If I roll some changes into SuperMario ROMs, how do I use the linked patch
mechanism to patch Cyclone (Mac III) ROMs but not PDM ROMs?

> What was tested:

Built and tried out with UltraDesk application.
----------------------------------------------------------•----------------------------------------------------------
3/17/93 5:43:11 PM

File: Displays.a,4     
Owner: Ian Hendry     
Project: MainProj∫Interfaces∫AIncludes∫

File: Displays.h,4     
Owner: Ian Hendry     
Project: MainProj∫Interfaces∫CIncludes∫

File: DisplaysPriv.a,2     
Owner: Ian Hendry     
Project: MainProj∫Internal∫Asm∫

File: DisplaysPriv.h,4     
Owner: Ian Hendry     
Project: MainProj∫Internal∫C∫

File: 'DisplayMgr ToDo,2'     
Owner: Ian Hendry     
Project: MainProj∫Toolbox∫DisplayMgr∫

File: DisplayMgr.a,8     
Owner: Ian Hendry     
Project: MainProj∫Toolbox∫DisplayMgr∫

File: DisplayMgr.c,3     
Owner: Ian Hendry     
Project: MainProj∫Toolbox∫DisplayMgr∫

Radar bug: 

> Release notes for this change:

• Add Pascal header file Displays.p.  This file is just a shell and needs to be filled
out with all the Display Manager calls.
• Add ToDo file for Display Manager
• Build a version of monitors control panel that moves monitors on the fly.
• Changed many selectors.  I moved many private calls into DisplaysPriv.h and
DisplaysPriv.a as per Dean Yu’s suggestion.  This will insure that the calls remain
private.

> What was tested:

Build Extension and System versions.  Both work.  Called code from Monitors control panel
and that worked.

I need to test on a classic QD machine.
----------------------------------------------------------•----------------------------------------------------------
3/24/93 1:51:51 AM

File: Displays.a,5     
Owner: Ian Hendry     
Project: MainProj∫Interfaces∫AIncludes∫

File: Displays.h,5     
Owner: Ian Hendry     
Project: MainProj∫Interfaces∫CIncludes∫

File: DisplaysPriv.h,5     
Owner: Ian Hendry     
Project: MainProj∫Internal∫C∫

File: 'DisplayMgr ToDo,3'     
Owner: Ian Hendry     
Project: MainProj∫Toolbox∫DisplayMgr∫

File: DisplayMgr.a,9     
Owner: Ian Hendry     
Project: MainProj∫Toolbox∫DisplayMgr∫

File: DisplayMgr.c,4     
Owner: Ian Hendry     
Project: MainProj∫Toolbox∫DisplayMgr∫

Radar bug: 

> Release notes for this change:

Engineer:		Ian Hendry 4-4737 (pager 322-7950)

-------------------------
Build Instructions
-------------------------
# To build a Reality System with Display Manager BBS installed:
{Make}Build System -p -macsbugSymbols full ∑∑ “{Worksheet}”

# To build a SuperMario ROM with Display Manager BBS installed:
 -- FILL THIS IN

# To build a PsychicTV Gibbly with Display Manager:
 -- FILL THIS IN

# To build a Reality System linked-patch Extension with Display Manager:
{Make}Build System -p -macsbugSymbols full -init DisplayMgrINIT “DisplayMgr.o”
“{Worksheet}” ; “{DisplayMgr}BuildDisplayMgrInit” ∑∑ “{Worksheet}”

# To build a Reality System Process Manager Extension (see notes below):
{Make}Build System ProcessMgrINIT -nolink -p -macsbugSymbols full ∑∑ “{Worksheet}”


-------------------------
RELEASE NOTES
-------------------------
I did not (yet) build with absolutely the latest sources.  I will be doing an update and
	I will test this tomorrow.
I am trying to produce better release notes.  Any suggestions, please let me know (QM
	is best).  You should also check the file “Display Manager ToDo” for addtional
	information (most of it is notes to myself, but some stuff may be interesting).
Integrated Display Manager into Monitors control panel.  Monitors can now move monitors,
	and move the menu bar without rebooting!!!  You will need the latest Monitors
	that should be released in PyschicTV d6 (or get it from me directly)
The PyschicTV d6 release needs extensive testing.  Some calls are still not implemented
	correctly and some parameters will continue to change, but most of the
	underlying application compatibility issues should come out of this release.  For
example
	MPW window move incorrectly and my MPW Shell (?3.3a14?) notes that it got unknown
	appleevents.
Display Manager now depends on process manager features NOT present in 7.1 (IPC calls).
	You must use a process manager init with the IPC calls in order to make any calls
	that depend on IPC under 7.1.  At this time the process manager init is broken
	except on supermario ROMs (because a CheckResource patch was move to resource
	manager for supermario and is not built in the process manager init -- the
	patch is only present in supermario machines).


-------------------------
TEST SUGGESTIONS
-------------------------

Any changes to the main device force me to hammer ports and sometimes devices as well.
	The most involved change is setting the main device to a different display.
	Changing the menu bar forces me to walk the port list hammering ports,
	it forces me to change the cursor and it forces me to recalc the menu bar and
	set theGDevice in all applications.
Check color cursors
Test with background only applications running.  Background Apps have no menu bars
	so I should not be calling _CalcMenuBar in any background applications.  Right now
	I check if WWExists.  An alternate stratgy would be to GetProcessInfo and check
	there (before the IPC call).  What happens with the TSM application?
Test with applications that are likely to pay careful attention to graphics such as:
	Paint programs (PhotoShop, MacPaint, MacCheese, etc)
	HyperCard
	Games
	Draw programs (Illustrator, Freehand, MacDraw, etc)


-------------------------
CHANGES BY FILE
-------------------------

FILE -- DisplaysPriv.h

Added DMSetMainDisplay and RecalcMenuBar calls.

FILE -- DisplayMgr.a

Added and commented out DrawMenuBar patch to call RecalcMenuBar.  This was my
	crack at making sure that the menu bar was recalculated for all applications.
	I changed this to a process manager IPC call.
Added RecalcMenuBar call which calls _CalcMenuBar.  If _CalcMenuBar
	is not available, then I call the MBDF directly.  When we are guaranteed
	that _CalcMenuBar will be available, then I should make the MBDF call
	conditional to the INITVERSION
Corrected some cut-and-paste name errors.
Added selector for DMSetMainDisplay

FILE -- DisplayMgr.c

Changed update parameters to do more in device manipulation calls (DMAddDisplay etc)
Added commented ideas for more palette-manager-friendly code changes in the future.
Made DMSetMainDevice into a trap call (rather than in internal routine).  Made changes
	and fixes.  It seems to work fairly well now.  I added quite a few comments to
	my code that plays with the ports.  The only known problem is I cannot tell
	if a port is really a window and I may incorrectly handle windows that are exactly
	the size and position to cover the main device (games?).  I can be more conservative
	if I have to (see comments in code).
Added Process Manager IPC code to set the gdevices in all processes when the main device
	changes.
Fixed DM_RedrawAll to calc regions so windows are currectly updated.  I am still
	working on this stuff do find out exactly what I need to do.
Cleaned out unused defines and changed #includes at top of file to be the standard
	format.

FILE -- Displays.h

Added DMSetMainDisplay call.

FILE -- Displays.a
Added macros for some display manager calls (including DMSetMainDisplay)


> What was tested:

Build System and tested using new version of monitors.

I was able to move monitors around and change the menu bar monitor without rebooting.
Offscreen windows came back onscreen.   I traced the IPC call to FileShare (a background
only app) and noted that I did not attempt to recalc the menu bar in this applicaiton.

I tried changing menubar monitors at various combinations of depths (esp direct to
indexed).  All seemed to work.
----------------------------------------------------------•----------------------------------------------------------
3/24/93 8:24:22 PM

File: DisplayMgr.c,5     
Owner: Ian Hendry     
Project: MainProj∫Toolbox∫DisplayMgr∫

Radar bug: 

> Release notes for this change:

Fix reentrancy problem in Desktop drawing code.  I will need to conditionalize it for
when there is no FIllRgn/FillCRgn patches (ie in ROM).


> What was tested:

Build System and verified that it no longer screwed up desk drawing.
----------------------------------------------------------•----------------------------------------------------------
3/25/93 9:07:13 PM

File: BuildDisplayMgrInit,1     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayComponents.h,1     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: 'DisplayMgr Release Notes,1'     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: 'DisplayMgr ToDo,1'     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgr.a,1     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgr.c,1     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgrExtension.r,1     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: StartDisplayMgr.a,1     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

Radar bug: 

> Release notes for this change:

Check in Display Manager

> What was tested:

Not in build scripts but builds under reality.
----------------------------------------------------------•----------------------------------------------------------
3/31/93 5:01:21 PM

File: DisplaysPriv.a,2     
Owner: Ian Hendry     
Project: SuperMarioProj∫Internal∫Asm∫

File: MenuMgrPriv.a,2     
Owner: Ian Hendry     
Project: SuperMarioProj∫Internal∫Asm∫

File: DisplaysPriv.h,2     
Owner: Ian Hendry     
Project: SuperMarioProj∫Internal∫C∫

File: MenuMgrPriv.h,4     
Owner: Ian Hendry     
Project: SuperMarioProj∫Internal∫C∫

File: MainCode.Make,4     
Owner: Ian Hendry     
Project: SuperMarioProj∫Make∫

File: RISC.make,23     
Owner: Ian Hendry     
Project: SuperMarioProj∫Make∫

File: Universal.make,11     
Owner: Ian Hendry     
Project: SuperMarioProj∫Make∫

File: DisplayMgr.c,2     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: Toolbox.make,2     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫

File: WindowMgr.a,27     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫WindowMgr∫

Radar bug: 

> Release notes for this change:

Check in Display Manager to build.

Check in fix to have standardequates build follow the FastROMTraps automatically (Script
CreateStdEquAOptions parses the feature set to determine how to set the Standard equates
flags).  I added this to only to Universal.Make and RISC.make.

Display Manager is included in RISC builds and available on Universal Builds.

> What was tested:

Did full builds of Universal and PDM.
----------------------------------------------------------•----------------------------------------------------------
3/31/93 5:52:57 PM

File: DispTable.a,44     
Owner: Ian Hendry     
Project: SuperMarioProj∫OS∫

File: DisplayMgr.a,2     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

Radar bug: 

> Release notes for this change:

Set Display Manager Trap in DispTable.a (conditional with hasDisplayMgr).

Forgot to check in DisplayMgr.a with last checkin.

> What was tested:

Build RISC and Universal ROMs with hasDisplayMgr true and false.  Tested Universal ROMs.
All seems well.
----------------------------------------------------------•----------------------------------------------------------
4/8/93 7:38:52 PM

File: DisplayMgr.a,3     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgr.c,4     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgr.make,2     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgrUtils.c,1     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

Radar bug: 

> Release notes for this change:

This version of Display Manager supports resolution flipping, moving monitors and moving
the menu bar!  Requires at Monitors Control panel at least “PsychicTV 1.0d6c1” and a
video driver that support the switchMode control call.

Created a new file DisplayMgrUtils.c to put utility calls in.  DisplayMgr.c was getting a
little long.

Now on to alpha?!!

> What was tested:

Built and tested on PDM (only video driver to date that has the new switchmode control
call).  Tested switching to a new mode when current depth are not available in new mode.

I do not have a multi-monitor system at the moment, so I may have broken moving monitors
on the fly or moving the menu bar on the fly.
----------------------------------------------------------•----------------------------------------------------------
5/28/93 4:07:36 PM

File: Displays.a,3     
Owner: Ian Hendry     
Project: SuperMarioProj∫Interfaces∫AIncludes∫

File: Displays.h,3     
Owner: Ian Hendry     
Project: SuperMarioProj∫Interfaces∫CIncludes∫

File: DisplaysPriv.a,3     
Owner: Ian Hendry     
Project: SuperMarioProj∫Internal∫Asm∫

File: DisplaysPriv.h,4     
Owner: Ian Hendry     
Project: SuperMarioProj∫Internal∫C∫

File: DisplayMgr.a,4     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgr.c,5     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgrUtils.c,2     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

Radar bug: #1081805,1086363

> Release notes for this change:

Pre-alpha freeze check-in.  This code fixes the 1081805,1086363 and a number of
unreported bugs that I found while preparing for alpha.  I fixed some patches that run on
68K machines.  Several selectors have moved to the private range and so I reordered the
public ones.  In order to not confuse older version of finder and monitors, the gestalt
selector for display manager has changed from ‘udsk’ to ‘dply’.  That way new code
doesn’t see old code and old code doesn’t see new.  There was a persistent multiple
monitor bug that would (if you worked at it) crash your system.  It depended on moving
displays and then waving the cursor as the display manager rearranged the displays.  I
think I have this fixed, but I will keep an eye on it.

I also changed the interfaces a little to simplify walking ALL display (including
inactive ones).

> What was tested:

I have been building and testing with this code for some time.  I spend yesterday and
today really hammering on it on both 68K and PDM machines.  It seems to be holding up
well, but I will be continuing my testing and bug fixes.
----------------------------------------------------------•----------------------------------------------------------
6/1/93 4:38:51 PM

File: DisplayMgr.c,7     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgr.make,3     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgrUtils.c,3     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

Radar bug: 

> Release notes for this change:

Alpha code checkin.  This checkin is the first alpha candidate for PDM display manager.
Some functionality does not work in all cases but, given the limitations of PDM video, it
works for the basic cases available on PDM.



> What was tested:

Tested on PDM (was unable to test multi monitor code with my test build, but I did not
change that code).  Used monitors to switch modes and everything looked good.

----------------------------------------------------------•----------------------------------------------------------
6/22/93 2:54:45 AM

File: SonoraDeclVideo.r,11     
Owner: Ian Hendry     
Project: SuperMarioProj∫DeclData∫DeclVideo∫Sonora∫

File: SonoraDriver.a,14     
Owner: Ian Hendry     
Project: SuperMarioProj∫DeclData∫DeclVideo∫Sonora∫

File: Video.h,4     
Owner: Ian Hendry     
Project: SuperMarioProj∫Interfaces∫CIncludes∫

File: DisplaysPriv.h,6     
Owner: Ian Hendry     
Project: SuperMarioProj∫Internal∫C∫

File: DisplayMgr.a,6     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgr.c,8     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgrUtils.c,4     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

Radar bug: 

> Release notes for this change:

Checkin for PDM A2 engineering build on 6/22/93.  ROM timing tables now working.  I will
still need to finalize the contents of the tables with the results of a 6/23 meeting.
Display modes can be flagged as “doesn’t need confirmation”.  Monitors does not ask the
user to verify mode switches to those “safe” modes.

Driver can also return information about the connection including that ALL modes are
safe.  This is for devices that KNOW that all the modes are safe.  Saves changing decl
ROMs to include a table of timings.  I expect the portables to use this feature for
640x400 mode switches.

Also (hopefully) fixed pesky, occasional cursor-crash on mode switches.  Fix not required
for alpha.  Down side to this fix is that the cursor is reset (0, 0) on mode switches.  I
will need to figure out exactly what is going on here.

> What was tested:

Built ROM and tested on PDM.  Mode switches to 13” & 16” modes don’t require
confirmation.  Switches to VGA and 12” modes do.  Tested that “all modes safe” flag
works.  Tried and failed to reproduce cursor crash.  I now know that the mouse position
is outside of the pinrect at the time the cursor is drawn.
----------------------------------------------------------•----------------------------------------------------------
6/25/93 9:42:42 AM

File: SonoraDriver.a,15     
Owner: Ian Hendry     
Project: SuperMarioProj∫DeclData∫DeclVideo∫Sonora∫

File: Displays.a,5     
Owner: Ian Hendry     
Project: SuperMarioProj∫Interfaces∫AIncludes∫

File: Displays.h,5     
Owner: Ian Hendry     
Project: SuperMarioProj∫Interfaces∫CIncludes∫

File: DisplaysPriv.a,5     
Owner: Ian Hendry     
Project: SuperMarioProj∫Internal∫Asm∫

File: DisplaysPriv.h,7     
Owner: Ian Hendry     
Project: SuperMarioProj∫Internal∫C∫

File: DisplayMgr.c,9     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

Radar bug: 

> Release notes for this change:

Changed DMAddDisplay to add device to devicelist and DMRemoveDisplay to remove device
from devicelist.  Added some new calls to support DMAddDisplay, DMRemoveDisplay and smart
monitors (see header and forthcoming ERS).

Changed the display manager to clear get connection and get timing calls (rather than the
driver).  This was Mike Puckett’s suggestion.  It makes it so if you add fields, old
drivers don’t set only some of the fields.

> What was tested:

Build and tested ROM on PDM.  Mode switching still worked.  I to work with Max to be sure
that DMAddDisplay and DMRemoveDisplay work.
----------------------------------------------------------•----------------------------------------------------------
6/25/93 11:58:49 AM

File: DisplayMgr.c,10     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgrUtils.c,5     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

Radar bug: 

> Release notes for this change:

Changing initialization of driver caused some information to be cleared.  Causes monitors
to always ask for confirmation.  I also noted that my declRom look up always seemed to
work even though I was doing it wrong.... so I fixed it.

> What was tested:

Built ROM and tested on PDM.  Mode switches no longer require confirmation.
----------------------------------------------------------•----------------------------------------------------------
7/2/93 4:51:24 PM

File: GestaltEqu.h,15     
Owner: Ian Hendry     
Project: SuperMarioProj∫Interfaces∫CIncludes∫

File: DepVideoEqu.a,47     
Owner: Ian Hendry     
Project: SuperMarioProj∫Internal∫Asm∫

File: PPCInit.c,6     
Owner: Ian Hendry     
Project: SuperMarioProj∫OS∫PPC∫

File: InitItt.c,19     
Owner: Ian Hendry     
Project: SuperMarioProj∫OS∫SCSIMgr4pt3∫

File: ThingManager.c,14     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫ComponentMgr∫

File: ThingManagerDisp.a,4     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫ComponentMgr∫

File: ThingManagerDispatcher.a,3     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫ComponentMgr∫

File: DisplayMgr.c,11     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

Radar bug: 

> Release notes for this change:

Reality update:  Fix gestalt calls to use new prototype (not code change just type
declarations).  Partially updated gestalt header file (except I did not move the error
declarations that should probably be in Errors.h and I did not change the formatting
differences).

> What was tested:

Build and tested.  Found one technically incorrect declaration (but implemented correctly
in assmbler.  Other than that everything seems to work fine.
----------------------------------------------------------•----------------------------------------------------------
8/4/93 12:10:45 PM

File: Displays.a,8     
Owner: Ian Hendry     
Project: MainProj∫Interfaces∫AIncludes∫

File: GestaltEqu.a,72     
Owner: Ian Hendry     
Project: MainProj∫Interfaces∫AIncludes∫

File: Displays.h,10     
Owner: Ian Hendry     
Project: MainProj∫Interfaces∫CIncludes∫

File: GestaltEqu.h,84     
Owner: Ian Hendry     
Project: MainProj∫Interfaces∫CIncludes∫

File: GestaltEqu.p,69     
Owner: Ian Hendry     
Project: MainProj∫Interfaces∫PInterfaces∫

File: DisplaysPriv.a,7     
Owner: Ian Hendry     
Project: MainProj∫Internal∫Asm∫

File: DisplaysPriv.h,11     
Owner: Ian Hendry     
Project: MainProj∫Internal∫C∫

File: DisplayMgr.a,13     
Owner: Ian Hendry     
Project: MainProj∫Toolbox∫DisplayMgr∫

File: DisplayMgr.c,12     
Owner: Ian Hendry     
Project: MainProj∫Toolbox∫DisplayMgr∫

File: DisplayMgrCompatibility.c,2     
Owner: Ian Hendry     
Project: MainProj∫Toolbox∫DisplayMgr∫

File: DisplayMgrUtils.c,4     
Owner: Ian Hendry     
Project: MainProj∫Toolbox∫DisplayMgr∫

File: DisplayMgr.make,4     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

Radar bug: #1101633,1098397,1101795,1101636

> Release notes for this change:

Fixed a number of compatibility bugs (1101633,1098397,1101795,1101636).

I investigated a number of strategies for application compatibility when the main display
changed to a different monitor.  The problem was that there were alway incompatibilities
with some applications and/or performance penalties.

New Implementation:
Exchange the contents the old main device and the new main device so that cached handles
still behave correctly.  There is no performance penalty and (so far) no application
incompatibilities beyond those introduced by the change in size.  I dicussed all these
solutions with Kon Othmer and we both feel this is the base strategy.  The only problem
is that this implementation breaks the connection between a phsyical monitor and its
gDevice.

Rejected implementations:
  (1) changing the lo-mem MainDevice field (apps cache this value),
  (2) introducing a dummy device in the device list that MainDevice points to and
shadowing and disabling the real main device such that caching MainDevice handle works
(some apps had problems and performance suffered because QD always take the multidevice
case, and boot code assumes that all devices in the device list are active screen devices
and therefore ‘scrn’ resources are invalid if it finds an extra device),
  (3) introducing a dummy device BEFORE the device list and pointed MainDevice at it.
Fixed the boot problems and the performance hit, but broke applications that assume
MainDevice is in device list (including MicroSoft Excel).

Added compatibility model.  Conditionally compiled fixes in a separate file with some
guildlines for making sure these fixes can be turned off.  The CloseView compatilbility
fix is the only one in use.

WARNING:
WARNING:  As of this check in, you must use either Pre-Display Manager Monitors CP or
WARNING:  Psychic TV A4 Monitors CP.  The API changed slightly to clean up the interface
WARNING:  and intermediate versions will crash.
WARNING:


> What was tested:

Built and tested extension.  Margarita regressed most of the existing bugs and things
seemed to working.
----------------------------------------------------------•----------------------------------------------------------
8/4/93 4:07:22 PM

File: Displays.a,6     
Owner: Ian Hendry     
Project: SuperMarioProj∫Interfaces∫AIncludes∫

File: GestaltEqu.a,19     
Owner: Ian Hendry     
Project: SuperMarioProj∫Interfaces∫AIncludes∫

File: Displays.h,6     
Owner: Ian Hendry     
Project: SuperMarioProj∫Interfaces∫CIncludes∫

File: GestaltEqu.h,18     
Owner: Ian Hendry     
Project: SuperMarioProj∫Interfaces∫CIncludes∫

File: GestaltEqu.p,10     
Owner: Ian Hendry     
Project: SuperMarioProj∫Interfaces∫PInterfaces∫

File: DisplaysPriv.a,6     
Owner: Ian Hendry     
Project: SuperMarioProj∫Internal∫Asm∫

File: DisplaysPriv.h,8     
Owner: Ian Hendry     
Project: SuperMarioProj∫Internal∫C∫

File: DisplayMgr.a,7     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgr.c,12     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgr.make,5     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgrUtils.c,6     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

Radar bug: #1101633,1098397,1101795,1101636,1102280

> Release notes for this change:

Fixed a number of compatibility bugs (1101633,1098397,1101795,1101636,1102280).

I investigated a number of strategies for compatibility when the main display
changed to a different monitor.  The problem was that there were alway incompatibilities
with some applications and/or performance penalties.

New Implementation:
Exchange the contents the old main device and the new main device so that cached handles
still behave correctly.  There is no performance penalty and (so far) no application
incompatibilities beyond those introduced by the change in size.  I dicussed all these
solutions with Kon Othmer and we both feel this is the base strategy.  The only problem
is that this implementation breaks the connection between a phsyical monitor and its
gDevice.

Rejected implementations:
  (1) changing the lo-mem MainDevice field (apps cache this value),
  (2) introducing a dummy device in the device list that MainDevice points to and
shadowing and disabling the real main device such that caching MainDevice handle works
(some apps had problems and performance suffered because QD always take the multidevice
case, and boot code assumes that all devices in the device list are active screen devices
and therefore ‘scrn’ resources are invalid if it finds an extra device),
  (3) introducing a dummy device BEFORE the device list and pointed MainDevice at it.
Fixed the boot problems and the performance hit, but broke applications that assume
MainDevice is in device list (including MicroSoft Excel).

Added compatibility model.  Conditionally compiled fixes in a separate file with some
guildlines for making sure these fixes can be turned off.  The CloseView compatilbility
fix is the only one in use.

WARNING:
WARNING:  As of this check in, you must use either Pre-Display Manager Monitors CP or
WARNING:  Psychic TV A4 Monitors CP.  The API changed slightly to clean up the interface
WARNING:  and intermediate versions will crash.
WARNING:


> What was tested:

Built and tested extension with Reality sources.  Margarita regressed most of the
existing bugs and things seemed to work.  I updated SuperMario from reality and built and
tested resolution flipping and new version of monitors on PDM.  Everything seems fine.

----------------------------------------------------------•----------------------------------------------------------
8/16/93 9:18:14 PM

File: Displays.a,7     
Owner: Ian Hendry     
Project: SuperMarioProj∫Interfaces∫AIncludes∫

File: Displays.h,7     
Owner: Ian Hendry     
Project: SuperMarioProj∫Interfaces∫CIncludes∫

File: DisplaysPriv.a,7     
Owner: Ian Hendry     
Project: SuperMarioProj∫Internal∫Asm∫

File: DisplaysPriv.h,10     
Owner: Ian Hendry     
Project: SuperMarioProj∫Internal∫C∫

File: DisplayMgr.a,9     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgr.c,13     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgrCompatibility.c,2     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgrUtils.c,7     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

Radar bug: #1099391

> Release notes for this change:

Synced to latest Reality changes.  Fixed Apple event notification bugs where applications
were getting events they did not know how to handle and were putting up error messages.
Fixed apple event notification to return pre/post information on display states.  Fixed
notification to procptrs for extensions.  Removed some preliminary data structures that
are not used in DM 1.0.  Support QuickDraw GX.

> What was tested:

Built and ran. Checked mode switches.
----------------------------------------------------------•----------------------------------------------------------
8/26/93 9:38:54 PM

File: Displays.h,8     
Owner: Ian Hendry     
Project: SuperMarioProj∫Interfaces∫CIncludes∫

File: Processes.h,2     
Owner: Ian Hendry     
Project: SuperMarioProj∫Interfaces∫CIncludes∫

File: DisplaysPriv.h,11     
Owner: Ian Hendry     
Project: SuperMarioProj∫Internal∫C∫

File: DisplayMgr.c,15     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgrUtils.c,8     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

Radar bug: #1108969

> Release notes for this change:

Checked in first try at making Display Manager registration calls usable before the
process manager loads.

Rearranged some defines to where they belong.  Move apple event declarations to
Displays.h and move display manager size bit to Processes.h.

Laid ground work for Res-Ind QD in AppleEvent.

> What was tested:

Built and verified ROM still worked on PDM and mode switching was working.
----------------------------------------------------------•----------------------------------------------------------
9/2/93 2:34:10 AM

File: StartBoot.a,52     
Owner: Ian Hendry     
Project: SuperMarioProj∫OS∫StartMgr∫

File: DisplayMgr.c,16     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

Radar bug: #1108969, 1106433

> Release notes for this change:

1108969:  Made sure that notification was available at init time.  This means changing
StartBoot.a to call initialize me in the ROM version and it means having no process
manager dependencies.

I also make sure I am using the system heap when I allocate apple events.  I switched the
code to assume that registered notification procs are responsible for disposing their own
apple events.

1106433:  I fixed my use of CopyPixMap so that I no longer count on QuickDraw to do the
right thing with nil color tables.  I cleaned up the code a little around there so I am
not making bad assumptions about ports.


> What was tested:

1106433:  Built and tested on PDM running NQD extension provided by Shannon to determine
that a) if I make the CopyPixMap call with a nil color table it works (although it
returns an error) and b) that I no longer use a nil color table and so I get no error at
all.

1108969:  Built a small test tool extension that registers itself at init time and dumps
the apple events from display manager.  The tool can also remove notification procs.  I
checked that the procs are correctly installed, that notification happens, that removal
works.  I checked that removing all the procs works, that removing some of the procs
works,  that installing one proc works, that installing multiple procs works.  Everything
seeems cool now.
----------------------------------------------------------•----------------------------------------------------------
9/2/93 10:48:27 PM

File: DisplayMgr.c,17     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

Radar bug: #1101633

> Release notes for this change:

Fix SetMainDevice for Canvas.  Canvas has a custom color table on a screen port.  I was
blasting their port CTable with the CTable from the new main device.  This was bad
because Canvas (correctly) assumed that it owned the color table and wrote over it.
Since I replaced their huge CTable with a small one, they killed their heap.  I will now
correctly restore custom port CTables.

> What was tested:

Built 68k extension and tested with Canvas.  Everything worked fine.
----------------------------------------------------------•----------------------------------------------------------
9/10/93 11:33:52 AM

File: DisplaysPriv.a,9     
Owner: Ian Hendry     
Project: SuperMarioProj∫Internal∫Asm∫

File: CrsrDevPriv.h,2     
Owner: Ian Hendry     
Project: SuperMarioProj∫Internal∫C∫

File: DisplaysPriv.h,12     
Owner: Ian Hendry     
Project: SuperMarioProj∫Internal∫C∫

File: DisplayMgr.a,10     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgr.c,18     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgr.make,8     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgrUtils.c,9     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

Radar bug: #1110418, 1105959

> Release notes for this change:

Fixed cursor crash and dispose monitor bugs.

> What was tested:

Built and heavily tested ROM version using A5e7.  Looking for cursor bug.
----------------------------------------------------------•----------------------------------------------------------
11/5/93 10:01:42 AM

File: Displays.a,9     
Owner: Ian Hendry     
Project: SuperMarioProj∫Interfaces∫AIncludes∫

File: Displays.h,10     
Owner: Ian Hendry     
Project: SuperMarioProj∫Interfaces∫CIncludes∫

File: Quickdraw.h,6     
Owner: Ian Hendry     
Project: SuperMarioProj∫Interfaces∫CIncludes∫

File: SysEqu.h,5     
Owner: Ian Hendry     
Project: SuperMarioProj∫Interfaces∫CIncludes∫

File: Video.h,6     
Owner: Ian Hendry     
Project: SuperMarioProj∫Interfaces∫CIncludes∫

File: DisplaysPriv.a,11     
Owner: Ian Hendry     
Project: SuperMarioProj∫Internal∫Asm∫

File: DisplaysPriv.h,14     
Owner: Ian Hendry     
Project: SuperMarioProj∫Internal∫C∫

File: DisplayMgr.a,12     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgr.c,20     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgrOverlap.c,2     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: DisplayMgrUtils.c,11     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫DisplayMgr∫

File: MenuMgr.a,20     
Owner: Ian Hendry     
Project: SuperMarioProj∫Toolbox∫MenuMgr∫

Radar bug: 

> Release notes for this change:

Rolled in Excelsior changes for PDM ROM.

> What was tested:

Built and booted a RISC ROM on coldfusion.
----------------------------------------------------------•----------------------------------------------------------
