1. 17 Aug, 2019 1 commit
  2. 22 Jun, 2019 1 commit
    • ROOL's avatar
      New Wimp_Extend subreason · 32f2e389
      ROOL authored
      Detail:
        Subreason 14 gives a means to read the validation string from a window/icon that is not in the current task. This is useful for determining whether clipboard operations should be allowed.
      Admin:
        Submission for Clipboard Support bounty.
      
      Version 5.64. Tagged as 'Wimp-5_64'
      32f2e389
  3. 05 Jun, 2019 1 commit
  4. 01 Jul, 2018 1 commit
    • Jeffrey Lee's avatar
      Fix handling of tool sprite palettes in alpha-blended screen modes · 39485b7c
      Jeffrey Lee authored
      Detail:
        s/Wimp10 - Update mastertoactive to force the palette/translation table to be sent through ColourTrans if either &RGB component ordering or alpha blending is in use for the current screen mode. Otherwise, for alpha modes, the alpha channel would typically be left at zero.
      Admin:
        Tested on Raspberry Pi 3
      
      
      Version 5.62. Tagged as 'Wimp-5_62'
      39485b7c
  5. 16 Apr, 2018 1 commit
  6. 11 Apr, 2018 1 commit
  7. 18 Mar, 2018 1 commit
    • 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
  8. 17 Feb, 2018 1 commit
    • 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
  9. 24 Jul, 2017 1 commit
    • 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
  10. 11 Apr, 2017 1 commit
    • 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
  11. 08 Apr, 2017 1 commit
    • 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
  12. 25 Mar, 2017 1 commit
    • 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
  13. 16 Sep, 2016 3 commits
    • 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
    • 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
      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
  14. 28 May, 2016 1 commit
    • 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
  15. 23 May, 2016 1 commit
    • 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
  16. 08 May, 2016 1 commit
    • 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
  17. 29 Nov, 2015 1 commit
  18. 10 Oct, 2015 1 commit
    • 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
  19. 01 Sep, 2015 1 commit
    • 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
  20. 08 Jul, 2015 1 commit
    • 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
  21. 19 Apr, 2015 1 commit
  22. 15 Nov, 2014 1 commit
    • Robert Sprowson's avatar
      Add ptr_drop to the sprite pool · 50028941
      Robert Sprowson authored
      This is a left handed pointer to signify a drag and drop operation in progress.
      The sprite makes use of the mask to define the hotspot to be the tip of the arrow, for Wimp/SpriteExtends that understand that.
      
      Propagated the hotspot definition on ptr_write to the other sprite sets, previously it was only in the Iyonix theme.
      Missing ptr_menu and friends added to Morris theme.
      Made file_ffb more distinct from the other system files in Ursula theme.
      
      Version 5.47. Tagged as 'Wimp-5_47'
      50028941
  23. 24 Sep, 2014 1 commit
    • Ben Avison's avatar
      Fix to warning · 03ef557b
      Ben Avison authored
      Detail:
        Previous test for include order of Hdr:Services and Hdr:Wimp was broken.
        See HdrSrc 2.46 for the other half of this fix.
      
      
      Version 5.46. Tagged as 'Wimp-5_46'
      03ef557b
  24. 18 Sep, 2014 1 commit
  25. 05 Sep, 2014 1 commit
    • Robert Sprowson's avatar
      Fix for background colour too light on non-bordered icons · e5a8bd07
      Robert Sprowson authored
      Wimp04.s:
       Line 991, a register fumble meant the special case check (when the icon background colour equals the window work area colour) always failed so the icon background was lightened.
       Removed unnecessary ADR.
      Wimp10.s:
       Function getborder() made more readable by use of symbols instead of magic numbers
      Fixes ticket #395 reported by Paul Reuvers.
      
      Version 5.45. Tagged as 'Wimp-5_45'
      e5a8bd07
  26. 18 Aug, 2014 1 commit
    • Robert Sprowson's avatar
      Fix for incorrect menu widths in system font · 2487da00
      Robert Sprowson authored
      Width counting of menus in the system font would continue until a control terminator was found, however in the case of a non indirected menu entry of exactly 12 characters there is no terminator, so the menu would be too wide (by however many non terminator bytes happened to follow the menu definition in memory). This would normally end up 16 OS units too wide (because it'd encounter a zero after the menu items flags of the next menu entry).
      
      Version 5.44. Tagged as 'Wimp-5_44'
      2487da00
  27. 20 Jul, 2014 1 commit
    • Robert Sprowson's avatar
      Add definitions of button types 11/14/15 · 2ddbcbf5
      Robert Sprowson authored
      Button type 11 was added in 1988 so is about time it had a symbol to refer to it in the sources. Added & used said symbols.
      Removed 'DoubleIcon' switch, prototype button type 12.
      Built binary identical module, not tested.
      
      Version 5.43. Not tagged
      2ddbcbf5
  28. 02 Jul, 2014 1 commit
    • Jeffrey Lee's avatar
      Fix G16 modes · d1bdba23
      Jeffrey Lee authored
      Detail:
        s/Wimp02 - With Kernel-5_35-4_79_2_210 and later, the greyscale palette flag updates in real time to reflect the current state of the palette. Therefore we must read the state of the flag before we set our colour palette, otherwise we won't know that we need to apply the greyscale fixup afterwards.
      Admin:
        Tested on BB-xM
      
      
      Version 5.43. Tagged as 'Wimp-5_43'
      d1bdba23
  29. 28 May, 2014 1 commit
    • Robert Sprowson's avatar
      Fix for incorrect names on pinned windows · be7094e5
      Robert Sprowson authored
      The post increment of R14 when looking for a control/space terminator meant that the search for a leafname started one too far along.
      So in the situation where memory contained something like
        <window_title><null><dot><garbage>
      the code would pick up the dot and try to use <garbage> as a leafname.
      Submission from Fred Graute.
      Fix for ticket #244.
      
      Version 5.42. Tagged as 'Wimp-5_42'
      be7094e5
  30. 19 Apr, 2014 1 commit
    • Robert Sprowson's avatar
      Fix for missing window backgrounds/scroll bars when tiled sprite op not supported · f0e0f3ad
      Robert Sprowson authored
      For the backgrounds, the code was switched with 'standalone' however the Wimp actively wipes SA_FLAGS in its makefile so the standalone switch is always false during the install phase of a disc build. Also, the standalone switch is used to include resources which are ordinarily handled by the boot sequence prefixing the WindowManager$Path rather than using ResourceFS.
      For the scroll bars, the decision to plot manually was being made by looking at the V flag on return from Tool_SpriteOp, except that that function uses EntryS/EXITS so the caller can't see the return flags.
      Added new switch CanTileManually, removed 0 use tilewithspriteops switch.
      Changed single use of NoFontBodge switch to use preferred 'outlinefont'.
      Tested on RISC OS 4.02.
      
      Version 5.41. Tagged as 'Wimp-5_41'
      f0e0f3ad
  31. 18 Apr, 2014 1 commit
    • Jeffrey Lee's avatar
      Fix *WimpMode/Wimp_SetMode to return an error when given a bad mode selector... · fe39094e
      Jeffrey Lee authored
      Fix *WimpMode/Wimp_SetMode to return an error when given a bad mode selector block. Re-read configured mode on Sevice_Reset.
      
      Detail:
        s/Wimp01 - Reinitialise currentmode on Service_Reset in order to get the correct mode in the case of a GraphicsV driver overriding it (driver may not have been initialised at the time of the first call in module init). Add a bit more mode debugging and ensure ValidateAddress code completely removed under Medusa.
        s/Wimp02 - Issue OS_CheckModeValid in validatemode so we can detect cases where a valid looking mode selector block doesn't actually map to a mode definition. Add more mode debugging code.
      Admin:
        Tested on Raspberry Pi
        Fixes issue where "F12 -> *BASIC -> MODE 0 -> QUIT -> return" wouldn't restore screen mode correctly if currentmode had been set to a bad mode selector (e.g. after a CMOS reset nukes the LoadModeFile command), due to WimpMode's lack of error checking
        Note that this merely prevents currentmode being set to a bad mode at the time of *WimpMode/Wimp_SetMode - if a mode which is valid suddenly becomes invalid (e.g. due to loading a new MDF but not reselecting a valid wimp mode) then the Wimp will still fail to set a sensible mode on return to the desktop.
      
      
      Version 5.40. Tagged as 'Wimp-5_40'
      fe39094e
  32. 13 Apr, 2014 1 commit
    • Jeffrey Lee's avatar
      Protect memory above MemoryLimit being nuked when starting a task · 6911d7cc
      Jeffrey Lee authored
      Detail:
        s/Wimp08s - Improve testapplication to detect situations where data is being stored above MemoryLimit, e.g. if a C app uses system() to issue *WimpTask
        Usually the CAO check will detect this kind of situation, except for the case where a single-tasking app issues *WimpTask - in which case the CAO will get reset to the Wimp module due to ModHandReason_Enter being used to get into USR mode so a temp parent task can be created
        Wimp_SlotSize checks MemoryLimit against ApplicationSpaceSize before allowing the wimpslot to be resized, so it seems to be a bit of an oversight that the task startup code wasn't doing the same
      Admin:
        Tested on BB-xM
        Fixes ticket #279:
        https://www.riscosopen.org/tracker/tickets/279
      
      
      Version 5.39. Tagged as 'Wimp-5_39'
      6911d7cc
  33. 27 Mar, 2014 1 commit
    • Jeffrey Lee's avatar
      Disallow Wimp_SpriteOp 38 (create/remove alpha) · d3034221
      Jeffrey Lee authored
      Detail:
        - s/Wimp01 - Add OS_SpriteOp 38 (create/remove alpha) to the list of banned SpriteOp's for Wimp_SpriteOp. OS_SpriteOp 38 is almost always guaranteed to modify the target sprite, and so in keeping with other sprite modification ops it shouldn't be allowed via Wimp_SpriteOp.
      Admin:
        Tested on BB-xM
      
      
      Version 5.38. Tagged as 'Wimp-5_38'
      d3034221
  34. 09 Mar, 2014 1 commit
    • Jeffrey Lee's avatar
      Fix to build with HdrSrc-2_42. Use OS_SpriteOp 65 where possible. · 41cb4f23
      Jeffrey Lee authored
      Detail:
        s/Wimp01 - Update Wimp_SpriteOp handler to cope with the new SpriteReason_BadReasonCode value. Initialise unused bits of spritebits to 1 so that it acts as a whitelist, only allowing through operations that we know are safe.
        s/Tiling3D - Use OS_SpriteOp 65 for drawing tiled window backgrounds. Softload versions will fall back to using the old manual tiling code if OS_SpriteOp 65 is unavailable.
        s/Wimp10 - Use OS_SpriteOp 65 for drawing the tiled sprites that make up scrollbar wells and bars. Falls back to manual tiling in softload versions.
      Admin:
        Tested on Iyonix, BB-xM
        Requires HdrSrc-2_42
      
      
      Version 5.37. Tagged as 'Wimp-5_37'
      41cb4f23
  35. 01 Mar, 2014 1 commit
    • Jeffrey Lee's avatar
      Implement sprite translation table caching · 9187a060
      Jeffrey Lee authored
      Detail:
        This set of changes allows the Wimp to cache the last-used translation table, and cleans up some instances where translation tables were being generated and then not used
        s/Wimp01 - Expand selecttable_args to store all 8 registers needed by ColourTrans_GenerateTable. Add 1K of space for caching the palette that the cached translation table was generated from. Remove unused spriteX, spriteY variables.
        s/Wimp04 - Split cachespritedata in two. cachespritedata now only caches the basic information, while the new cachespritepixtable rotuine will generate a translation table (shaded/inverted if required). This allows table generation to be deferred until we're just about to render the sprite, ensuring that the table isn't generated only to not be used. Also updated icon sprite rendering to check the sprite is within the graphics window before attempting to render it, allowing removal of one more case where tables can be needlessly generated.
        s/NewSWIs, ...
      9187a060
  36. 06 Jan, 2014 1 commit
    • Ben Avison's avatar
      Fix detection of Hdr:Wimp being included before Hdr:Services · 40176aa7
      Ben Avison authored
      Detail:
        The trick used only works with variable name symbols; other symbols remain
        defined after the end of the first pass of assembly
      Admin:
        Should enable us to track down components that will need changing from
        examination of the build logs
      40176aa7
  37. 01 Jan, 2014 1 commit
    • Jeffrey Lee's avatar
      Change Wimp_ReadSysInfo 2 to not return alpha sprite names. Add... · 8913591b
      Jeffrey Lee authored
      Change Wimp_ReadSysInfo 2 to not return alpha sprite names. Add Wimp_ReadSysInfo 29 and Wimp_Extend 257.
      
      Detail:
        s/Wimp01 - Change romspr_suffix initialisation so that it won't store alpha sprite suffixes. This has the knock-on effect of making Wimp_ReadSysInfo 2 no longer return alpha sprite suffixes, without affecting any of the sprite search code
        hdr/Wimp, s/Wimp01 - Add Wimp_ReadSysInfo 29 to read the alphaspriteflag value - i.e. whether alpha sprites are supported by the OS/Wimp and *IconSprites, Wimp_Extend 13, etc. will look for them
        hdr/Wimp - Document the private Wimp_Extend reason codes and add a couple of ROL's reason codes
        s/NewSWIs - Tidy up Wimp_Extend implementation to use a jump table instead of a load of tests and branches. Add an implementation of ROL's Wimp_Extend 257, which just acts as a wrapper around Wimp_Extend 13
      Admin:
        Tested on Raspberry Pi
        Wimp_ReadSysInfo 2 change should fix issue reported on forums with software unexpectedly using low-res sprites or failing altogether:
        http://www.riscosopen.org/forum/forums/4/topics/2274
      
      
      Version 5.35. Tagged as 'Wimp-5_35'
      8913591b
  38. 30 Nov, 2013 1 commit
    • Jeffrey Lee's avatar
      Fix alpha sprite support · 9f37c9dd
      Jeffrey Lee authored
      Detail:
        s/Wimp01 - An ill-advised last minute edit would leave the Wimp in an infinite loop looking for ROM sprites if it tried to enable alpha sprite support
      Admin:
        Tested on BB-xM
      
      
      Version 5.34. Retagged as 'Wimp-5_34'
      9f37c9dd