mirror of
https://github.com/irungentoo/toxcore.git
synced 2024-03-22 13:30:51 +08:00
Fix bug
This commit is contained in:
parent
73fbc22961
commit
64037017cc
|
@ -205,6 +205,12 @@ int msi_hangup ( MSICall* call )
|
|||
MSISession* session = call->session;
|
||||
pthread_mutex_lock(session->mutex);
|
||||
|
||||
if ( call->state == msi_CallInactive ) {
|
||||
LOGGER_ERROR("Call is in invalid state!");
|
||||
pthread_mutex_unlock(session->mutex);
|
||||
return -1;
|
||||
}
|
||||
|
||||
MSIMessage msg;
|
||||
msg_init(&msg, requ_pop);
|
||||
|
||||
|
|
|
@ -113,7 +113,7 @@ int callback_capabilites(void* toxav_inst, MSICall* call);
|
|||
|
||||
bool audio_bit_rate_invalid(uint32_t bit_rate);
|
||||
bool video_bit_rate_invalid(uint32_t bit_rate);
|
||||
void invoke_call_state(ToxAV* av, uint32_t friend_number, uint32_t state);
|
||||
bool invoke_call_state(ToxAV* av, uint32_t friend_number, uint32_t state);
|
||||
ToxAVCall* call_new(ToxAV* av, uint32_t friend_number, TOXAV_ERR_CALL* error);
|
||||
ToxAVCall* call_get(ToxAV* av, uint32_t friend_number);
|
||||
ToxAVCall* call_remove(ToxAVCall* call);
|
||||
|
@ -998,6 +998,11 @@ int callback_invite(void* toxav_inst, MSICall* call)
|
|||
if (toxav->ccb.first)
|
||||
toxav->ccb.first(toxav, call->friend_number, call->peer_capabilities & msi_CapSAudio,
|
||||
call->peer_capabilities & msi_CapSVideo, toxav->ccb.second);
|
||||
else {
|
||||
/* No handler to capture the call request, send failure */
|
||||
pthread_mutex_unlock(toxav->mutex);
|
||||
return -1;
|
||||
}
|
||||
|
||||
pthread_mutex_unlock(toxav->mutex);
|
||||
return 0;
|
||||
|
@ -1018,12 +1023,15 @@ int callback_start(void* toxav_inst, MSICall* call)
|
|||
|
||||
if (!call_prepare_transmission(av_call)) {
|
||||
callback_error(toxav_inst, call);
|
||||
call_remove(av_call);
|
||||
pthread_mutex_unlock(toxav->mutex);
|
||||
return -1;
|
||||
}
|
||||
|
||||
invoke_call_state(toxav, call->friend_number, call->peer_capabilities);
|
||||
if (!invoke_call_state(toxav, call->friend_number, call->peer_capabilities)) {
|
||||
callback_error(toxav_inst, call);
|
||||
pthread_mutex_unlock(toxav->mutex);
|
||||
return -1;
|
||||
}
|
||||
|
||||
pthread_mutex_unlock(toxav->mutex);
|
||||
return 0;
|
||||
|
@ -1083,10 +1091,13 @@ bool video_bit_rate_invalid(uint32_t bit_rate)
|
|||
return false;
|
||||
}
|
||||
|
||||
void invoke_call_state(ToxAV* av, uint32_t friend_number, uint32_t state)
|
||||
bool invoke_call_state(ToxAV* av, uint32_t friend_number, uint32_t state)
|
||||
{
|
||||
if (av->scb.first)
|
||||
av->scb.first(av, friend_number, state, av->scb.second);
|
||||
else
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
ToxAVCall* call_new(ToxAV* av, uint32_t friend_number, TOXAV_ERR_CALL* error)
|
||||
|
|
|
@ -190,7 +190,7 @@ bool toxav_answer(ToxAV *av, uint32_t friend_number, uint32_t audio_bit_rate, ui
|
|||
* :: Call state graph
|
||||
*
|
||||
******************************************************************************/
|
||||
typedef enum TOXAV_CALL_STATE {
|
||||
enum TOXAV_CALL_STATE {
|
||||
/**
|
||||
* The flag that marks that friend is sending audio.
|
||||
*/
|
||||
|
@ -218,7 +218,7 @@ typedef enum TOXAV_CALL_STATE {
|
|||
* state will never be triggered in combination with other call states.
|
||||
*/
|
||||
TOXAV_CALL_STATE_ERROR = 32768
|
||||
} TOXAV_CALL_STATE;
|
||||
};
|
||||
/**
|
||||
* The function type for the `call_state` callback.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue
Block a user