diff --git a/gtk/main.c b/gtk/main.c index 148fb219d..cb808dac0 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -1227,12 +1227,12 @@ void linphone_gtk_notify(LinphoneCall *call, const char *msg){ ,NULL #endif ),NULL)) - - ms_error("Failed to send notification."); + ms_error("Failed to send notification."); #else linphone_gtk_show_main_window(); #endif } else if (!gtk_window_is_active((GtkWindow*)linphone_gtk_get_main_window())) { + gboolean show_main_window = FALSE; #ifdef HAVE_NOTIFY char *body=NULL; char *remote=call!=NULL ? linphone_call_get_remote_address_as_string(call) : NULL; @@ -1246,13 +1246,15 @@ void linphone_gtk_notify(LinphoneCall *call, const char *msg){ break; case LinphoneCallIncomingReceived: n=build_notification(_("Incoming call"),body=g_markup_printf_escaped("%s",remote)); - if (notify_actions_supported()) { - notify_notification_add_action (n,"answer", _("Answer"), - NOTIFY_ACTION_CALLBACK(linphone_gtk_answer_clicked),NULL,NULL); - notify_notification_add_action (n,"decline",_("Decline"), - NOTIFY_ACTION_CALLBACK(linphone_gtk_decline_clicked),NULL,NULL); - } - show_notification(n); + if (n){ + if (notify_actions_supported()) { + notify_notification_add_action (n,"answer", _("Answer"), + NOTIFY_ACTION_CALLBACK(linphone_gtk_answer_clicked),NULL,NULL); + notify_notification_add_action (n,"decline",_("Decline"), + NOTIFY_ACTION_CALLBACK(linphone_gtk_decline_clicked),NULL,NULL); + } + show_notification(n); + }else show_main_window = TRUE; break; case LinphoneCallPausedByRemote: make_notification(_("Call paused"),body=g_markup_printf_escaped(_("by %s"),remote)); @@ -1262,7 +1264,11 @@ void linphone_gtk_notify(LinphoneCall *call, const char *msg){ } if (body) g_free(body); if (remote) g_free(remote); +#else + if (linphone_call_get_state(call) == LinphoneCallIncomingReceived) + show_main_window = TRUE; #endif + if (show_main_window) linphone_gtk_show_main_window(); } }