PreSet Wimp$IconTheme change
Doug Webb (190) 1180 posts |
The recent change to "Preset Wimp$Icon Theme on initialisation to UserIF and restoration of lost error message for *Iconsprites is really playing havoc with my system. https://www.riscosopen.org/viewer/revisions/logs?ident=1340439733-987760.html On booting and before I enter the desktop I get an error message “Missing or squashed sprite file” but no way I finding what the file is or where it is located. Equally even invoking the Configure window gives the same message and I get it when opening up at least 15% of directories with apps in. I understand why the the change was made but as my Iyonix has lots of old/legacy apps running and the error message is rather unhelpful in identify what application is causing the issue or file that is missing then I have reverted to a previous softload. Could the change be configurable or at least give some details of where the issue is located. |
Sprow (202) 1158 posts |
Support for Wimp$IconTheme has been in the Wimp since around 2002, so that’s probably a red herring, other than it now having a default value. Is there one particular app that you can refer to that exhibits the error report? Preferably one that I can see/download from somewhere, if it genuinely is doing *ICONSPRITES !Sprites but doesn’t have a sprites file then that’s plain wrong, but it may point to some other latent fault. I checked the Filer and it makes sure the file exists before trying to iconsprites it. Also – what EX/EY values do you use? Display manager will tell you in its mode box (menu click on display manager). The error message text is just what the original author used, but that’s not to say it couldn’t be improved. |
Doug Webb (190) 1180 posts |
Hi Ok thanks for the tip as I found one app !PCARes which issues a *Iconsprites in its !Boot file but has no Sprites and that was in my Resources area of the Boot structure as per the help file. I have also found that Chris Wraight’s Theme manager 1.21 configuration plug in causes the same problem but only on my Iyonix and not when installed on the Beagleboard so is is down to one using SCSIFiler and the other ADFS. Both the Beagle and Iyonix have EX1 EY1 By the way this took lots of time to find as I had to remove components and then reboot and then go into individually created directories with just that application in to check if it was the one causing an issue and I don’t fancy doing that for every single directory I have which may have up to 30+ applications in so any improvements to the error message to say in which application or !Boot file it was running would help. |
Steve Pampling (1551) 8170 posts |
re: !PCARes IIRC I think there is a requirement for Apps to have both. However, as you say, the system error should be reporting the path to the missing file. |
Doug Webb (190) 1180 posts |
Ok something strange going on. I have tracked down another application !Moonfish which gives the Sprites missing error and if I take that out of Resources.Configure directory on the Iyonix and then reboot then on invoking the Configure menu I do not get the Sprite missing error and TaskSetup plus Theme manager behave themselves and show their iconsprites. Tried it on both the Iyonix and Beagle with it in Resources.Configure and get the same issue Mooonfish that it errors when access Configure though shows it’s icon but TaskSetup and Themes don’t. If I place Moonfish in a seperate directory, reboot and then access that directory manually then it does not error. I have also tried adding a !Sprites22 by copying the Sprites files as sprites22 but it still errors when in the Resources.Configuration directory though again no error when manually accessing it in a seperate directory. Moonfish can be found at: |
Martin Avison (27) 1494 posts |
Reporter would show exactly what commands are being executed (including obey files being run), and any errors found. Thus it should be relatively easy to see what is causing the error. See www.avisoft.f9.co.uk for details. |
Sprow (202) 1158 posts |
By chance, you should get away with it if you just have !Sprites22 because the search order tries the current EX/EY first then the next most square pixel mode, then rectangular pixel, then the base name. I generally take it to mean you must always supply !Sprites but may optionally supply better ones for “hires” modes too.
Ah ha – there’s an additional requirement that configure plugins must have a file called “CoSprite” (and CoSprite22 etc) and !Configure will hunt these down and iconsprites them. These sprite names must also be registered with the allocations scheme as they must be system unique. It’s probably worth updating !Configure to behave like the Filer does and not get upset when the user hasn’t done the above step. However, a more helpful error message shall be forthcoming… |
Steve Pampling (1551) 8170 posts |
In the intervening minutes I checked the Themes app and specifically its !Boot file. If “<Theme$Current>”<>"" Then IconSprites <Theme$Path>.Apps.Themes.!Sprites The source of the error is that the Boot file has previously run the RunImage which on detecting no theme in the user choices, or similar, unsets the Theme$Path but leaves Theme$Current as “[No theme]” thus the line checking Theme$Current does not see a null value and tries to IconSprites a sprite file it could never find as the Theme$Path is unset. Set Themes$Dir <Obey$Dir> | Select the correct !Sprites file for the current OS Theme |
Doug Webb (190) 1180 posts |
Thanks to Martin’s great app I’ve managed to find two more applications a lot quicker that cause issues. One is John Williams !CDDB which has a line in it’s boot file of: Iconsprites <cddb$Dir>.CustomSpr Though I can’t see any custom sprites? Also Vince Hudd’s !Quicksand game that has no Sprites but issues an Iconsprite command. Thanks Sprow for the feedback and I see a change in the CVS already and yes helpful error messages would be great. Steve good feedback and hopefully someone more technical able on RISC OS internals than I will agree/disagree your findings. All in all a great experience today and good to see that even non RISC OS programmers like myself can be of some use to help track down issues. |
Trevor Johnson (329) 1645 posts |
I know that Reporter’s now easing this process, but would bypassing the main boot sequence and then opening directories (containing multiple apps) using CTRL to avoid filer_booting be any help (then booting them individually by double-clicking)? |
Doug Webb (190) 1180 posts |
It would to some extent and thats what I initially started to do but you still have the issue about which one in 30+ is causing the issue and going through them one by one. At least with Reporter it gave the full directory view in one hit, apart from sub directories, and saved a lot of time. |
Trevor Johnson (329) 1645 posts |
OK – the “individually created directories” bit made me think you may not have been doing this. Never mind! |
Doug Webb (190) 1180 posts |
OK tried the 25th June Beagle ROM, Iyonix softload and Hard Disc components and I’m able to put !Moonfish back in Resources.Configure and not upset things. Also a meaningful error now helps identify the applications with missing Sprite files. Well done and thanks guys for the quick fix time and explanations. |
Sprow (202) 1158 posts |
Absolutely – it’s equally important to be able to test, document, and diagnose code as it is to write it in the first place. Keep up the good work! |
nemo (145) 2546 posts |
Steve Pampling wrote: In the intervening minutes I checked the Themes app and specifically its !Boot file. Sadly that’s not correct.
Theme$Current should definitely not be set to “[No theme]”, and being a user configuration option should not be changed without user interaction. Secondly:
This is definitely WRONG. |
nemo (145) 2546 posts |
Ok, having just checked Chris Wraight’s Theme Manager I can confirm that it is the culprit. It uses
I’ll email Chris but as his site was last updated in 2006 he may not be active. Fortunately both the Manager and the Plugin are unsquashed BASIC so will be easy to fix. Right now though I’d not recommend its use. Replacing |
Jeffrey Lee (213) 6048 posts |
Chris is still knocking around. He keeps promising to release a theme manager configure plugin (see the ROOL ROM branding thread), but I don’t think that’s happened yet. |
Sprow (202) 1158 posts |
Chris has offered his plugin sources for ROOL to use as a basis for the envisaged theme plugin (he’s very busy at present), however some extra facilities are planned which it doesn’t currently cover. At the moment therefore swapping to a non default theme requires manually inserting a “ThemeSetup” obey file in the boot sequence, the theme loader will then do its stuff. This is one of the slight drawbacks of daily auto-builds, the brave testers get to see the part finished work too. |
Frederick Bambrough (1372) 837 posts |
I don’t see that as drawback but rather as a teaser that keeps things alive & fun. |
Steve Pampling (1551) 8170 posts |
@nemo The !RunImage file needs a little work to correct this or the Boot can be altered to check for “[No theme]” rather than "" Yeah, I know. I didn’t write the program I merely diagnosed where the problem people were seeing originated – i.e. in the theme definition marker variable. The source of the error is that the Boot file has previously run the RunImage which on detecting no theme in the user choices, or similar, unsets the Theme$Path but leaves Theme$Current as “[No theme]” the RunImage is broke. Secondly: If “<Theme$Current>”<>"" Then IconSprites <Theme$Path>.Apps.Themes.!Sprites The RunImage is broke…
If the system has ever seen the theme manager then its defined, unfortunately. So, since three times is a charm – the RunImage is broke. |
Richard Windley (1611) 55 posts |
I don’t suppose there is any possibility of information about those ‘extra facilities’? I am currently writing a theme creator which will output themes suitable for the theme manager as it currently stands on the website. I would like to be able for it to take advantage of any new features and output themes that are as complete as possible. |