static int tray_timeout_cb (TrayIcon icon) { if (custom_icon1) { if (gtk_status_icon_get_pixbuf (sticon) == custom_icon1) { if (custom_icon2) gtk_status_icon_set_from_pixbuf (sticon, custom_icon2); else gtk_status_icon_set_from_pixbuf (sticon, ICON_NORMAL); } else { gtk_status_icon_set_from_pixbuf (sticon, custom_icon1); } } else { if (gtk_status_icon_get_pixbuf (sticon) == ICON_NORMAL) gtk_status_icon_set_from_pixbuf (sticon, icon); else gtk_status_icon_set_from_pixbuf (sticon, ICON_NORMAL); } return 1; }
static gboolean _linphone_status_icon_impl_gtk_do_icon_blink_cb(GtkStatusIcon *gi) { GdkPixbuf *call_icon=g_object_get_data(G_OBJECT(gi),"call_icon"); GdkPixbuf *normal_icon=g_object_get_data(G_OBJECT(gi),"icon"); GdkPixbuf *cur_icon=gtk_status_icon_get_pixbuf(gi); if (cur_icon==call_icon) { gtk_status_icon_set_from_pixbuf(gi,normal_icon); } else { gtk_status_icon_set_from_pixbuf(gi,call_icon); } return TRUE; }
static void tray_set_flash (TrayIcon icon) { if (!sticon) return; /* already flashing the same icon */ if (flash_tag && gtk_status_icon_get_pixbuf (sticon) == icon) return; /* no flashing if window is focused */ if (tray_get_window_status () == WS_FOCUSED) return; tray_stop_flash (); gtk_status_icon_set_from_pixbuf (sticon, icon); flash_tag = g_timeout_add (TIMEOUT, (GSourceFunc) tray_timeout_cb, icon); }