GNOME Bugzilla – Bug 678343
Make clutter requirement runtime-optional
Last modified: 2012-06-21 06:51:32 UTC
empathy now uses clutter, for video chat functionality. But the way this is written means that empathy now requires clutter early-on during init, and if clutter init fails, empathy doesn't load. On OLPC XO laptops we do not have any OpenGL support, so we have been forced to drop empathy from our software releases because of this. Would it be possible to make clutter support optional at run time? It only seems to be used by video chat. Perhaps clutter could be initialised only when starting a video chat, and if init fails, this would be presented as an error message but would not affect the functionality of the rest of empathy? It looks like it might already be possible to exclude this functionality at compile-time, by excluding libchamplain and videocall support. But we don't have enough resources to maintain our own package builds for the rest of our lifetime, so we take whatever is built in Fedora. So a runtime solution would be much appreciated and would allow us to continue distributing empathy.
In gnome traditional fallback mode this should fail back nicely. Totem does this when it detects that gnome is running in a mode that doesn't support clutter. empathy should fall back like this as well rather than hard fail. There's lots of other environments like remote X, VDI, virtualisation etc where this sort of fall back is critical.
Totem doesn't do this (I checked the code) - it hard fails when clutter isn't available, and the guys in #clutter confirmed that that is known and desired behaviour. Would appreciate knowing where you get the contrasting information from - if you're right then we'll be happy!
AFAIK, Clutter has to be initialized at the very start of the app so I don't think this can be done later at run time. Can't you use llvmpipe as a fallback?
llvmpipe performs terribly on our platforms and eats a significant chunk of our precious disk space. It would be more convenient for us if empathy could cope without clutter support. If clutter really has to be initialised early, is there a possibility of something like the following: 1. Initialise clutter 2. If clutter init failed, initialise GTK only and disable video call functionality
That would be very very hack, so I'd rather not. What could eventually be done is: - Stop building with champlain support so clutter won't be used by empathy and empathy-chat any more (the roster and chat windows). - Package empathy-call in a separated binary package and don't install it - Build Empathy 3.4 with --enable-empathy-av and use empathy-av instead of empathy-call (this is the old call UI not using Clutter). Note that empathy-av has been dropped in master, so you'll have to stuck with 3.4 until you upgrade your plateform.