After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 678343 - Make clutter requirement runtime-optional
Make clutter requirement runtime-optional
Status: RESOLVED WONTFIX
Product: empathy
Classification: Core
Component: General
unspecified
Other Linux
: Normal normal
: ---
Assigned To: empathy-maint
empathy-maint
Depends on:
Blocks:
 
 
Reported: 2012-06-18 17:37 UTC by Daniel Drake
Modified: 2012-06-21 06:51 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Daniel Drake 2012-06-18 17:37:36 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.
Comment 1 Peter Robinson 2012-06-18 21:48:47 UTC
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.
Comment 2 Daniel Drake 2012-06-19 00:30:59 UTC
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!
Comment 3 Guillaume Desmottes 2012-06-19 07:18:38 UTC
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?
Comment 4 Daniel Drake 2012-06-20 16:03:48 UTC
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
Comment 5 Guillaume Desmottes 2012-06-21 06:51:32 UTC
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.