mirror of
https://github.com/elliotnunn/supermario.git
synced 2024-11-24 17:32:59 +00:00
1083 lines
45 KiB
Plaintext
1083 lines
45 KiB
Plaintext
ResourceMgr Release Notes
|
||
First created on: 3/16/92 3:53:17 PM
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
|
||
3/16/92 3:53:24 PM
|
||
|
||
File: ROvr.a,8
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Tidbits∫
|
||
|
||
File: ResourceMgrPatches.a,21
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1024511
|
||
|
||
> Release notes for this change:
|
||
|
||
Moved read only zone cutback code from Rovr.a to ResourceMgrPatches.a. Apparently the code
|
||
wasn’t working in Rovr.a, but it worked in ResourceMgrPatches.a which is where it was originally.
|
||
This saves several hundred bytes of memory in ci class machines.
|
||
|
||
|
||
> What was tested:
|
||
|
||
The zone is cut back correctly, and there is no longer a “!” next to the zone when doing a “hz” in
|
||
MacsBug.
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
3/17/92 3:32:43 PM
|
||
|
||
File: ResourceMgrExtensions.a,39
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1024085
|
||
|
||
> Release notes for this change:
|
||
|
||
IsThisASystemResourceMap returns an error for ROM resources because 1 is not a valid file
|
||
reference number. Add a special bailout case for the ROM resource map so the error is not
|
||
generated.
|
||
|
||
> What was tested:
|
||
|
||
RGetResource no longer returns an error.
|
||
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
3/23/92 6:59:27 PM
|
||
|
||
File: ResourceOverridePatches.a,31
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1025075
|
||
|
||
> Release notes for this change:
|
||
|
||
Before Gibblies, calling CountResources or GetIndResource on a resource that was in both an
|
||
application and the system would return both resources. With a Gibbly in place, the one in the
|
||
system would not be found because of the dontCountOrIndexDuplicates behaviour. Added code
|
||
which would make this case work. For each potential duplicate resource, compare the resource
|
||
map of the original and the resource map of the duplicate. If one is an override map of the other,
|
||
then the duplicate should be ignored. If one is not an override map of the other, both instances
|
||
should be counted.
|
||
|
||
|
||
> What was tested:
|
||
|
||
Opened the active System file with ResEdit. Resources that in both the System and the Gibbly only
|
||
show up once, as is correct. Fonts in the Fonts folder only show up once, which is correct. When
|
||
the code is changed to look at only the overrideNextMap bit instead of all the bits, fonts show up
|
||
twice. This is the desired behaviour.
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
3/25/92 5:54:16 PM
|
||
|
||
File: ResourceMgrExtensions.a,41
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1024844
|
||
|
||
> Release notes for this change:
|
||
|
||
Inserting an override map over the a resource map that already has an override map causes the
|
||
machine to hang. This was due to a bug which moved the override map incorrectly in the resource
|
||
chain. Instead of trying to be clever and do everything in one loop, be more sedate and use two
|
||
loops to remove and insert the override map in the proper place.
|
||
|
||
|
||
> What was tested:
|
||
|
||
Ran ResourceMgr TE test cases and watched them pass.
|
||
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
3/30/92 5:54:17 PM
|
||
|
||
File: ResourceMgrPriv.a,13
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Internal∫Asm∫
|
||
|
||
File: ResourceMgrExtensions.a,42
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
File: ResourceMgrPatches.a,22
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
File: ResourceOverridePatches.a,33
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1025140
|
||
|
||
> Release notes for this change:
|
||
|
||
Resource Override Code Review cleanup. Shave some bytes, fix some bugs, remove some patches.
|
||
|
||
> What was tested:
|
||
|
||
Made sure that GetIndResource still returns nil if the resource is not found, now that the patch that
|
||
does that is gone. Made sure the override bits were still being set properly now that several bset
|
||
instructions have been merged into one or instruction. Made sure mask values did not change now
|
||
that labels are being used instead of hard coded numbers. Made sure stack frames did not change
|
||
because of the new stack frame macros.
|
||
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
3/30/92 7:50:13 PM
|
||
|
||
File: ResourceOverridePatches.a,34
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1025277
|
||
|
||
> Release notes for this change:
|
||
|
||
Invalidate the resources cached for GetIndResource and CountResources calls if ROMMapInsert has
|
||
a different value than it did when the cache was built.
|
||
|
||
> What was tested:
|
||
|
||
Broke on the CacheResource routine and watched the cache get invalidated when ROMMapInsert
|
||
is different than it was when the cache was built.
|
||
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
4/4/92 11:11:36 PM
|
||
|
||
File: ResourceOverridePatches.a,35
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1026179
|
||
|
||
> Release notes for this change:
|
||
|
||
Invalidate the cache if override maps are not being scanned, and they were scanned when the cache
|
||
was formed, and vice versa.
|
||
|
||
> What was tested:
|
||
|
||
Watched cache get invalidated when override map scanning is turned off.
|
||
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
4/6/92 6:03:51 PM
|
||
|
||
File: ResourceMgrExtensions.a,43
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1026612
|
||
|
||
> Release notes for this change:
|
||
|
||
Changes from Fonts Folder code review. Use _CmpString instead of _IUMagString since we know
|
||
that the fonts belong to the same script at this point.
|
||
|
||
|
||
> What was tested:
|
||
|
||
Made sure that the correct branch was taken after returning from _CmpString.
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
4/10/92 2:56:51 PM
|
||
|
||
File: ResourceMgrExtensions.a,44
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
> Release notes for this change:
|
||
|
||
•BLT: Gibblies were not being made resident. This was caused by a typo introduced with the last change. The
|
||
override attributes were being set off of A0 instead of A1.
|
||
|
||
> What was tested:
|
||
|
||
Gibblies now stay resident with this change. My sample Gibbly, which contains my screen configuration and
|
||
desktop pattern did not kick in with the bug. With this change, I get my nice blue desktop pattern, and my
|
||
two monitors.
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
4/14/92 11:53:34 AM
|
||
|
||
File: ResourceOverridePatches.a,36
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1026179
|
||
|
||
> Release notes for this change:
|
||
|
||
Bill and I had different interpreations about what turning override maps on and off meant. Of
|
||
course, Bill’s idea was right. Make additions to the last change so that when override map
|
||
scanning is off, blindly add resources to the cache on CountResources and GetIndResource calls.
|
||
This will result in duplicate resources in the cache, but that’s what you get for turning overrides
|
||
off.
|
||
|
||
> What was tested:
|
||
|
||
Bill has a test case which does CountResources on a resource type that’s in a Gibbly and in the
|
||
System. When override scanning is on, as is the default, only the resource in the Gibbly is
|
||
counted. When override scanning is off, both instance of the resource are found.
|
||
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
4/21/92 4:40:43 PM
|
||
|
||
File: Traps.a,75
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Interfaces∫AIncludes∫
|
||
|
||
File: Resources.h,12
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Interfaces∫CIncludes∫
|
||
|
||
File: Resources.p,8
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Interfaces∫PInterfaces∫
|
||
|
||
File: ResourceMgrExtensions.a,45
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1018901
|
||
|
||
> Release notes for this change:
|
||
|
||
With the Fonts folder, a font family can be split across several files. This is a new
|
||
behaviour, and
|
||
programs that assume that a ‘FOND’ will contain information about all the fonts belonging
|
||
to that
|
||
font family will be in for a surprise. Provide a new call, GetNextFOND, which will take
|
||
a handle to
|
||
a ‘FOND’ resource as a parameter, and it will return the next ‘FOND’ resource in the
|
||
resource chain
|
||
belonging to the same family. The LaserWriter driver is currently the only client of
|
||
this call.
|
||
|
||
> What was tested:
|
||
|
||
The bug states that MacWrite II’s ReadMe file does not print correctly under Cube-E.
|
||
This was due
|
||
to the fact that the LaserWriter driver was looking for a style mapping table in the
|
||
first Gevena
|
||
‘FOND’ it found. This is the one in the system file, which does not have a style mapping
|
||
table.
|
||
Because it does not find a style mapping table, it tries to download a bitmapped font.
|
||
Instead, the
|
||
LaserWriter driver should look for another Geneva ‘FOND’.
|
||
The LaserWriter driver has been changed to call the new routine GetNextFOND to look for
|
||
another
|
||
‘FOND’ for the same family if the ‘FOND’ it has does not have a style mapping table.
|
||
With this fix,
|
||
MacWrite II can print it’s ReadMe document without any problems, whereas it would print
|
||
in
|
||
Courier without the fix.
|
||
GetNextFOND also has code which checks to see if the ‘FOND’ is in an override map. If it
|
||
is,
|
||
GetNextFOND will search for the map after the first non-override map after the override
|
||
map, so
|
||
that the same ‘FOND’ resource will not be returned all the time. To test this, I placed
|
||
a copy of
|
||
the Geneve ‘FOND’, and the ‘NFNT’s in the System into a Gibbly and tried to print the
|
||
ReadMe file.
|
||
This also printed correctly.
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
4/21/92 8:21:58 PM
|
||
|
||
File: ResourceOverridePatches.a,37
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1027940
|
||
|
||
> Release notes for this change:
|
||
|
||
The original GetIndResource uses the Resource Manager HandleScan cache in low memory to
|
||
stash the resource it returns. A subsequent GetResInfo would use the information in the
|
||
cache to find the resource instead of searching all the maps again. In Cube-E,
|
||
GetIndResource is completely patched out, and each resource that was fetched was not
|
||
stored in this cache. Change GetIndexedResourceOverride so that each resource it gets is
|
||
saved in this cache.
|
||
|
||
> What was tested:
|
||
|
||
Bill’s test tool calls GetIndResource with ROMMapInsert set to true. A subsequent
|
||
GetResInfo would fail because the resource was not saved in the HandleScan cache, and the
|
||
ROM map was no longer in the resource chain. GetResInfo would first look at the
|
||
HandleScan cache, see that the resource in the cache was not that resource that we’re
|
||
looking for information about, try to find the ROM map in the resource chain, fail to
|
||
find that, and return an error. With this fix, GetResInfo successfully finds the
|
||
resource handle in the cache, so it can get the information about the resource even
|
||
though the ROM map is not in the resource chain. Resource Manager sucks.
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
4/22/92 12:05:58 PM
|
||
|
||
File: ResourceMgrExtensions.a,46
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1027036
|
||
|
||
> Release notes for this change:
|
||
|
||
Strange things were happening in the Finder when you option copy a font from a suitcase
|
||
in the Fonts folder into the Fonts folder, because the ResolveIDConflicts routine would
|
||
detach and dispose of font handles out from underneath the Finder. Change the routine to
|
||
determine whether or not we loaded the font handle, or if it was loaded before
|
||
ResolveIDConflicts was called. If it was already loaded, don’t deallocate the resource.
|
||
In effect, only font resources from file that was passed to ResolveIDConflicts are
|
||
detached and released now.
|
||
|
||
> What was tested:
|
||
|
||
I put a debugger break in my routine which releases the font resource. Without the
|
||
change, the routine would just go ahead and release the font resource that was passed to
|
||
it. In some cases, this would release the handle out from underneath the Finder. With
|
||
the change, the routine now checks to see if the handle was loaded by us or by someone
|
||
else. If the resource was loaded by someone else, the resource is not detached or
|
||
released.
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
4/24/92 7:22:26 PM
|
||
|
||
File: ResourceOverridePatches.a,38
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1028323
|
||
|
||
> Release notes for this change:
|
||
|
||
When _InitAllPacks is called to initializes all the ‘PACK’ resources, it sets
|
||
ROMMapInsert to be true to get ROM ‘PACK’s, like ‘PACK’ 7. If a Gibbly is active, and
|
||
the current resource map happens to be the system map, ROM ‘PACK’s aren’t found. The
|
||
Resource Manager always puts the ROM resource map above the resource map in SysMapHndl.
|
||
The Resource Override mechanism puts the Gibbly in SysMapHndl for all Resource Manager
|
||
calls that have ROMMapInsert on so that the Gibbly is not cut out of the resource chain.
|
||
(This is why Brian McGhie is so cynical.) The Resource Manager decides whether or not to
|
||
make the ROM map the current resource map by seeing if CurMap equals SysMap. The
|
||
override code changes SysMap, but not CurMap, so the Resource Manager winds up not
|
||
looking in the ROM resource map for any resources. (How did this ever work?) Change the
|
||
override code to change CurMap as well if CurMap equals SysMap.
|
||
|
||
> What was tested:
|
||
|
||
Some machines wouldn’t boot with build 44, if a Gibbly was active, because AppleTalk now
|
||
calls Pack7. This winds up causing a SysErr 24, which is Pack 7 not present. With this
|
||
change, all machines now successfully boot.
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
4/27/92 7:48:37 PM
|
||
|
||
File: ResourceOverridePatches.a,39
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #100850
|
||
|
||
> Release notes for this change:
|
||
|
||
SyncTopOverrideMap trashes a1, which is a no no for Resource Manager routines. Use a0
|
||
instead of a1, since that register is saved off.
|
||
|
||
> What was tested:
|
||
|
||
The symptom of this bug was that Mode32 was not being installed properly under CubeE,
|
||
because it kept the handle to its special ‘boot’ resource in a1, then called Unique1ID,
|
||
which wound up trashing a1, so it did a half bail out of its code. With this fix, a1 is
|
||
no longer trashed, and Mode32 installs and runs properly.
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
4/30/92 4:48:34 PM
|
||
|
||
File: ResourceOverridePatches.a,41
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1028807
|
||
|
||
> Release notes for this change:
|
||
|
||
When emScanOverrideMaps is false, all override attributes should be ignored. At first,
|
||
only the override next map attribute was ignored, then dontCountOrIndexDuplicates was
|
||
ignored too. Now ignore the twoDeep attribute on resource maps.
|
||
|
||
> What was tested:
|
||
|
||
Whether the twoDeep attribute is ignored or not produces different resource counts in
|
||
Bill’s test tool. We theorized the count that should be returned in both cases. With
|
||
the change, the count returned by the test tool is the count that we expected in theory.
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
5/5/92 1:59:02 PM
|
||
|
||
File: ResourceOverridePatches.a,42
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1028857
|
||
|
||
> Release notes for this change:
|
||
|
||
The Resource Override mechanism fails if a one deep resource manager call is made on an
|
||
application resource map that is overriden, and ROMMapInsert is set.
|
||
|
||
Because the ROM map will never have any of the resource override attribute bits set, all
|
||
the resource override routines try to call the original routines if the ROM map would
|
||
become the current resource map, for one deep calls. (Since the ROM map never has the
|
||
twoDeep bit set, there is no need for the overhead of setting the chain up for the two
|
||
deep behaviour.) However, this check was done incorrectly, so that resource overriding
|
||
would never happen on one deep calls if ROMMapInsert is set. While this is fine in the
|
||
current situation, since the system file is the only file that has an override map, if we
|
||
ever decide to put an override map on top of an application, resource overriding would
|
||
not work.
|
||
|
||
Change the resource override code so that the override behaviours is only skipped when
|
||
ROMMapInsert is set AND the current resource map is the system file.
|
||
|
||
|
||
> What was tested:
|
||
|
||
Bill wrote a test application that inserts an override map over itself, then tries to get
|
||
an overriden resource. It should get the resource from the override map, but gets the
|
||
one from the application itself, with the current system. With the change, the resource
|
||
is correctly fetched from the override map.
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
5/8/92 6:08:51 PM
|
||
|
||
File: ResourceMgrExtensions.a,47
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1029162
|
||
|
||
> Release notes for this change:
|
||
|
||
Change the interface of OpenResFileUnderSysteMap so that the Dictionary Manager can use
|
||
this call to open dictionaries with different permissions.
|
||
|
||
> What was tested:
|
||
|
||
The routine that opens font files at startup had to be changed to pass an extra parameter
|
||
to OpenResFileUnderSystemMap. Made sure that all font files were opened with read write
|
||
permissions. Also stepped through OpenResFileUnderSysteMap to make sure the right byte
|
||
on the stack is being passed to FSpOpenResFile.
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
5/14/92 8:59:40 AM
|
||
|
||
File: ResourceMgrPriv.a,14
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Internal∫Asm∫
|
||
|
||
File: ResourceMgrPriv.h,10
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Internal∫C∫
|
||
|
||
File: ResourceMgrExtensions.a,48
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1028722 (This was a bogus bug number. But I changed it.)
|
||
|
||
> Release notes for this change:
|
||
|
||
OK, that’s not a real bug number. I don’t know what the real bug number is. But I know
|
||
I’m supposed to fix this. The bug stated that if you added fonts to the Fonts folder,
|
||
then took them out, then added them back in, and kept doing this, eventually, the Finder
|
||
would say that you’re not allowed to add any more fonts, even though there are way less
|
||
than 128 files in the Fonts folder. This is because the Finder decided to start closing
|
||
the font files as they got pulled out of the Fonts folder. However, an internal count is
|
||
kept of how many font files are opene, and this count is not decremented when the Finder
|
||
closes font files, but is incremented every time a file is added to the Fonts folder. So
|
||
the count keeps going up and up and up until it gets to 128. Since the count is really
|
||
internal to the Fonts folder code, rather than having the Finder change this count, we
|
||
decided to have the converse call to OpenResFileUnderSystemMap which is used to open font
|
||
files. This change adds the routine CloseResFileUnderSystemMap. This routine closes
|
||
resource files that were opened under the system map, and if it’s a font file in the
|
||
Fonts folder, decrements the count of open font files.
|
||
|
||
> What was tested:
|
||
|
||
Added some debugging code to OpenResFileUnderSystemMap to close the files as soon as they
|
||
have been opened so I could watch CloseResFileUnderSystemMap in action. The code works,
|
||
and the count decrements properly. At the end of the boot sequence, no fonts were open,
|
||
and the count was 0.
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
5/18/92 10:49:16 AM
|
||
|
||
File: ResourceMgrExtensions.a,51
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1030232
|
||
|
||
> Release notes for this change:
|
||
|
||
OpenResFileUnderSystemMode uses a local stack variable to remember if the Process Manager
|
||
has launched yet to determine if it’s OK to call _BeginSystemMode and _EndSystemMode.
|
||
However, this stack variable was never initialized, so whether _EndSystemMode wound up
|
||
being called or not depended on the luck of the stack being 0 at that location.
|
||
Initialize this variable before it’s ever used. This bug caused WorldScript II to crash
|
||
because it now calls OpenResFileUnderSystemMap at boot time.
|
||
|
||
|
||
> What was tested:
|
||
|
||
WorldScript II doesn’t crash any more.
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
5/21/92 3:33:01 PM
|
||
|
||
File: ResourceMgrExtensions.a,52
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1030292
|
||
|
||
> Release notes for this change:
|
||
|
||
The change that checks to see if a font resource was already loaded to decide whether or
|
||
not to unload that resource during ResolveIDConflicts leaves ‘FOND’s locked in memory.
|
||
This happens because three routines share a single flag which determines whether or not a
|
||
font should be released. In some cases, the flag will be re-used before the first user
|
||
of the flag has gotten far enough to try to release the font resource. Added code which
|
||
saves and restores the value of this flag in FindNewFamilyNumber and
|
||
ValidateFontResources so that no one steps on each other’s toes.
|
||
|
||
> What was tested:
|
||
|
||
The ‘FOND’ resources which were left locked in memory are actually unloaded now.
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
5/26/92 4:33:34 PM
|
||
|
||
File: ResourceOverridePatches.a,43
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1030806
|
||
|
||
> Release notes for this change:
|
||
|
||
RmveResource fails for resources that are located in an override map. This is because
|
||
RmveResource sucks, and only allows resources to be removed from the current resource
|
||
map. Since an overriden resource comes from an override map, and not the current
|
||
resource map, RmveResource would fail. Add a pre-flight to RmveResource to see if the
|
||
resource handle comes from the current resource map. If it doesn’t, see if the map it
|
||
comes from is an override map of the current resource map, and if THAT is true, then set
|
||
CurMap to be the override map for the duration of the call to RmveResource.
|
||
|
||
> What was tested:
|
||
|
||
Bill’s cornucopia of test cases found this bug. The result was that RmveResource would
|
||
return rmvResFailed. With this fix, the resource is successfully removed, and no error
|
||
is returned from RmveResource.
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
5/26/92 8:25:34 PM
|
||
|
||
File: ResourceMgrExtensions.a,53
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1027036
|
||
|
||
> Release notes for this change:
|
||
|
||
<46> Revisited. The change which checked to see if a resource was already loaded so that
|
||
ResolveIDConflicts would know whether or not to unload a font resource didn’t take purged
|
||
handles into account, so ResolveIDConflicts would still release purged resources out from
|
||
under the Finder. Add a patch to CheckLoad which sets a bit in BrianBits in low memory
|
||
for every resource fetch. This bit will be set to 1 if this call to CheckLoad will
|
||
allocate the master pointer for the resource, or 0 if the master pointer was previously
|
||
allocated. ResolveIDConflicts checks this bit after each resource call for a resource it
|
||
might want to dispose.
|
||
|
||
> What was tested:
|
||
|
||
The bug said that the Finder would start closing windows if you copied a font from a
|
||
suitcase in the Fonts folder into the Fonts folder, because it got confused. We had some
|
||
difficulty reproducing this consistently, but we would get it to happen eventually. With
|
||
this fix, we couldn’t get this to happen at all, after copying fonts for the better part
|
||
of half an hour.
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
5/27/92 11:50:30 AM
|
||
|
||
File: ResourceOverridePatches.a,44
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1030811
|
||
|
||
> Release notes for this change:
|
||
|
||
People who put 1 into CurMap to get to the ROM resource map suck, and I hate them all.
|
||
Change <42> short circuits all the resource override code if the ROM resource map would
|
||
become the current resource map, since the ROM resource map will not have any override
|
||
bits set. The check to make this determination was if ROMMapInsert was set, and if
|
||
CurMap equaled SysMap. Of course, if CurMap was 1, then it would go on and execute all
|
||
the override code which would fail to find the ROM resource map in the resource chain,
|
||
and bail with an error. This caused the RAM Disk panel of the Memory control panel to
|
||
not show up on the Terror/Horror machines, because the call in Memory that determines
|
||
whether or not to show that panel slams 1 into CurMap, then calls Get1NamedResource to
|
||
find the EDisk driver in ROM.
|
||
|
||
> What was tested:
|
||
|
||
The RAM disk panel shows up on a Terror ROM machine (Quadra 950) in Memory with this fix.
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
5/27/92 5:28:34 PM
|
||
|
||
File: ResourceMgrPatches.a,23
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1008888
|
||
|
||
> Release notes for this change:
|
||
|
||
Suitcase II and Cube-E have a hard time together because they’re both fighting over who
|
||
gets control of the Resource Manager. A patch was introduced in Cube-E a3 or a4 to keep
|
||
Suitcase II 1.2.10 working. This patch checksums the patch routine that Suitcase is
|
||
trying to install, and if it matches the checksum we keep around, it doesn’t install
|
||
Suitcase’s patch. This checksum changed between versions of Suitcase, so additional
|
||
checksums were needed. Checksums for 1.2.11, and 1.2.12 were added.
|
||
|
||
> What was tested:
|
||
|
||
Versions that fail the checksum test cause the machine to hang as Suitcase tries to load.
|
||
Versions that pass the checksum test continue to boot normally. Verified checksum values
|
||
for Suitcase II versions 1.2.10 through 1.2.12.
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
6/1/92 7:25:36 PM
|
||
|
||
File: ResourceOverridePatches.a,45
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1031101
|
||
|
||
> Release notes for this change:
|
||
|
||
A previous change made RmveResource work with override maps. (RmveResource only removes
|
||
resource from the current resource map, so it had to be patched to change the current map
|
||
in case the resource came from an override map.) The same thing needed to be done for
|
||
font files in the Fonts folder.
|
||
|
||
Add an additional call to IsThisASystemResourceMap to determine if the resource map is an
|
||
override map or a font map in one fell swoop. Then call DoesCachedMapOverrideThisMap in
|
||
case we have an application override map.
|
||
|
||
> What was tested:
|
||
|
||
Ran through Bill’s RmveResource test cases, and all the tests were passed.
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
6/2/92 12:09:45 PM
|
||
|
||
File: ResourceOverridePatches.a,46
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1031021
|
||
|
||
> Release notes for this change:
|
||
|
||
When UpdateResFile is called, changed override maps should be updated as well. If the
|
||
system map is being updated, font maps should be updated as well. Add a patch to
|
||
UpdateResFile that does all this.
|
||
|
||
> What was tested:
|
||
|
||
Changed a resource in the system file, and a resource in a Gibbly. Before this change,
|
||
the Gibbly’s resource map would not be updated. With this change, both the system file
|
||
and the Gibbly are updated.
|
||
|
||
One bug that was found with this change was that when a resource in a Gibbly is changed,
|
||
but no change was made to any system file resources, the Gibbly will not be updated
|
||
because the mapChanged bit was never set on the system map. But that’s left for another
|
||
bug and another release note.
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
6/4/92 11:04:58 AM
|
||
|
||
File: ResourceMgrExtensions.a,54
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1031494
|
||
|
||
> Release notes for this change:
|
||
|
||
When making an override map from ROM, the new override map was never placed in the
|
||
resource chain, so override resources would not be found. This occurred because I was
|
||
stupid, and forgot to put the override map at the top of the chain, after I pointed it’s
|
||
next map field at the current top. Add this line.
|
||
|
||
> What was tested:
|
||
|
||
Faked up a ROM override map by forcing the code to get the ‘rovm’ resource from the
|
||
system, and made an override map with just the Brass Horn sound in ROM. This sound then
|
||
shows up in the Sound Control panel.
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
6/4/92 2:48:43 PM
|
||
|
||
File: ResourceOverridePatches.a,47
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1031589, 1031590, 1031591
|
||
|
||
> Release notes for this change:
|
||
|
||
#1031589 & #1031591: These two were actually the same bug. The change to this file that
|
||
fixed the RmveResource bug started to use D1 in a routine that didn’t use it before.
|
||
Other routines that call this routine used D1 for other things, so D1 was trashed. Just
|
||
add D1 to the list of registers to save at the beginning of the routine.
|
||
|
||
#1031590: This bug was actually seperate from the other two, but was uncovered by the
|
||
other one. The routine DoesCachedMapOverrideCurrentMap used to scan the resource chain
|
||
for duplicates until it finds a map that doesn’t have any override attributes set. The
|
||
theory was that a string of resource maps with override attributes set are associated
|
||
with each other, like Gibblies and the System, or the System and font files. This test
|
||
was too generic, and fails in the case where an application has an override map, and the
|
||
map below the application is a Gibbly or the System. In this case, resources in the
|
||
System and the application override that have the same type and ID are considered
|
||
duplicates of each other, which isn’t right. Now, just look at the two deep bit on
|
||
resource maps to determine if one is associated with another.
|
||
|
||
|
||
> What was tested:
|
||
|
||
The symptom of these three bugs was that counting and indexing through resources did not
|
||
work in all cases. With this change, all of Bill’s GetIndResource and CountResources
|
||
test cases succeed. (It’s pretty impressive watching all the test cases pass, I must
|
||
say.)
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
6/5/92 6:01:16 PM
|
||
|
||
File: ResourceMgrExtensions.a,55
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1031210
|
||
|
||
> Release notes for this change:
|
||
|
||
The last font file in the resource chain has the twoDeep bit set. This will allows one
|
||
deep searches on the system file to continue into any third party resource maps, which is
|
||
not desireable. This happens because OpenResFileUnderSystemMap sets this bit as it puts
|
||
a file underneath the system map. However, it should not set this bit if it’s the first
|
||
map being inserted. Conversely, if the last font file in the resource chain (usually the
|
||
first one alphabetically) is being removed from the Fonts folder, the two deep bit should
|
||
be cleared from the resource map above it.
|
||
|
||
> What was tested:
|
||
|
||
This bug was fixed in two steps, first the change to OpenResFileUnderSystemMap, then the
|
||
change to CloseResFileUnderSystemMap. Before either change was made, opening the Sound
|
||
control panel will find all the sounds in a file I keep at the bottom of the resource
|
||
chain for an extension I’m working on. It shouldn’t find these sounds at all. With the
|
||
change to OpenResFileUnderSystemMap, that is fixed. However, if you take the first
|
||
alphabetical font out of the Fonts folder at this time, and open the Sound control panel
|
||
again, you’ll see these sounds, because the two deep bit on the map above this font has
|
||
not been cleared. With the change to CloseResFileUnderSystemMap, the sounds from my file
|
||
at the bottom of the resource chain never show up in the Sound control panel. Also
|
||
checked to make sure that the two deep bit was still set on all the other font files in
|
||
the resource chain.
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
6/7/92 3:13:06 PM
|
||
|
||
File: ResourceOverridePatches.a,49
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1031361
|
||
|
||
> Release notes for this change:
|
||
|
||
Some applications check the mapChanged bit in a resource map to determine whether or not
|
||
it needs to call _UpdateResFile for that map. If that map has an override map with
|
||
changed resources, but the application doesn’t know about the override map, chances are
|
||
that the changes in the override map will not get saved because the application thinks
|
||
that no resources have changed. Modify AddResource, RmveResource, ChangedResource, and
|
||
SetResAttrs to set the mapChanged bit of a resource map if that map has an override map
|
||
with changed resources.
|
||
|
||
> What was tested:
|
||
|
||
If you have an active Gibbly, and you edit a Gibbly resource by opening the system file
|
||
with ResEdit, the changes that were made to the Gibbly resources will not be saved
|
||
because the mapChanged bit of the system map is not set. With the change, ResEdit will
|
||
ask if you want to save the changes you made if you change or remove a Gibbly resource in
|
||
this manner. Also ran all the Resource Manager tests that deal with these four calls,
|
||
and they all succeeded.
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
6/12/92 3:14:19 PM
|
||
|
||
File: ResourceMgrPatches.a,24
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1032324
|
||
|
||
> Release notes for this change:
|
||
|
||
RGetResource starts searching for resources from the current resource map. However, if
|
||
the call to RGetResource inside of MakeITable is made when FMSwapFont calls MakeITable,
|
||
chances are the current resource map will be below the system file, and the call to
|
||
RGetResource to get the ‘mitq’ resource from the system file will fail.
|
||
|
||
Inside Macintosh Volume V states that RGetResource “searches the chain of open resouce
|
||
files (including the System Resource File) for the given resource”. I’m taking artistic
|
||
license and interpretting this to mean that it searches from the top of the resource
|
||
chain instead of from the current resource map. Making this change in interpretation
|
||
will allow the RGetResource call in MakeITable to always succeed.
|
||
|
||
|
||
> What was tested:
|
||
|
||
Without this change, the call to RGetResource in MakeITable will fail because the current
|
||
resource map is below the system map, so the ‘mitq’ resource cannot be found. The result
|
||
of this is that if you have SuperClock installed, and you switch from 256 to 16 colors in
|
||
Monitors, the switch will take about 30 seconds to complete. With this change, the
|
||
switch occurs immediately.
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
6/12/92 3:23:48 PM
|
||
|
||
File: ResourceMgrExtensions.a,56
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
File: ResourceOverridePatches.a,50
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1032065
|
||
|
||
> Release notes for this change:
|
||
|
||
The Finder has a strange bug where if you take a font out of the Fonts folder, then
|
||
immediately double click on it to open it, the Finder thinks that the font is still open,
|
||
and tries to get resources out of a closed file. Inside the Resource Manager, a routine
|
||
is trying to get the resource map handle of the current resource map, which isn’t in the
|
||
resource chain because this is the file that the Finder is deal with. A bus error
|
||
eventually occurs because the Resource Manager is using a nil handle. Added a check to
|
||
the SyncTopOverrideMap routine to make sure that it gets a valid resource map handle for
|
||
the current resource map before continuing. The two deep routines will bail early if
|
||
this is the case, since they all mess with the resource chain.
|
||
|
||
> What was tested:
|
||
|
||
In the scenario stated above, when you double click on the font file, you’ll get a bus
|
||
error. With this change, the bus error doesn’t occur, and the Finder just opens up an
|
||
empty window.
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
6/15/92 11:48:24 PM
|
||
|
||
File: ResourceMgrExtensions.a,57
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1032647
|
||
|
||
> Release notes for this change:
|
||
|
||
ResolveIDConflicts will renumber all the font resources referenced in a ‘FOND’ resource.
|
||
However, if more than one ‘FOND’ resource references the same ‘FONT’,’NFNT’, or ‘sfnt’
|
||
resource, that resource will be renumbered for the first ‘FOND’, but does not update the
|
||
entry in other ‘FOND’s that reference that font resource. This is because
|
||
ResolveIDConflicts does not remember what it’s renumbered so far. ResolveIDConflicts
|
||
needs to remember this so that when it finds a font association table entry that points
|
||
off into the weeds because the font resource was renumbered out from under this ‘FOND’,
|
||
the entry can be changed to reference the new resource ID.
|
||
|
||
This is the bug that’s been freaking Don Showen out on his Quadra, and why MacWrite II
|
||
was having fits with those Garamond Italic fonts.
|
||
|
||
Added some code to ResolveIDConflicts that remembers the old ID of a font resource it
|
||
renumbered, and the new ID it was renumbered to. For subsequent ‘FOND’s in the file, if
|
||
ResolveIDConflicts fails to find a font resource specified in the font association table,
|
||
it looks in this table to see if this ID was renumbered. If this is the case, then the
|
||
font association table entry is changed to reference the new ID.
|
||
|
||
|
||
> What was tested:
|
||
|
||
Go into MacWrite II, type some junk in Helvetica, and save the document. If you get a
|
||
suitcase that had these dangling ‘FOND’s and toss it into the Fonts folder, then open the
|
||
MacWrite II document again, MacWrite II will complain about not finding fonts. Nothing
|
||
will be checked in MacWrite’s Font menu either. This is because the dangling ‘FOND’
|
||
confused the hell out of it. With this change, MacWrite is all happy and keen, and
|
||
Helvetica will be checked in the Font menu like it should be.
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
6/23/92 4:34:28 PM
|
||
|
||
File: ResourceMgrExtensions.a,58
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1033397
|
||
|
||
> Release notes for this change:
|
||
|
||
Resources in a second override map were not being found. The Resource Override patches
|
||
have some cached information. When a second override map was added on top of the system
|
||
map, the cache was not being invalidated, so the new override map was never searched.
|
||
Blow away the cache when InsertOverrideMap is called.
|
||
|
||
> What was tested:
|
||
|
||
After inserting a second override map on the system, resources from this new map would
|
||
not be found. By invalidating the cache, the routine that sets up the override maps for
|
||
the Resource Manager is forced to resynchronize the override maps, including the new one,
|
||
so that resources from this map would then be found.
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
6/24/92 4:39:19 PM
|
||
|
||
File: ResourceOverridePatches.a,51
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1033758
|
||
|
||
> Release notes for this change:
|
||
|
||
The Resource Manager has a mechanism to allow a program to search only the ROM resource
|
||
map for resources. This is done by setting ROMMapInsert, making the system resource map
|
||
the current map, and doing a one deep Resource Manager call. The Resource Override patch
|
||
on CountTypes clears ResOneDeep before calling through to the real CountTypes to emulate
|
||
one deep calls across several maps. However, it should not clear ResOneDeep if
|
||
ROMMapInsert is true, and the system map is the current resource map. Added a check to
|
||
the CountTypesOverride routine to skip clearing ResOneDeep if both of these conditions
|
||
are met.
|
||
|
||
> What was tested:
|
||
|
||
Because ResOneDeep was being cleared, a call to Count1Types with ROMMapInsert true, and a
|
||
Gibbly as the current resource file would count all the resource types in ROM, the
|
||
system, the Gibbly, and the font files instead of just the ROM. By adding this check,
|
||
only ROM resources are counted in this instance.
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
7/8/92 1:57:14 AM
|
||
|
||
File: Lomem.h,4
|
||
Owner: Greg Marriott
|
||
Project: MainProj∫ProcessMgr∫
|
||
|
||
File: ResourceMgrPatches.c,8
|
||
Owner: Greg Marriott
|
||
Project: MainProj∫ProcessMgr∫
|
||
|
||
File: ResourceOverridePatches.a,52
|
||
Owner: Greg Marriott
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1035120
|
||
|
||
> Release notes for this change:
|
||
|
||
Fix the resource manager so it wouldn’t cause problems for the font manager when
|
||
disposing or releasing a resource being referred to in the LastFOND global. If the file
|
||
containing the FOND was closed, or the resource released, then a dangling handle would be
|
||
left in LastFOND. A patch to ReleaseResource now clears LastFOND if the resource being
|
||
released is also referred to in LastFOND. A patch to CloseResFile now clears LastFOND if
|
||
the file being closed contains any fonts (FONT, NFNT, and FOND).
|
||
|
||
> What was tested:
|
||
|
||
Run the crashing case from 1035120 and verify that it doesn’t crash any more. Also, pop
|
||
into the debugger and watch the patches zero the low memory global when appropriate.
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
7/20/92 11:03:57 AM
|
||
|
||
File: ResourceMgrExtensions.a,60
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1035813
|
||
|
||
> Release notes for this change:
|
||
|
||
The routine IsThisASystemResourceMap used to call the File Manager to get the contents of
|
||
the parallel FCB array to determine the process that opened a file. The reasoning behind
|
||
this was to keep knowledge of private File Manager structures isolated to the File
|
||
Manager, and avoid code duplication. The problem is that IsThisASystemResourceMap is
|
||
called quite frequently by the Process Manager’s GetResource patch to determine whether a
|
||
resource should be loaded in the system heap or the application heap. This means that
|
||
the file system queue will almost always have something queued up, preventing the disk
|
||
from spinning down on PowerBooks, thus wasting battery life. Changed
|
||
IsThisASystemResourceMap to look in the parallel FCB array itself without going through
|
||
the File Manager.
|
||
|
||
> What was tested:
|
||
|
||
This was mostly a copy and paste job, so I made sure that IsThisASystemResourceMap was
|
||
still looking in the right place in the parallel FCB array. I’m leaving it up to people
|
||
who care about PowerBook battery life to verify that this actually does allow the disk to
|
||
spin down.
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
7/30/92 4:11:58 PM
|
||
|
||
File: ResourceOverridePatches.a,53
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug: #1038101
|
||
|
||
> Release notes for this change:
|
||
|
||
In GetIndexedResource, save ResOneDeep and ROMMapInsert around the call to CheckLoad in
|
||
case floppies need to be switched, and another Resource Manager call gets made. This
|
||
would reset ResOneDeep and ROMMapInsert, which GetIndexedResource isn’t done using yet.
|
||
|
||
> What was tested:
|
||
|
||
If you’re doing a floppy install, and you launch the installer with an alias to the
|
||
Installer script which is on another floppy, the Resource Manager will crash with a bus
|
||
error when the Installer tries to get the ‘incd’ resource. This happens because when the
|
||
floppy is ejected, the Installer gets called and makes another Resource Manager call. By
|
||
saving and restoring ResOneDeep and ROMMapInsert, the state of the world remains the way
|
||
GetIndexedResource expects it, so the installation can be completed successfully.
|
||
----------------------------------------------------------•----------------------------------------------------------
|
||
9/2/92 12:05:29 PM
|
||
|
||
File: fontPrivate.a,29
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Internal∫Asm∫
|
||
|
||
File: FontMgr.a,70
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫FontMgr∫
|
||
|
||
File: ResourceMgrExtensions.a,61
|
||
Owner: Dean Yu
|
||
Project: MainProj∫Toolbox∫ResourceMgr∫
|
||
|
||
Radar bug:
|
||
|
||
> Release notes for this change:
|
||
|
||
Converting some equates into record structures.
|
||
|
||
> What was tested:
|
||
|
||
No object change.
|
||
|
||
----------------------------------------------------------•----------------------------------------------------------
|