From 13ae9e9a93a1c02fad9475002c0391b86b7ad7bb Mon Sep 17 00:00:00 2001 From: iphydf Date: Fri, 19 Aug 2016 13:07:45 +0100 Subject: Move logging to a callback. This removes the global logger (which by the way was deleted when the first tox was killed, so other toxes would then stop logging). Various bits of the code now carry a logger or pass it around. It's a bit less transparent now, but now there is no need to have a global logger, and clients can decide what to log and where. --- toxav/toxav.c | 57 +++++++++++++++++++++++++++++---------------------------- 1 file changed, 29 insertions(+), 28 deletions(-) (limited to 'toxav/toxav.c') diff --git a/toxav/toxav.c b/toxav/toxav.c index 1aece0b3..4ef5d2b3 100644 --- a/toxav/toxav.c +++ b/toxav/toxav.c @@ -132,13 +132,14 @@ ToxAV *toxav_new(Tox *tox, TOXAV_ERR_NEW *error) { TOXAV_ERR_NEW rc = TOXAV_ERR_NEW_OK; ToxAV *av = NULL; + Messenger *m = (Messenger *)tox; if (tox == NULL) { rc = TOXAV_ERR_NEW_NULL; goto END; } - if (((Messenger *)tox)->msi_packet) { + if (m->msi_packet) { rc = TOXAV_ERR_NEW_MULTIPLE; goto END; } @@ -146,18 +147,18 @@ ToxAV *toxav_new(Tox *tox, TOXAV_ERR_NEW *error) av = calloc (sizeof(ToxAV), 1); if (av == NULL) { - LOGGER_WARNING("Allocation failed!"); + LOGGER_WARNING(m->log, "Allocation failed!"); rc = TOXAV_ERR_NEW_MALLOC; goto END; } if (create_recursive_mutex(av->mutex) != 0) { - LOGGER_WARNING("Mutex creation failed!"); + LOGGER_WARNING(m->log, "Mutex creation failed!"); rc = TOXAV_ERR_NEW_MALLOC; goto END; } - av->m = (Messenger *)tox; + av->m = m; av->msi = msi_new(av->m); if (av->msi == NULL) { @@ -563,12 +564,12 @@ bool toxav_bit_rate_set(ToxAV *av, uint32_t friend_number, int32_t audio_bit_rat } if (audio_bit_rate >= 0) { - LOGGER_DEBUG("Setting new audio bitrate to: %d", audio_bit_rate); + LOGGER_DEBUG(av->m->log, "Setting new audio bitrate to: %d", audio_bit_rate); if (call->audio_bit_rate == audio_bit_rate) { - LOGGER_DEBUG("Audio bitrate already set to: %d", audio_bit_rate); + LOGGER_DEBUG(av->m->log, "Audio bitrate already set to: %d", audio_bit_rate); } else if (audio_bit_rate == 0) { - LOGGER_DEBUG("Turned off audio sending"); + LOGGER_DEBUG(av->m->log, "Turned off audio sending"); if (msi_change_capabilities(call->msi_call, call->msi_call-> self_capabilities ^ msi_CapSAudio) != 0) { @@ -583,7 +584,7 @@ bool toxav_bit_rate_set(ToxAV *av, uint32_t friend_number, int32_t audio_bit_rat pthread_mutex_lock(call->mutex); if (call->audio_bit_rate == 0) { - LOGGER_DEBUG("Turned on audio sending"); + LOGGER_DEBUG(av->m->log, "Turned on audio sending"); /* The audio has been turned off before this */ if (msi_change_capabilities(call->msi_call, call-> @@ -594,7 +595,7 @@ bool toxav_bit_rate_set(ToxAV *av, uint32_t friend_number, int32_t audio_bit_rat goto END; } } else - LOGGER_DEBUG("Set new audio bit rate %d", audio_bit_rate); + LOGGER_DEBUG(av->m->log, "Set new audio bit rate %d", audio_bit_rate); call->audio_bit_rate = audio_bit_rate; pthread_mutex_unlock(call->mutex); @@ -602,12 +603,12 @@ bool toxav_bit_rate_set(ToxAV *av, uint32_t friend_number, int32_t audio_bit_rat } if (video_bit_rate >= 0) { - LOGGER_DEBUG("Setting new video bitrate to: %d", video_bit_rate); + LOGGER_DEBUG(av->m->log, "Setting new video bitrate to: %d", video_bit_rate); if (call->video_bit_rate == video_bit_rate) { - LOGGER_DEBUG("Video bitrate already set to: %d", video_bit_rate); + LOGGER_DEBUG(av->m->log, "Video bitrate already set to: %d", video_bit_rate); } else if (video_bit_rate == 0) { - LOGGER_DEBUG("Turned off video sending"); + LOGGER_DEBUG(av->m->log, "Turned off video sending"); /* Video sending is turned off; notify peer */ if (msi_change_capabilities(call->msi_call, call->msi_call-> @@ -622,7 +623,7 @@ bool toxav_bit_rate_set(ToxAV *av, uint32_t friend_number, int32_t audio_bit_rat pthread_mutex_lock(call->mutex); if (call->video_bit_rate == 0) { - LOGGER_DEBUG("Turned on video sending"); + LOGGER_DEBUG(av->m->log, "Turned on video sending"); /* The video has been turned off before this */ if (msi_change_capabilities(call->msi_call, call-> @@ -633,7 +634,7 @@ bool toxav_bit_rate_set(ToxAV *av, uint32_t friend_number, int32_t audio_bit_rat goto END; } } else - LOGGER_DEBUG("Set new video bit rate %d", video_bit_rate); + LOGGER_DEBUG(av->m->log, "Set new video bit rate %d", video_bit_rate); call->video_bit_rate = video_bit_rate; pthread_mutex_unlock(call->mutex); @@ -717,14 +718,14 @@ bool toxav_audio_send_frame(ToxAV *av, uint32_t friend_number, const int16_t *pc dest + sizeof(sampling_rate), sizeof(dest) - sizeof(sampling_rate)); if (vrc < 0) { - LOGGER_WARNING("Failed to encode frame %s", opus_strerror(vrc)); + LOGGER_WARNING(av->m->log, "Failed to encode frame %s", opus_strerror(vrc)); pthread_mutex_unlock(call->mutex_audio); rc = TOXAV_ERR_SEND_FRAME_INVALID; goto END; } if (rtp_send_data(call->audio.first, dest, vrc + sizeof(sampling_rate)) != 0) { - LOGGER_WARNING("Failed to send audio packet"); + LOGGER_WARNING(av->m->log, "Failed to send audio packet"); rc = TOXAV_ERR_SEND_FRAME_RTP_FAILED; } } @@ -805,7 +806,7 @@ bool toxav_video_send_frame(ToxAV *av, uint32_t friend_number, uint16_t width, u if (vrc != VPX_CODEC_OK) { pthread_mutex_unlock(call->mutex_video); - LOGGER_ERROR("Could not encode video frame: %s\n", vpx_codec_err_to_string(vrc)); + LOGGER_ERROR(av->m->log, "Could not encode video frame: %s\n", vpx_codec_err_to_string(vrc)); rc = TOXAV_ERR_SEND_FRAME_INVALID; goto END; } @@ -822,7 +823,7 @@ bool toxav_video_send_frame(ToxAV *av, uint32_t friend_number, uint16_t width, u rtp_send_data(call->video.first, pkt->data.frame.buf, pkt->data.frame.sz) < 0) { pthread_mutex_unlock(call->mutex_video); - LOGGER_WARNING("Could not send video frame: %s\n", strerror(errno)); + LOGGER_WARNING(av->m->log, "Could not send video frame: %s\n", strerror(errno)); rc = TOXAV_ERR_SEND_FRAME_RTP_FAILED; goto END; } @@ -871,7 +872,7 @@ void callback_bwc(BWController *bwc, uint32_t friend_number, float loss, void *u ToxAVCall *call = user_data; assert(call); - LOGGER_DEBUG("Reported loss of %f%%", loss * 100); + LOGGER_DEBUG(call->av->m->log, "Reported loss of %f%%", loss * 100); if (loss < .01f) return; @@ -880,7 +881,7 @@ void callback_bwc(BWController *bwc, uint32_t friend_number, float loss, void *u if (!call->av->bcb.first) { pthread_mutex_unlock(call->av->mutex); - LOGGER_WARNING("No callback to report loss on"); + LOGGER_WARNING(call->av->m->log, "No callback to report loss on"); return; } @@ -903,7 +904,7 @@ int callback_invite(void *toxav_inst, MSICall *call) ToxAVCall *av_call = call_new(toxav, call->friend_number, NULL); if (av_call == NULL) { - LOGGER_WARNING("Failed to initialize call..."); + LOGGER_WARNING(toxav->m->log, "Failed to initialize call..."); pthread_mutex_unlock(toxav->mutex); return -1; } @@ -1169,7 +1170,7 @@ bool call_prepare_transmission(ToxAVCall *call) return false; if (call->active) { - LOGGER_WARNING("Call already active!\n"); + LOGGER_WARNING(av->m->log, "Call already active!\n"); return true; } @@ -1186,10 +1187,10 @@ bool call_prepare_transmission(ToxAVCall *call) call->bwc = bwc_new(av->m, call->friend_number, callback_bwc, call); { /* Prepare audio */ - call->audio.second = ac_new(av, call->friend_number, av->acb.first, av->acb.second); + call->audio.second = ac_new(av->m->log, av, call->friend_number, av->acb.first, av->acb.second); if (!call->audio.second) { - LOGGER_ERROR("Failed to create audio codec session"); + LOGGER_ERROR(av->m->log, "Failed to create audio codec session"); goto FAILURE; } @@ -1197,15 +1198,15 @@ bool call_prepare_transmission(ToxAVCall *call) call->audio.second, ac_queue_message); if (!call->audio.first) { - LOGGER_ERROR("Failed to create audio rtp session");; + LOGGER_ERROR(av->m->log, "Failed to create audio rtp session");; goto FAILURE; } } { /* Prepare video */ - call->video.second = vc_new(av, call->friend_number, av->vcb.first, av->vcb.second); + call->video.second = vc_new(av->m->log, av, call->friend_number, av->vcb.first, av->vcb.second); if (!call->video.second) { - LOGGER_ERROR("Failed to create video codec session"); + LOGGER_ERROR(av->m->log, "Failed to create video codec session"); goto FAILURE; } @@ -1213,7 +1214,7 @@ bool call_prepare_transmission(ToxAVCall *call) call->video.second, vc_queue_message); if (!call->video.first) { - LOGGER_ERROR("Failed to create video rtp session"); + LOGGER_ERROR(av->m->log, "Failed to create video rtp session"); goto FAILURE; } } -- cgit v1.2.3