Waitsnake / AnimatedGif

A screensaver for Mac OSX / macOS that plays animated GIFs and APNGs
MIT License
213 stars 31 forks source link

Problems with Catalina 10.15.7 #64

Closed Durtcheap45 closed 3 years ago

Durtcheap45 commented 3 years ago

Hi! I downloaded the app, allowed it to open and am now able to select a gif from a file. The gif shows up in the preview window, but when selecting preview for full screen it loads an image with some words I can't read and an 'animated gif' logo. Also, when selecting it and starting my screensaver, the same image shows up. I've attached a picture of the gif playing in the preview, and a screenshot of the image that shows up. Let me know if I'm doing something wrong. Love this app! Thanks

Screen Shot 1 Screen Shot 2
Waitsnake commented 3 years ago

Hello, sorry you did nothing wrong, Apple did.

Unfortunately with Catalina and still on Big Sur Apple totally messed up the old Screensaver-API without giving any third party developer any official statement, help or documentation regarding to this issues ever since.

Starting with Catalina the system service that runs the screensavers was sandboxed with very narrow file access only to a cache folder for the system service that runs screensaver plugins itself. It is not even possible to get any path to a selected file back that the user selects in a simple file dialog (a basic think in any GUI operating system). A normal Mac application can ask the user for more permissions if it needs more and an application is usually not in any sandbox. But a screensaver is only a plugin (old .saver format) without own permissions and only inherits the permissions of the now sandboxed system service that runs the screensaver plugins. And the sandbox permissions of that system service can not be changed without any hacks on your operating system and I'm not willing to support that.

Apple itself uses since Catalina a new API to create their own Screensavers (new .appex format) where a screensaver can get its own permissions, but Apple has not shared this new API to third party developers yet. Until Apple don't solve this principle problem I'm not willing to spend any time in this free time project.

I have no idea whats the exact issue why you can't read the text with the 'animated gif' logo? Maybe some bugs and glitches within the Catalina drivers for your specific graphics card? But from Mavericks (10.9) until Mojave (10.14) the screen with the 'animated gif' logo appears only to telly you if you "have not selected a Gif file" yet. But this is exactly the problem with the sandbox since Catalina. The operating system will not even tell the screensaver plugin the path of the file you have selected in the file dialog before. And even if the screensaver know the path for some reason(hard coded path?) it is still not allowed to read the content of the GIF file since it is also outside the sandbox.

Whats still working within the sandbox is using an URL to the internet and load a GIF from a webspace (I still not get it why this should be more secure as loading a file from the own filesystem?). But I don't what to change the AnimatedGif project into this direction and still wait until Apple finally fixes the screensaver API. But there is a fork on Github that did exactly this. Have a look here: https://github.com/arneson/gif-screensaver/releases I hope this fork did the job for you.

Waitsnake commented 3 years ago

Just when I see now the screenshots again from Catalina 10.15.7 it looks like the same Issues I just recently faced with Big Sur 11.5.2. The distorted text on image 3 was because my text render function used the API function initWithFocusedViewRect that was deprecated with 10.15. I fixed this with new release 1.5.4. Also it seams that Apple really changed the Sandbox properties for screensavers a bit and now a user is at least allowed to select his own files on the local disk. I saw the new behaviour on Big Sur 11.5.2. But if I look now on your image 1 it looks like as if Apple fixed this also already for Catalina 10.15.7. It is kind of shame Apple never communicate openly to developers if and when they fixed stuff. But I'm still glad they fixed at least something in the Screensaver API.