1. 01 Jun, 2013 3 commits
    • Robert Sprowson's avatar
      Fix to incorrect tint of back & close icon after changing tool sets · c641945a
      Robert Sprowson authored
      If the last window drawn before dropping to the command line had the input focus then a *TOOLSPRITES command is used the default translation table would be tinted.
      On reentering the desktop the back & close icon of the first window draw (= top of stack) would be the wrong colour.
      
      Tagged as Wimp-5_30-pre3.
      c641945a
    • Robert Sprowson's avatar
      Don't try freeing the tool pixel trans table twice · 1f206e86
      Robert Sprowson authored
      In deallocptrs a call to freetoolarea is made, then much the same code repeated inline.
      Excess code deleted.
      
      Tagged as Wimp-5_30-pre2
      1f206e86
    • Robert Sprowson's avatar
      Fix for corrupt register in pushfontstring with password-style substitution · 752b3a8b
      Robert Sprowson authored
      When CnP=TRUE but UTF8=FALSE the code path through pushfontstring for icons using the 'D' validation string would use R11 as a temporary without having preserved it (the UTF8 case preserves it because it uses R11 as a bitmask of substitutes).
      Changed to always preserve R11, the routine is so huge one extra pushed register isn't going to slow it down measurably.
      Adjusted options files now this combination is safe.
      
      Tagged as Wimp-5_30-pre1.
      752b3a8b
  2. 23 May, 2013 1 commit
    • Robert Sprowson's avatar
      Fix for null pointer dereference & data abort on swapping to no toolsprites · d2b00489
      Robert Sprowson authored
      This specific case failed when the topmost window in the window stack (ie. the first to be attempted to be redrawn on reentering the desktop) had the focus and thus attempts to enable Ursula tinting.
      Though a check was made to see if the first sprite (from which the tint is derived) was present, no check was made to see if the tool_list was present => dereferenced NULL pointer.
      Retagged as Wimp-5_29.
      d2b00489
  3. 21 May, 2013 2 commits
    • Robert Sprowson's avatar
      Fix for null pointer dereference & data abort on swapping to no toolsprites · c6697ab1
      Robert Sprowson authored
      Way back in Wimp-4_76 the range check for being in ROM (in the free tool area function) was reworked as the ROM was no longer at the top of the 64M address space. In doing so the sense of the function got inverted and actually the tool area was not freed at all.
      The result of this would be that swapping to no toolsprites (for that retro RISC OS 2 look) would data abort when the kernel tried to plot a sprite from address 0 because the check prior to the title bar plot believed a tool area existed.
      
      Version 5.29. Tagged as 'Wimp-5_29'
      c6697ab1
    • Robert Sprowson's avatar
      Change titlecolour variable to truetitlecolour · 96a860b5
      Robert Sprowson authored
      The word wide variable actually contains the RGB value, rename this to be distinct from the 4 bit Wimp colour, to make searching easier.
      No change to binary, not tagged.
      96a860b5
  4. 18 May, 2013 2 commits
    • Robert Sprowson's avatar
      Fix for missing window gadgets when no tool sprites are loaded · 18031756
      Robert Sprowson authored
      When 'outlinefont' is enabled, the drawicon_system function used to plot the close/back/resize etc icons tries to do so from the currently selected outline font.
      This usually results in various top bit set characters inappropriately being shown.
      Now, when there are no tool sprites loaded the gadgets are forced to be plotted in the system font (where the Wimp has carefully redefined the font), but the remainder of the desktop (eg. the title bar, user text) stays in the selected desktop font.
      
      Version 5.28. Tagged as 'Wimp-5_28'
      18031756
    • Robert Sprowson's avatar
      Stranded comment reunited with its owner · aa599e8c
      Robert Sprowson authored
      aa599e8c
  5. 12 May, 2013 1 commit
  6. 11 May, 2013 1 commit
  7. 09 May, 2013 1 commit
    • Robert Sprowson's avatar
      Change to RMA shrinkage in *ICONSPRITES pre Medusa · 46989188
      Robert Sprowson authored
      On completing the sprite area merge the Wimp would try to minimise the RMA by -256MB (to account for the fact that during the merge the RMA is enlarged to hold both the existing sprites and the new ones to be merged, in the case of duplicates).
      However, this meant that the common construct
      
        IconSprites MySprites
        Run MyApp
      
      where MyApp wanted to use more than a teaspoon of RMA would fail due to the lack of free pool and that the RMA can't be resized when an application is running as a result.
      
      Now, the Wimp notes the free space in the RMA, does the -256MB shrink, then ensures there's still the same free space after the event (ie. overall it may have grown by the size of any extra sprites added during the command).
      Tested on RISC OS 3.10.
      
      Version 5.26. Tagged as 'Wimp-5_26'
      46989188
  8. 06 May, 2013 1 commit
    • Robert Sprowson's avatar
      Refinements to disc based targets especially · a30a2489
      Robert Sprowson authored
      Previous attempt to disable Sprites11 support for 3.10 and 3.50 hadn't spotted it was reenabled in the common options, also the Sprites11 switch was also tied up in Wimp$IconTheme support.
      Title bars would flicker when picked up when using a tool sprite set with no 'p' pushed equivalents on RISC OS 4.0x due to screen cache.
      Makefile now installs a default set of tools & sprites when target is ThemeDefs.
      CLI limit reduced to 256 pre Ursula to save RAM.
      
      Options/!Common:
        Promote Sprites11 switch into !Default
        Remove fixrmatools
      Options/!Default:
        Sprites11 true by default
        LongCommandLines true by default, false on targets pre Ursula
        Remove ServiceCallTable (harmless to have it in all cases)
      NewSWIs.s:
        Enable Wimp_Extend 13 all the time
      Wimp01.s:
        Reduce RMA use by vital 1.5k for non long command line case
        Change sense of Sprites11 switch to adopt all its previous functionality, but not look for '11' suffix when the switch is false
        Adopt ServiceCallTable switch permanently
      Wimp02.s:
        Comments ammended
      Wimp07.s:
        Range of ADR
      Wimp10.s:
        Change sense of Sprites11 switch to adopt all its previous functionality, but not look for '11' suffix when the switch is false
        Adopt :LNOT: fixrmatools switch permanently
        Supress title bar sprite plotting when none of the sprites exist
      
      Version 5.25. Tagged as 'Wimp-5_25'
      a30a2489
  9. 04 May, 2013 1 commit
  10. 03 May, 2013 2 commits
    • Robert Sprowson's avatar
      Slacken pointer checks · 42e284a3
      Robert Sprowson authored
      The pointer comparison checking required when running in a system with > 64M memory was tightened up from Wimp-4_75 to Wimp-4_76, but to allow the module to target pre RISC OS 5 systems an option to relax those checks is required.
      Each check has been revisited and where appropriate demarked with a "AcceptLoosePointer" macro, which just remaps the pointer into the stricter form and carries on. In the strict checking case, the macro reduces to nothing.
      
      Detail:
      Add AcceptLoosePointers switch.
      Retire singular use of StrongARM switch (calling XOS_SynchroniseCodeAreas is harmless pre StrongARM anyway).
      Rename Ursula_RPC options to RO400.
      Put duplicate documentation in the attic.
      Allow -2 or -1 as the iconbar handle in Wimp_ResizeIcon (ticket #203).
      Tighten up the list terminator check in the DebugMemory switch of Memory.s
      
      Tested on RISC OS 3.10 (emulated), 3.50, 3.60, 3.70, 4.02.
      
      Version 5.24. Tagged as 'Wimp-5_24'
      42e284a3
    • Robert Sprowson's avatar
      Fixes for pre AMBControl versions · 34aa78cb
      Robert Sprowson authored
      Wimp03.s: check that pollword was in application space was corrupting R3 leading to an address exception (!) on pre Medusa targets
      Wimp08.s: compare had erroneously been change to equality check, leading to screwy memory allocation and much instability on 3.50 and 3.60 especially when applications quit
      
      Version 5.23. Not tagged
      34aa78cb
  11. 27 Apr, 2013 1 commit
  12. 13 Apr, 2013 1 commit
    • Robert Sprowson's avatar
      Fix bug in Wimp_WhichIcon · e25bd2b7
      Robert Sprowson authored
      When matching an icon on the iconbar the window is initially matched correctly, but the "is this the right task" filter step was trying to compare the handle with -1. The result was that you would get the first match for any iconbar icon rather than a match for *your* iconbar icon.
      Unrelated: Tiling.s/Iconbar.s add a couple of comments and use symbols instead of magic numbers.
      Tested with a quality 3 line BASIC program, no longer returns icon #0 all the time.
      
      Version 5.23. Tagged as 'Wimp-5_23'
      e25bd2b7
  13. 10 Apr, 2013 1 commit
    • Robert Sprowson's avatar
      Build fixes for variants pre RISC OS 5 · fc22d68f
      Robert Sprowson authored
      Minor fixups as part of univeral !Boot work.
      Options no longer ASSERT on International_Help (which is a definition exported by the kernel, rather than a build switch), and instead define a switch which is true for > 3.50.
      Non UTF8 supporting case has simple substitutes for Wimp_TextOp.
      Legacy_DomainId and LegacyIRQsema no longer cause NULL pointer dereference.
      MOVeQ => MOVEQ to placate ObjAsm.
      
      Ursula_RPC version built and used briefly on RISC OS 4.02 host. No other run time testing.
      
      Version 5.22. Tagged as 'Wimp-5_22'
      fc22d68f
  14. 31 Mar, 2013 1 commit
    • Jeffrey Lee's avatar
      Fix RMA corruption when caching colour translation tables · f1ba0db6
      Jeffrey Lee authored
      Detail:
        s/Wimp10 - cachetoolspritedata was using two slightly different ColourTrans calls for reading the table size and then filling the table in. This was resulting in the 'generate wide table' flag sometimes being ignored when the table size was checked, resulting in too little memory being allocated and so heap corruption when the table generation call overflowed the end.
      Admin:
        Tested on Pandora
        Fixes "not a heap block" errors when entering desktop
      
      
      Version 5.21. Tagged as 'Wimp-5_21'
      f1ba0db6
  15. 28 Mar, 2013 2 commits
    • Robert Sprowson's avatar
      Add support for wide translation tables for window tool furniture · cd1be707
      Robert Sprowson authored
      With the introduction of 16bpp/32bpp modes it became possible to request tables from ColourTrans which used > 1 byte per colour, but the Wimp wasn't using this extension. Therefore tool sprites designed in 8bpp or less would be quantised horribly when plotted in a 16bpp or 32bpp mode.
      The Wimp now requests and plots with a wide table, and to avoid thrashing ColourTrans so much with the prevalence of individually paletted icon sprites, keeps the table seperately to the icon sprites ones. At worst (in 32bpp) this uses an extra 256x4 bytes of RAM.
      Trace.s: Split out the tracing routines from Wimp10 as it was getting a bit big.
      Tiling.s: Namespace change for the icons versus tools distinction. Removed some unnecessary PC+8/PC+12 confused NOPs.
      Tiling3D.s: Namespace change for the icons versus tools distinction.
      Wimp01.s: New set of variables to track the tool translation tables separately. Various jiggling to keep ADRs in range.
      Wimp02.s: Namespace change. Remove some double handling in Wimp_SetColourMapping.
      Wimp04.s: Namespace change. Made factor rationalisation common to both the icon and tool grinding code. Removed dual use of cachespritedata for both icons and tools. The tintfunc moves to Wimp10. Service_InvalidateCache confusion resolved by adding a new flag to remember that the tools need regenerating rather than just marking the tool list as missing (which subsequently got restored in Tool_SpriteOp without actually doing any palette work.
      Wimp10.s: Label tools_area renamed as it was immensely confusing to have that (which was actually holding the RMA allocation of the tool_list) and tool_area (which contains the sprite area) hanging around. Changed references to use tools-only cachetolspritedata routine. Added 'wide' flags to sprite op and colour trans calls. Tool_SpriteOp changed to actually regenerate the colour tables when they're known invalid (previously the tools list pointer was merely restored and no colour tables used). Trace functions extracted. Resolved confusion as to what recache_tools_trans and recache_tools_trans2 should be doing.
      
      Tested with 4bpp "NewLook" sprites in 4bpp/8bpp/16bpp/32bpp and 8bpp smooth greyscaled "Steel" tool sprites in same modes.
      Also ran a task window doing repeated Service_InvalidateCache calls while monitoring the RMA for leaks.
      Generally navigated around some directories to ensure that inverse icons (during double click) and filer windows (with individually paletted sprites) were being rendered.
      
      Version 5.20. Tagged as 'Wimp-5_20'
      cd1be707
    • Robert Sprowson's avatar
      Tabs expanded in Wimp10 · e937dd5d
      Robert Sprowson authored
      Not tagged.
      e937dd5d
  16. 09 Oct, 2012 1 commit
  17. 03 Oct, 2012 1 commit
    • Robert Sprowson's avatar
      Placeholder alternate toolsprites for Raspberry UserIF · 098495b5
      Robert Sprowson authored
      Derived from the 'Steel' theme these are 90x90dpi toolsprites for the Raspberry UserIF. Their use of continuous tones has highlighted some deficiencies in the Wimp's translation table generation which are yet to be addressed, at which point the other resolutions and disc based copy will be more generally available.
      For now, ROM only keeps the distribution more controllable.
      098495b5
  18. 19 Sep, 2012 1 commit
  19. 06 Sep, 2012 1 commit
  20. 05 Sep, 2012 1 commit
    • Robert Sprowson's avatar
      Disc sprite updates · 1fb9fa36
      Robert Sprowson authored
      * Re tinted 'floppydisc'
      * New 'floppyscsi' and 'floppysd' for USB and SD card media
      * Removed !Scrap, the only boot resources that are seen by humans are !Boot !Fonts and !System, the others can rely on their private copies
      * Removed 3rd party applications, avoids bias towards particular vendor while not polluting the pool with stuff that isn't actually part of the OS (specifically !aemulor !arcfax !sparkfs !sprinter)
      1fb9fa36
  21. 01 Sep, 2012 1 commit
  22. 25 Aug, 2012 1 commit
  23. 20 Aug, 2012 1 commit
    • Robert Sprowson's avatar
      Disc sprites alteration · bc541f44
      Robert Sprowson authored
      In Sprites, the taskmanager was too high up.
      In Sprites11, the taskmanager has some scaling artefacts.
      Retagged as Wimp-5_18.
      bc541f44
  24. 11 Aug, 2012 2 commits
    • Robert Sprowson's avatar
      Add option to install disc sprites as a seperate target · cee23ab6
      Robert Sprowson authored
      Version 5.18. Tagged as 'Wimp-5_18'
      cee23ab6
    • Robert Sprowson's avatar
      Sprite resource fiddling · 2277990d
      Robert Sprowson authored
      * ROM sprite sets for Ursula and Morris4 brought in sync with Iyonix and Sovereign, including creating new sprites where missing
      * Disc sprite sets created for Ursula, Morris4, and Sovereign. These may not be coherent yet, but are the superset
      * Shelved the crusty 2D templates and tools
      No code changes, nor resource changes to active ROM builds, retagged as Wimp-5_17.
      2277990d
  25. 16 Jul, 2012 1 commit
  26. 14 Jul, 2012 1 commit
  27. 08 Jul, 2012 1 commit
    • Jeffrey Lee's avatar
      Fix getborder thinking indirected sprites have validation strings · 68cae2fd
      Jeffrey Lee authored
      Detail:
        s/Wimp10 - Corrected interrogation of icon flag word IST bits to avoid trying to parse the sprite area pointer of an indirected sprite as a validation string
      Admin:
        Tested on BB-xM with high processor vectors
        Fixes crash when dragging file icons in saveas dialogs
      
      
      Version 5.16. Tagged as 'Wimp-5_16'
      68cae2fd
  28. 24 Jun, 2012 1 commit
  29. 23 Jun, 2012 1 commit
    • Robert Sprowson's avatar
      Preset Wimp$IconTheme on initialisation to UserIF if not already set · 5283be1f
      Robert Sprowson authored
      Therefore, when in ROM, the ROM theme can be inferred. When a different theme is selected by the user in the boot sequence, that is respected.
      Restore a lost error message for *ICONSPRITES when the file doesn't exist even after trying all the 11/22/23 suffix and prefixes. This seems to have been lost post RISC OS 3.10 when Sprites22 support was added, but it is an error for the file given to not exist at all (cf. *TOOLSPRITES).
      Typos in docs ammended.
      
      Version 5.15. Tagged as 'Wimp-5_15'
      5283be1f
  30. 10 Mar, 2012 1 commit
  31. 27 Jan, 2012 1 commit
  32. 23 Jan, 2012 1 commit
    • Robert Sprowson's avatar
      Add extra Wimp_ReadSysInfo reasons 23/24/25/26/28. · 23680e24
      Robert Sprowson authored
      RISC OS Select has added reasons 18-27 and this change implements those that map directly to features that already exist (unimplemented ones return an error as before).
      One additional reason, 28, permits the reading of the flags collected from the *WimpVisualFlags command so that applications can discover if the cheesy 3D borders are on or not.
      
      Version 5.14. Tagged as 'Wimp-5_14'
      23680e24
  33. 03 Jan, 2012 1 commit