NSHighResolutionCapable ignored in the case of .saver bundles.

Hi,

I have a screensaver (called "StarMessage") that is build both as an app distributed via the Apple store and as a .
native screensaver (.saver) distributed from my website.

When the user selects a tiled image background, the screensaver drawing becomes too slow on retina monitors.

By adding NSHighResolutionCapable = false at the app edition the drawing speed is back to normal.
But in the .saver edition this setting is ignored. Probably because it is the screensaverEngine.app that is examined by MacOS and it does not have that setting.

My questions are:
  1. is there a way for this setting to also work on .saver bundles as it does for .app bundles?

  2. is there an alternative way to achieve programmatically what NSHighResolutionCapable does?

The drawing is done with very simple native functions (not openGl, no metal) using a very simple cross platform library: https://github.com/starmessage/cpcc
At the moment, I do not want to redo the drawing code although I understand that would be the best solution.

I hope there is a solution for me.
thanks

This may be unrelated but I had some users report very high CPU usage starting with late 10.15 versions when I draw text using CALayer on retina.

The bug doesn't happen on every single machine, I can't reproduce it on my Late 2015 iMac for example. I ended up adding a switch in my screensaver (Aerial) for high resolution text because of that.

To directly answer your question, the way I fixed it is by rasterizing the layer I'm drawing, using this :

nLayer.shouldRasterize = true

https://developer.apple.com/documentation/quartzcore/calayer/1410905-shouldrasterize

Do you see the high CPU usage in app mode too ? You may be able to file a feedback so they can track this down, as it's a huge regression and I still to this day have no idea exactly why it doesn't affect everyone.
NSHighResolutionCapable ignored in the case of .saver bundles.
 
 
Q