Commits (17)
  • Robert Sprowson's avatar
    Add file_1ad and small_1ad to disc copies of sprite pools · 66f1a629
    Robert Sprowson authored
    Propagate to derivative themes too.
    No code change, tagged a Wimp-5_47-file1ad.
    66f1a629
  • Robert Sprowson's avatar
    Only skip ColourTrans calls for 32bpp TBGR · 84a2570c
    Robert Sprowson authored
    The whizzy new TRGB modes can't assume 32bpp sprite data is equivalent to 32bpp palette entries, so must use ColourTrans.
    * Disable the use-in-place optimisation if that's the case
    * Update the comments to reflect this logic more clearly
    Fix bug in non Medusa case, STRB was using the wrong register as the base address.
    
    Tested briefly with 'Raspberry' theme, unchanged from previous version.
    
    Version 5.48. Tagged as 'Wimp-5_48'
    84a2570c
  • Jeffrey Lee's avatar
    Disable Wimp_ClaimFreeMemory if the free pool is a PMP · 9c341e50
    Jeffrey Lee authored
    Detail:
      s/Wimp08s - If the free pool is a PMP, it's fairly safe to say there'll be no logical mapping, so don't allow Wimp_ClaimFreeMemory to succeed. Also cope with OS_Memory 10 potentially being unimplemented - swallow any error it generates, and refuse to claim the free pool.
    Admin:
      Tested on Pandaboard
      Fixes crashes and subsequent OS_ChangeDynamicArea failures caused by software trying to claim the free pool (e.g. FileCore temp buffers).
    
    
    Version 5.49. Tagged as 'Wimp-5_49'
    9c341e50
  • Jeffrey Lee's avatar
    Reinstate Wimp_ClaimFreeMemory · 503570de
    Jeffrey Lee authored
    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'
    503570de
  • Jeffrey Lee's avatar
    Make use of power saving features when sat waiting for user input · a8c4aa91
    Jeffrey Lee authored
    Detail:
      s/Wimp03 - Move two key bits of power-saving logic out of repollwimp and into a new subroutine (powersave_tick)
      s/Wimp01, s/Wimp07 - Call powersave_tick when displaying an error box or "Press SPACE or click mouse to continue", so that CPU will drop speed and enter WFI state instead of running at full tilt.
    Admin:
      Tested on Pandaboard
      Fixes issue reported on forums with CPUs getting hot for no good reason:
      https://www.riscosopen.org/forum/forums/4/topics/3749
    
    
    Version 5.51. Tagged as 'Wimp-5_51'
    a8c4aa91
  • Jeffrey Lee's avatar
    Avoid unnecessary remainder calculations · ace2e66f
    Jeffrey Lee authored
    Detail:
      s/Wimp01, s/Wimp02, s/Wimp05, s/Wimp08s, s/Wimp10 - Avoid unnecessary remainder calculations in DivRem macro. Also make more use of DivRem's ability to accept a constant (not a register) as the divisor.
    Admin:
      Tested on Cortex-A15
    
    
    Version 5.52. Tagged as 'Wimp-5_52'
    ace2e66f
  • Jeffrey Lee's avatar
    Fix invalid AMB node handle being used when low on memory · 7212561d
    Jeffrey Lee authored
    Detail:
      s/Wimp08s - If OS_AMBControl allocate is asked for a AMB node with a size > 0, but no pages can be claimed, it frees the node and returns an invalid handle (0). Make sure that the Wimp's allocateslot routine is aware of this, so that we don't try passing that bad handle back to AMBControl later on
      s/Iconbar - Use nullptr constant instead of -1 when checking task_slotsize (aka AMB node handle on modern machines)
    Admin:
      Tested on BB-xM
      Fixes abort seen when attempting to start a task with no pages in the free pool
    
    
    Version 5.53. Tagged as 'Wimp-5_53'
    7212561d
  • Jeffrey Lee's avatar
    Remove redundant GET · d336b82f
    Jeffrey Lee authored
    Detail:
      s/Wimp - IO header doesn't appear to be necessary for build, so don't get it
    Admin:
      Tested with PlingSystem build (new "26" machine type aims to be machine-independent, so doesn't define $GetIO)
      Untested at runtime
    
    
    Version 5.54. Tagged as 'Wimp-5_54'
    d336b82f
  • Robert Sprowson's avatar
    Fix for crashes loading sprites on RISC OS 3.10 · 2de3bc5f
    Robert Sprowson authored
    A register fumble (revision 4.43 of this file) meant the pointer to the error block from OS_ReadSysInfo not existing was being cached as IRQsema, so later any attempts to resize the RMA would be skipped believing it to be unsafe (because the error pointer would point to an error block whose first word is mostly non zero).
    Tested on a real A5000 and emulated via ArcEm.
    2de3bc5f
  • Robert Sprowson's avatar
    Change magic number for calculation · 25895452
    Robert Sprowson authored
    It's one less than the sizeof(i_data) which is easier to spot than 11.
    Binary identical, not tagged.
    25895452
  • Robert Sprowson's avatar
    [399] Menu shortcuts misplaced if the menu has a scroll bar · 2df84a17
    Robert Sprowson authored
    When a menu is so tall it gains a scroll bar, the shortcuts were incorrectly justified.
    Change the MOVE VDU sequence prior to plotting the menu entry so Font Manager justifies the text correctly.
    
    Version 5.55. Tagged as 'Wimp-5_55'
    2df84a17
  • Jeffrey Lee's avatar
    Fix use of uninitialised pointer · 4d355e68
    Jeffrey Lee authored
    Detail:
      s/Wimp01 - initwcfda tries to look up the dynamic area name using MsgTrans, so make sure the 'messages' pointer is initialised before we call it
    Admin:
      Tested on iMx6
    
    
    Version 5.56. Tagged as 'Wimp-5_56'
    4d355e68
  • ROOL's avatar
    Recache currentmode at the right time · 121acd27
    ROOL authored
    Detail:
      Modification to make the Wimp reread 'currentmode' by calling OS_ReadSysInfo 1 in the following circumstances
      1. On module init (accounts for being softloaded off disc)
      2. At Service_Reset (accounts for any graphics driver starting after it in ROM module order)
      3. When Service_ModeFileChange (new, this catches the new mode selected by an MDF or EDID during !Boot)
      Commoned up these 3 cases into 1 function.
      This restores the design intent that to get the monitor's native resolution it is *not* required to configure the MonitorType=EDID, indeed doing so wouldn't have helped loading EDID off disc if the monitor's data is found to be incorrect and needing overriding.
    Admin:
      Tested on a Pandaboard with MonitorType=Auto and resolution chosen as "Native", resulting in a desktop at the panel resolution.
    
    Version 5.57. Tagged as 'Wimp-5_57'
    121acd27
  • Robert Sprowson's avatar
    Gate the recache of currentmode · 50eea7b2
    Robert Sprowson authored
    The operations at module init and at Service_PreReset are both implicitly pre desktop, however it is valid to have Service_ModeFileChanged while in the desktop (for example, if selecting a different MDF from !ScrnSetup).
    Gate the one hanging off Service_ModeFileChanged to only act when there are no tasks active (ie. outside the Wimp).
    Fixes problem reported https://www.riscosopen.org/forum/forums/4/topics/9206 with NetSurf redraw.
    
    Version 5.58. Tagged as 'Wimp-5_58'
    50eea7b2
  • Jeffrey Lee's avatar
    Remove startup delay from power saving code · 74a6db0a
    Jeffrey Lee authored
    Detail:
      s/Wimp02 - Get rid of the magic ~30 second delay before the Portable_Speed/Portable_Idle power saving kicks in. The fast/slow thresholds are self-adjusting, and any non-null poll event will kick the system into high speed, so removing the startup delay isn't likely to have any adverse affect on desktop startup time.
      s/Wimp01 - MaxIdleEvents is now redundant, remove it
    Admin:
      Tested on Raspberry Pi 3
      Should resolve issue reported on the forums where RPCEmu thrashes the hosts's CPU for 30 seconds after entering the desktop:
      https://www.riscosopen.org/forum/forums/10/topics/8990
    
    
    Version 5.59. Tagged as 'Wimp-5_59'
    74a6db0a
  • Jeffrey Lee's avatar
    Fix crashes when a Wimp_Poll post-filter causes the Wimp to postpone switching... · 2fb1a8bf
    Jeffrey Lee authored
    Fix crashes when a Wimp_Poll post-filter causes the Wimp to postpone switching to a VFP-enabled task
    
    Detail:
      s/Wimp07 - In ExitPoll, swap around the order of restoring the FP context and calling the poll post-filter so that the FP context is restored after the post-poll filter has been invoked. Previously, the VFP(+FPA) context would be restored, then the post-poll filter would be invoked. If the post-poll filter was claimed, the Wimp would then scan the pollwords again and most likely decide to switch to a different task. The appslot will then be switched over, and ExitPoll will be invoked again, attempting to restore the VFP/FPA context for that task - potentially causing a crash or other bad things because the VFP context used by the original choice of task is no longer paged in. For FPA this was never really a problem, since the context is stored in the RMA rather than being potentially stored in appspace.
      s/Wimp03 - Add some extra debug out for tracking VFP context management
    Admin:
      Tested on wandboard
      Fixes issue reported on forums, where using the numpad in VFP SciCalc would cause a crash if KeyExtend was loaded:
      https://www.riscosopen.org/forum/forums/4/topics/10293
    
    
    Version 5.60. Tagged as 'Wimp-5_60'
    2fb1a8bf
  • Robert Sprowson's avatar
    Fix for bad error pointer deleting non existent sprite · 431bcb1a
    Robert Sprowson authored
    Doing *WimpKillSprite _not_there_  had the following behaviour
    
    Priority   | Sprite exists  Sprite doesn't  Sprite is ROM
    Lo then Hi | Deletes        Bad error ptr   Silence
    Hi then Lo | Deletes        Silence         Silence
    
    The bad error pointer was caused by an early return if the high priority pool is the ROM sprites (because the earlier failure to find it in the low priority pools set V, and the early return used TEQ, so the error pointer in R0 was the SpriteOp reason code).
    Proceed to try to look up the sprite, even if there's no hope of deleting it, in order to get a valid error message.
    
    Version 5.61. Tagged as 'Wimp-5_61'
    431bcb1a
......@@ -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
......