chat->media_connected = FALSE;
chime_call_set_silent(chat->call, TRUE);
}
+ if (chat->conv)
+ purple_conversation_destroy(chat->conv);
}
}
chime_connection_autocomplete_contact_async(pc->cxn, who, NULL, autocomplete_mad_cb, mad);
}
-static void show_participants (PurpleBuddy *buddy, gpointer _chat)
+static void show_participants(PurpleBuddy *buddy, gpointer _chat)
{
struct chime_chat *chat = _chat;
if (chat->call) {
}
}
+void chime_purple_chat_join_audio(struct chime_chat *chat)
+{
+ if (chat->call)
+ chime_call_set_silent(chat->call, FALSE);
+}
+
static void join_audio(PurpleBuddy *buddy, gpointer _chat)
{
struct chime_chat *chat = _chat;
void on_chime_new_group_conv(ChimeConnection *cxn, ChimeConversation *conv, PurpleConnection *conn);
void chime_purple_chat_invite(PurpleConnection *conn, int id, const char *message, const char *who);
struct chime_chat *do_join_chat(PurpleConnection *conn, ChimeConnection *cxn, ChimeObject *obj, JsonNode *first_msg, ChimeMeeting *meeting);
+void chime_purple_chat_join_audio(struct chime_chat *chat);
GList *chime_purple_chat_menu(PurpleChat *chat);
char *chime_purple_get_cb_alias(PurpleConnection *conn, int id, const gchar *who);
gchar *name = g_list_nth_data(row, 1);
purple_debug(PURPLE_DEBUG_INFO, "chime", "Join meeting %s\n", name);
ChimeMeeting *mtg = chime_connection_meeting_by_name(cxn, name);
- if (mtg)
+
+ if (mtg) {
+ if (!muted) {
+ /* If asked for audio and the meeting is already open, just start audio */
+ struct purple_chime *pc = purple_connection_get_protocol_data(conn);
+ ChimeRoom *room = chime_meeting_get_chat_room(mtg);
+
+ if (room) {
+ struct chime_chat *chat = g_hash_table_lookup(pc->chats_by_room, room);
+ if (chat) {
+ chime_purple_chat_join_audio(chat);
+ return;
+ }
+ }
+ }
chime_connection_join_meeting_async(cxn, mtg, muted, NULL, join_mtg_done, conn);
+ }
}
static void join_joinable_audio(PurpleConnection *conn, GList *row, gpointer _unused)