GNOME Bugzilla – Bug 655356
Empathy cancel DTMF tones without minimal delay
Last modified: 2011-09-19 11:31:56 UTC
In Empathy, the dial-pad uses key_down/up event to start/stop tone. On certain CM implementation, this causes very short tone to be played, which may fail to be detected by some systems. Essentially what we want is a minimal playing delay (e.g. 250ms) and some queueing so we can type faster then the playing rate. While testing with some digital phones I had at home (cellular and wireless landlines phones), I found that most of them does not let you play songs with DTMF. It simply plays every key with a fixed length and queue the next key if not done with current one. Base on that, we could change the Empathy implementation to only use MultipleTones() calls, queue tones during playback and flush the queued tones when StoppedTones is signalled. This will let the CM decide the appropriate duration and delay between tones, and avoid all the grey zone of StartTone/StopTone API.
Created attachment 196081 [details] [review] CallWindow: emit tones using MultipleTones
Created attachment 196082 [details] [review] CallWindow: unconditionally connect to notify::call-channel Since we can get a new call channel if we e.g. hangup and then call again.
Review of attachment 196081 [details] [review]: Looks good; feel free to merge once you have added the comment. ::: src/empathy-call-window.c @@ +190,3 @@ gdouble volume; GtkWidget *dtmf_panel; Please add a comment explaining the logic of this variable.
Attachment 196081 [details] pushed as add501b - CallWindow: emit tones using MultipleTones Attachment 196082 [details] pushed as a3086b1 - CallWindow: unconditionally connect to notify::call-channel