Commit 503570de authored by Jeffrey Lee's avatar Jeffrey Lee
Browse files

Reinstate Wimp_ClaimFreeMemory

Detail:
  This restores support for Wimp_ClaimFreeMemory, via having the Wimp manage a small-ish (4MB) DA that is used to satisfy Wimp_ClaimFreeMemory requests. The Wimp will only ever grow the DA, but the DA is shrinkable, so the system should shrink it as necessary should the free pool run too low.
  Options/s/!Default, Options/s/32, Options/s/Ursula - Add DynamicAreaWCF option to control support for the Wimp_ClaimFreeMemory DA. Enable the option for any builds of the module destined for RISC OS 5.
  Options/s/!Debug - New debug option for Wimp_ClaimFreeMemory debugging (mainly DynamicAreaWCF code path)
  Wimp/s/Wimp01 - Add calls to create/destroy DA on startup/shutdown
  Wimp/s/Wimp08s - DA create/destroy implementation. DA is only used if the free pool is a PMP or the Wimp expects kernel free pool locking but the kernel doesn't support it. Modify Wimp_ClaimFreeMemory to use the DA if it's present.
Admin:
  Tested on Raspberry Pi
  Restores compatibility with software which relies on Wimp_ClaimFreeMemory, e.g. GDraw module (cause of "No free memory" errors reported by many)
  Note that Wimp_ClaimFreeMemory is still considered deprecated and support may be removed in future OS versions.


