void utox_av_local_disconnect(ToxAV *av, int32_t friend_number) { TOXAV_ERR_CALL_CONTROL error = 0; if (av) { /* TODO HACK: tox_callbacks doesn't have access to toxav, so it just sets it as NULL, this is bad! */ toxav_call_control(av, friend_number, TOXAV_CALL_CONTROL_CANCEL, &error); } switch (error) { case TOXAV_ERR_CALL_CONTROL_OK: { debug("uToxAV:\tToxAV has disconnected!\n"); break; } case TOXAV_ERR_CALL_CONTROL_SYNC: { debug("uToxAV:\tToxAV sync error!\n"); break; } case TOXAV_ERR_CALL_CONTROL_FRIEND_NOT_FOUND: { debug("uToxAV:\tToxAV friend #%i not found.\n", friend_number); break; } case TOXAV_ERR_CALL_CONTROL_FRIEND_NOT_IN_CALL: { debug("uToxAV:\tToxAV no existing call for friend #%i.\n", friend_number); break; } case TOXAV_ERR_CALL_CONTROL_INVALID_TRANSITION: { debug("uToxAV:\tCall already paused, or already running.\n"); break; } } toxav_postmessage(UTOXAV_END_CALL, friend_number, 0, NULL); friend[friend_number].call_state_self = 0; friend[friend_number].call_state_friend = 0; postmessage(AV_CLOSE_WINDOW, friend_number + 1, 0, NULL); postmessage(AV_CALL_DISCONNECTED, friend_number, 0, NULL); }
static void utox_av_remote_disconnect(ToxAV *av, int32_t friend_number) { debug("uToxAV:\tRemote disconnect from friend %u\n", friend_number); toxav_postmessage(UTOXAV_END_CALL, friend_number, 0, NULL); friend[friend_number].call_state_self = 0; friend[friend_number].call_state_friend = 0; postmessage(AV_CLOSE_WINDOW, friend_number + 1, 0, NULL); postmessage(AV_CALL_DISCONNECTED, friend_number, 0, NULL); }
void tox_settingschanged(void) { //free everything tox_connected = 0; list_freeall(); list_dropdown_clear(&dropdown_audio_in); list_dropdown_clear(&dropdown_audio_out); list_dropdown_clear(&dropdown_video); tox_thread_init = 0; toxaudio_postmessage(AUDIO_KILL, 0, 0, NULL); toxvideo_postmessage(VIDEO_KILL, 0, 0, NULL); toxav_postmessage(TOXAV_KILL, 0, 0, NULL); tox_postmessage(0, 1, 0, NULL); while(!tox_thread_init) { yieldcpu(1); } list_start(); }