I have already used multiple windows
Mind telling us for what?
And I also plan to use resource loading in a separate thread, exactly because of the smooth continuation of the main thread Laurent mentioned.
I really feel like talking with walls here. ;-) You can still load your resources in a separate thread, I already gave an example how to do it. And finally, like stated a million times already: You do not benefit from creating the textures in a separate thread. It's only loading and decompressing image data that do freezes/FPS drops.
Just answer the following question: If creating textures in a separate thread means that your game crashes at 1% of your user's computers, would you consider choosing another option or "just keep it that way"?
Please read the articles I linked in a previous post, or even do a Google search on OpenGL multi-threading and shared contexts. It's everything but recommended for good reasons.
And I don't consider it a good idea to remove useful SFML features to make a questionable design (singletons) in your own project working.
I already stated that "removing multiple windows" is not what I planned to achieve, but rather removing shared contexts. You can use as much windows as you like and you won't run into any problems when they all have separate contexts. But when they're shared, you have to pay attention in many regards that you better do with a single context in your application. In my opinion there's no advantage of using shared contexts.
Did you take a look at SFGUI's renderer to see why it's a singleton? It's a singleton because it's a global interface to OpenGL. You could also write free functions for most of the features the renderer provides. However it also manages some resources like texture caches and OGL handles, that's why it's an object primarily.
I really don't think having a singleton like that is an issue at all. The problem is that resources are not managed by SFML's contexts, so we can run into unpredicted behaviour quite easily. It can and should be avoided in my eyes.
And as you're talking about RAII: The one for SFML's resources doesn't pay attention at the context's scope. So when you argue that SFGUI should carry an init()/cleanup() pair, then SFML must have that too, because it's possible to keep resources alive when the parent object gets destroyed.
And it's definitely better than an ever-present bug at program exit.
Yeah, but now SFGUI users have to do an ugly
sfg::SFGUI foobar;
to workaround crashes – but not all, the GetDefaultFont() crash is still there and you can't do anything against it (except linking statically which seems to "fix" it, but I call that a fix that randomly works).