Version 5.50. Tagged as 'Wimp-5_50'
parent 9c341e50
......@@ -100,5 +100,6 @@
OptionD tiling, false ; new tiling code
OptionD threedpatch, false ; 3DPatch code
OptionD wcf, false ; Wimp_ClaimFreeMemory
END
......@@ -87,6 +87,7 @@
Option SpritesA, true ; look for alpha iconsprite files if OS supports the format
Option ToolTables, true ; look for precalculated tool translation tables
Option CanTileManually, true ; retain manual tiling code incase SpriteOp 65 missing
Option DynamicAreaWCF, false ; similar to FreePoolWCF == false, enables use of dynamic area for WCF in Wimp08s
Option RegisterMessages, false
Option RegisterTools2D, false
......
......@@ -32,5 +32,6 @@ module_postfix SETS " 32-bit"
Option PushBothBars, true ; Push in both scrollbars on adjust-drags
Option AcceptLoosePointers, false ; Sloppy "any -ve will do" checks (for 64M memory map only)
Option CanTileManually, false ; retain manual tiling code incase SpriteOp 65 missing
Option DynamicAreaWCF, true ; RISC OS 5.23 drops support for free pool locking, so use a private DA instead
END
......@@ -37,6 +37,7 @@
Option RO4, true ; RISC OS 4 extensions
Option CanTileManually, false ; retain manual tiling code incase SpriteOp 65 missing
Option DynamicAreaWCF, true ; RISC OS 5.23 drops support for free pool locking, so use a private DA instead
DefaultNextSlot SETA 1024*1024
......
......@@ -11,6 +11,7 @@ DeciSec: * 1/10 second
OSUperSec: OS Units / second
OSUperSec2: OS Units / second
WSP:Wimp sprite pool
WCF:Wimp_ClaimFreeMemory workspace
#{DictTokens}
NoClaim:Wimp unable to claim work area
......
......@@ -11,6 +11,7 @@ DeciSec: * 1/10 second
OSUperSec: OS Units / second
OSUperSec2: OS Units / second
WSP:Wimp sprite pool
WCF:Wimp_ClaimFreeMemory workspace
#{DictTokens}
NoClaim:Wimp unable to claim work area
......
......@@ -11,6 +11,7 @@ DeciSec: * 1/10 second
OSUperSec: OS Units / second
OSUperSec2: OS Units / second
WSP:Wimp sprite pool
WCF:Wimp_ClaimFreeMemory workspace
#{DictTokens}
NoClaim:Wimp unable to claim work area
......
......@@ -11,6 +11,7 @@ DeciSec: * 1/10 Sekunde
OSUperSec: OS-Einheiten / Sekunde
OSUperSec2: OS-Einheiten / Sekunde²
WSP:Sprite-Bereich
WCF:Wimp_ClaimFreeMemory workspace
#{DictTokens}
NoClaim:Das WIMP konnte sich keinen Arbeitsbereich reservieren.
......
......@@ -11,6 +11,7 @@ DeciSec: * 1/10 second
OSUperSec: OS Units / second
OSUperSec2: OS Units / second
WSP:Wimp sprite pool
WCF:Wimp_ClaimFreeMemory workspace
#{DictTokens}
NoClaim:Wimp unable to claim work area
......
......@@ -10,6 +10,7 @@ DeciSec: * 1/10 second
OSUperSec: OS Units / second
OSUperSec2: OS Units / second²
WSP:Wimp sprite pool
WCF:Wimp_ClaimFreeMemory workspace
#{DictTokens}
NoClaim:Wimp unable to claim work area
......
......@@ -11,6 +11,7 @@ DeciSec: * 1/10 second
OSUperSec: OS Units / second
OSUperSec2: OS Units / second
WSP:Wimp sprite pool
WCF:Wimp_ClaimFreeMemory workspace
#{DictTokens}
NoClaim:Wimp unable to claim work area
......
......@@ -11,6 +11,7 @@ DeciSec: * 1/10 second
OSUperSec: OS Units / second
OSUperSec2: OS Units / second
WSP:Wimp sprite pool
WCF:Wimp_ClaimFreeMemory workspace
#{DictTokens}
NoClaim:Wimp unable to claim work area
......
......@@ -11,6 +11,7 @@ DeciSec: * 1/10 second
OSUperSec: OS Units / second
OSUperSec2: OS Units / second
WSP:Wimp sprite pool
WCF:Wimp_ClaimFreeMemory workspace
#{DictTokens}
NoClaim:Wimp unable to claim work area
......
......@@ -11,6 +11,7 @@ DeciSec: * 1/10 second
OSUperSec: OS Units / second
OSUperSec2: OS Units / second
WSP:Wimp sprite pool
WCF:Wimp_ClaimFreeMemory workspace
#{DictTokens}
NoClaim:Wimp unable to claim work area
......
......@@ -11,6 +11,7 @@ DeciSec: * 1/10 second
OSUperSec: OS Units / second
OSUperSec2: OS Units / second
WSP:Wimp sprite pool
WCF:Wimp_ClaimFreeMemory workspace
#{DictTokens}
NoClaim:Wimp unable to claim work area
......
......@@ -11,6 +11,7 @@ DeciSec: * 1/10 second
OSUperSec: OS Units / second
OSUperSec2: OS Units / second
WSP:Wimp sprite pool
WCF:Wimp_ClaimFreeMemory workspace
#{DictTokens}
NoClaim:Wimp unable to claim work area
......
......@@ -11,6 +11,7 @@ DeciSec: * 1/10 second
OSUperSec: OS Units / second
OSUperSec2: OS Units / second
WSP:Wimp sprite pool
WCF:Wimp_ClaimFreeMemory workspace
#{DictTokens}
NoClaim:Wimp unable to claim work area
......
......@@ -11,13 +11,13 @@
GBLS Module_HelpVersion
GBLS Module_ComponentName
GBLS Module_ComponentPath
Module_MajorVersion SETS "5.49"
Module_Version SETA 549
Module_MajorVersion SETS "5.50"
Module_Version SETA 550
Module_MinorVersion SETS ""
Module_Date SETS "01 Sep 2015"
Module_ApplicationDate SETS "01-Sep-15"
Module_Date SETS "10 Oct 2015"
Module_ApplicationDate SETS "10-Oct-15"
Module_ComponentName SETS "Wimp"
Module_ComponentPath SETS "castle/RiscOS/Sources/Desktop/Wimp"
Module_FullVersion SETS "5.49"
Module_HelpVersion SETS "5.49 (01 Sep 2015)"
Module_FullVersion SETS "5.50"
Module_HelpVersion SETS "5.50 (10 Oct 2015)"
END
/* (5.49)
/* (5.50)
*
* This file is automatically maintained by srccommit, do not edit manually.
* Last processed by srccommit version: 1.1.
*
*/
#define Module_MajorVersion_CMHG 5.49
#define Module_MajorVersion_CMHG 5.50
#define Module_MinorVersion_CMHG
#define Module_Date_CMHG 01 Sep 2015
#define Module_Date_CMHG 10 Oct 2015
#define Module_MajorVersion "5.49"
#define Module_Version 549
#define Module_MajorVersion "5.50"
#define Module_Version 550
#define Module_MinorVersion ""
#define Module_Date "01 Sep 2015"
#define Module_Date "10 Oct 2015"
#define Module_ApplicationDate "01-Sep-15"
#define Module_ApplicationDate "10-Oct-15"
#define Module_ComponentName "Wimp"
#define Module_ComponentPath "castle/RiscOS/Sources/Desktop/Wimp"
#define Module_FullVersion "5.49"
#define Module_HelpVersion "5.49 (01 Sep 2015)"
#define Module_LibraryVersionInfo "5:49"
#define Module_FullVersion "5.50"
#define Module_HelpVersion "5.50 (10 Oct 2015)"
#define Module_LibraryVersionInfo "5:50"
......@@ -1505,6 +1505,9 @@ BPR_continuelevel * 4 ; HS this means continuing BPR
ptr_IRQsema # 4 ; Pointer to kernel's IRQsema
ptr_DomainId # 4 ; Pointer to kernel's DomainId
[ DynamicAreaWCF
wcfda # 4
]
rlinks # 4*maxrects
# -4*firstfreerect ; this data not used
......@@ -3410,6 +3413,9 @@ gotwork
LDREQ R2,=Legacy_DomainId
STR R2,ptr_DomainId
[ DynamicAreaWCF
BL initwcfda
]
MOV R1, #0
STR R1, messages ; no messsages open, in case of error lookups
;
......@@ -3940,6 +3946,9 @@ Die
[ :LNOT: KernelLocksFreePool
BL resetdynamic
]
[ DynamicAreaWCF
BL destroywcfda
]
;
MOV R0,#ModHandReason_Free
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment