I'm trying to build a screensaver for S60 3rd edition. I've managed to get the code running (as far as I've been able to test), but I run into problems with platform security.
As we all know, a DLL must have at least the same capabilities as the loading process.
In order to be able to select the screensaver plugin, the themes application has to be able to load it. On the emulator I've found out that this in practice means that the screensaver needs the following capabilities: ReadDeviceData WriteDeviceData DRM NetworkControl SwEvent NetworkServices LocalServices ReadUserData WriteUserData Location UserEnvironment
If I grant these capabilities, the screensaver shows up in the list in the themes application. But as far as I know, the emulator doesn't actually start the screensaver, so I haven't been able to see which capabilities the screensaver server(?) requires.
The problem is that this list of capabilities is insane, it's more than the end user can grant, and it's even more than what can be granted with a simple developer certificate. Thus I haven't been able to test it at all on a real device.
Is this really the case, or is there some workaround I don't know about? Does a simple screensaver really need manufacturer approved capabilities?
Platform Security in principle is ok, but in cases like this one it really creates unnecessary hurdles.
A suggestion for future versions would be to have a separate loader process with very low capabilities, which the themes application (and perhaps the screensaver server, too) communicates with using some sort of IPC. Cumbersome and clumsy, yes, but that would solve this problem at least.