summaryrefslogtreecommitdiff
path: root/toxcore
diff options
context:
space:
mode:
Diffstat (limited to 'toxcore')
-rw-r--r--toxcore/Messenger.c19
-rw-r--r--toxcore/Messenger.h19
-rw-r--r--toxcore/tox.h4
-rw-r--r--toxcore/util.h1
4 files changed, 26 insertions, 17 deletions
diff --git a/toxcore/Messenger.c b/toxcore/Messenger.c
index def05449..90a3a9e8 100644
--- a/toxcore/Messenger.c
+++ b/toxcore/Messenger.c
@@ -413,7 +413,7 @@ int m_delfriend(Messenger *m, int32_t friendnumber)
413 } 413 }
414 414
415 if (m->friend_connectionstatuschange_internal) { 415 if (m->friend_connectionstatuschange_internal) {
416 m->friend_connectionstatuschange_internal(m, friendnumber, 0, m->friend_connectionstatuschange_internal_userdata); 416 m->friend_connectionstatuschange_internal(m, friendnumber, 0, m->friend_connectionstatuschange_internal_userdata, NULL);
417 } 417 }
418 418
419 clear_receipts(m, friendnumber); 419 clear_receipts(m, friendnumber);
@@ -885,7 +885,8 @@ void m_callback_core_connection(Messenger *m, void (*function)(Messenger *m, uns
885 m->core_connection_change = function; 885 m->core_connection_change = function;
886} 886}
887 887
888void m_callback_connectionstatus_internal_av(Messenger *m, void (*function)(Messenger *m, uint32_t, uint8_t, void *), 888void m_callback_connectionstatus_internal_av(Messenger *m, void (*function)(Messenger *m, uint32_t, uint8_t, void *,
889 void *),
889 void *userdata) 890 void *userdata)
890{ 891{
891 m->friend_connectionstatuschange_internal = function; 892 m->friend_connectionstatuschange_internal = function;
@@ -946,7 +947,7 @@ static void check_friend_connectionstatus(Messenger *m, int32_t friendnumber, ui
946 947
947 if (m->friend_connectionstatuschange_internal) { 948 if (m->friend_connectionstatuschange_internal) {
948 m->friend_connectionstatuschange_internal(m, friendnumber, is_online, 949 m->friend_connectionstatuschange_internal(m, friendnumber, is_online,
949 m->friend_connectionstatuschange_internal_userdata); 950 m->friend_connectionstatuschange_internal_userdata, userdata);
950 } 951 }
951 } 952 }
952} 953}
@@ -1711,11 +1712,11 @@ static int handle_filecontrol(Messenger *m, int32_t friendnumber, uint8_t receiv
1711 * 1712 *
1712 * Function(Messenger *m, int friendnumber, uint8_t *data, uint16_t length, void *userdata) 1713 * Function(Messenger *m, int friendnumber, uint8_t *data, uint16_t length, void *userdata)
1713 */ 1714 */
1714void m_callback_msi_packet(Messenger *m, void (*function)(Messenger *m, uint32_t, const uint8_t *, uint16_t, void *), 1715void m_callback_msi_packet(Messenger *m, void (*function)(Messenger *m, uint32_t, const uint8_t *, uint16_t, void *,
1715 void *userdata) 1716 void *), void *object)
1716{ 1717{
1717 m->msi_packet = function; 1718 m->msi_packet = function;
1718 m->msi_packet_userdata = userdata; 1719 m->msi_packet_userdata = object;
1719} 1720}
1720 1721
1721/* Send an msi packet. 1722/* Send an msi packet.
@@ -1741,7 +1742,7 @@ static int handle_custom_lossy_packet(void *object, int friend_num, const uint8_
1741 if (m->friendlist[friend_num].lossy_rtp_packethandlers[packet[0] % PACKET_LOSSY_AV_RESERVED].function) { 1742 if (m->friendlist[friend_num].lossy_rtp_packethandlers[packet[0] % PACKET_LOSSY_AV_RESERVED].function) {
1742 return m->friendlist[friend_num].lossy_rtp_packethandlers[packet[0] % PACKET_LOSSY_AV_RESERVED].function( 1743 return m->friendlist[friend_num].lossy_rtp_packethandlers[packet[0] % PACKET_LOSSY_AV_RESERVED].function(
1743 m, friend_num, packet, length, m->friendlist[friend_num].lossy_rtp_packethandlers[packet[0] % 1744 m, friend_num, packet, length, m->friendlist[friend_num].lossy_rtp_packethandlers[packet[0] %
1744 PACKET_LOSSY_AV_RESERVED].object); 1745 PACKET_LOSSY_AV_RESERVED].object, userdata);
1745 } 1746 }
1746 1747
1747 return 1; 1748 return 1;
@@ -1761,7 +1762,7 @@ void custom_lossy_packet_registerhandler(Messenger *m, void (*packet_handler_cal
1761} 1762}
1762 1763
1763int m_callback_rtp_packet(Messenger *m, int32_t friendnumber, uint8_t byte, int (*packet_handler_callback)(Messenger *m, 1764int m_callback_rtp_packet(Messenger *m, int32_t friendnumber, uint8_t byte, int (*packet_handler_callback)(Messenger *m,
1764 uint32_t friendnumber, const uint8_t *data, uint16_t len, void *object), void *object) 1765 uint32_t friendnumber, const uint8_t *data, uint16_t len, void *object, void *userdata), void *object)
1765{ 1766{
1766 if (friend_not_valid(m, friendnumber)) { 1767 if (friend_not_valid(m, friendnumber)) {
1767 return -1; 1768 return -1;
@@ -2333,7 +2334,7 @@ static int handle_packet(void *object, int i, const uint8_t *temp, uint16_t len,
2333 } 2334 }
2334 2335
2335 if (m->msi_packet) { 2336 if (m->msi_packet) {
2336 (*m->msi_packet)(m, i, data, data_length, m->msi_packet_userdata); 2337 (*m->msi_packet)(m, i, data, data_length, m->msi_packet_userdata, userdata);
2337 } 2338 }
2338 2339
2339 break; 2340 break;
diff --git a/toxcore/Messenger.h b/toxcore/Messenger.h
index 2317eb8b..6f99f15b 100644
--- a/toxcore/Messenger.h
+++ b/toxcore/Messenger.h
@@ -200,8 +200,11 @@ typedef struct {
200 unsigned int num_sending_files; 200 unsigned int num_sending_files;
201 struct File_Transfers file_receiving[MAX_CONCURRENT_FILE_PIPES]; 201 struct File_Transfers file_receiving[MAX_CONCURRENT_FILE_PIPES];
202 202
203 /* ToxAV, *object is the internal session data for the active call, userdata is the *pointer provided in
204 * tox_iterate()
205 */
203 struct { 206 struct {
204 int (*function)(Messenger *m, uint32_t friendnumber, const uint8_t *data, uint16_t len, void *object); 207 int (*function)(Messenger *m, uint32_t friendnumber, const uint8_t *data, uint16_t len, void *object, void *userdata);
205 void *object; 208 void *object;
206 } lossy_rtp_packethandlers[PACKET_LOSSY_AV_RESERVED]; 209 } lossy_rtp_packethandlers[PACKET_LOSSY_AV_RESERVED];
207 210
@@ -245,7 +248,8 @@ struct Messenger {
245 void (*friend_typingchange)(struct Messenger *m, uint32_t, bool, void *); 248 void (*friend_typingchange)(struct Messenger *m, uint32_t, bool, void *);
246 void (*read_receipt)(struct Messenger *m, uint32_t, uint32_t, void *); 249 void (*read_receipt)(struct Messenger *m, uint32_t, uint32_t, void *);
247 void (*friend_connectionstatuschange)(struct Messenger *m, uint32_t, unsigned int, void *); 250 void (*friend_connectionstatuschange)(struct Messenger *m, uint32_t, unsigned int, void *);
248 void (*friend_connectionstatuschange_internal)(struct Messenger *m, uint32_t, uint8_t, void *); 251 void (*friend_connectionstatuschange_internal)(struct Messenger *m, uint32_t, uint8_t, void *, void *);
252 /* ToxAV internal session data */
249 void *friend_connectionstatuschange_internal_userdata; 253 void *friend_connectionstatuschange_internal_userdata;
250 254
251 void *group_chat_object; /* Set by new_groupchats()*/ 255 void *group_chat_object; /* Set by new_groupchats()*/
@@ -258,7 +262,7 @@ struct Messenger {
258 void (*file_filedata)(struct Messenger *m, uint32_t, uint32_t, uint64_t, const uint8_t *, size_t, void *); 262 void (*file_filedata)(struct Messenger *m, uint32_t, uint32_t, uint64_t, const uint8_t *, size_t, void *);
259 void (*file_reqchunk)(struct Messenger *m, uint32_t, uint32_t, uint64_t, size_t, void *); 263 void (*file_reqchunk)(struct Messenger *m, uint32_t, uint32_t, uint64_t, size_t, void *);
260 264
261 void (*msi_packet)(struct Messenger *m, uint32_t, const uint8_t *, uint16_t, void *); 265 void (*msi_packet)(struct Messenger *m, uint32_t, const uint8_t *, uint16_t, void *, void *);
262 void *msi_packet_userdata; 266 void *msi_packet_userdata;
263 267
264 void (*lossy_packethandler)(struct Messenger *m, uint32_t, const uint8_t *, size_t, void *); 268 void (*lossy_packethandler)(struct Messenger *m, uint32_t, const uint8_t *, size_t, void *);
@@ -523,7 +527,8 @@ void m_callback_read_receipt(Messenger *m, void (*function)(Messenger *m, uint32
523void m_callback_connectionstatus(Messenger *m, void (*function)(Messenger *m, uint32_t, unsigned int, void *)); 527void m_callback_connectionstatus(Messenger *m, void (*function)(Messenger *m, uint32_t, unsigned int, void *));
524 528
525/* Same as previous but for internal A/V core usage only */ 529/* Same as previous but for internal A/V core usage only */
526void m_callback_connectionstatus_internal_av(Messenger *m, void (*function)(Messenger *m, uint32_t, uint8_t, void *), 530void m_callback_connectionstatus_internal_av(Messenger *m, void (*function)(Messenger *m, uint32_t, uint8_t, void *,
531 void *),
527 void *userdata); 532 void *userdata);
528 533
529 534
@@ -657,8 +662,8 @@ uint64_t file_dataremaining(const Messenger *m, int32_t friendnumber, uint8_t fi
657 * 662 *
658 * Function(Messenger *m, uint32_t friendnumber, uint8_t *data, uint16_t length, void *userdata) 663 * Function(Messenger *m, uint32_t friendnumber, uint8_t *data, uint16_t length, void *userdata)
659 */ 664 */
660void m_callback_msi_packet(Messenger *m, void (*function)(Messenger *m, uint32_t, const uint8_t *, uint16_t, void *), 665void m_callback_msi_packet(Messenger *m, void (*function)(Messenger *m, uint32_t, const uint8_t *, uint16_t, void *,
661 void *userdata); 666 void *), void *toxav_session);
662 667
663/* Send an msi packet. 668/* Send an msi packet.
664 * 669 *
@@ -673,7 +678,7 @@ int m_msi_packet(const Messenger *m, int32_t friendnumber, const uint8_t *data,
673 * return 0 on success. 678 * return 0 on success.
674 */ 679 */
675int m_callback_rtp_packet(Messenger *m, int32_t friendnumber, uint8_t byte, int (*packet_handler_callback)(Messenger *m, 680int m_callback_rtp_packet(Messenger *m, int32_t friendnumber, uint8_t byte, int (*packet_handler_callback)(Messenger *m,
676 uint32_t friendnumber, const uint8_t *data, uint16_t len, void *object), void *object); 681 uint32_t friendnumber, const uint8_t *data, uint16_t len, void *object, void *userdata), void *object);
677 682
678/**********************************************/ 683/**********************************************/
679 684
diff --git a/toxcore/tox.h b/toxcore/tox.h
index a8488aeb..61c4227a 100644
--- a/toxcore/tox.h
+++ b/toxcore/tox.h
@@ -1237,6 +1237,10 @@ typedef enum TOX_ERR_FRIEND_DELETE {
1237 * function, this client will appear offline to the friend and no communication 1237 * function, this client will appear offline to the friend and no communication
1238 * can occur between the two. 1238 * can occur between the two.
1239 * 1239 *
1240 * WARNING, calling tox_friend_delete while there's an active ToxAV call will
1241 * result in undefined behavior. It's the client's responsibility to end all
1242 * ToxAV calls before deleting a friend.
1243 *
1240 * @param friend_number Friend number for the friend to be deleted. 1244 * @param friend_number Friend number for the friend to be deleted.
1241 * 1245 *
1242 * @return true on success. 1246 * @return true on success.
diff --git a/toxcore/util.h b/toxcore/util.h
index 840f0a3e..d7ad7beb 100644
--- a/toxcore/util.h
+++ b/toxcore/util.h
@@ -30,7 +30,6 @@
30#include <stdint.h> 30#include <stdint.h>
31 31
32#define MIN(a,b) (((a)<(b))?(a):(b)) 32#define MIN(a,b) (((a)<(b))?(a):(b))
33#define PAIR(TYPE1__, TYPE2__) struct { TYPE1__ first; TYPE2__ second; }
34 33
35void unix_time_update(void); 34void unix_time_update(void);
36uint64_t unix_time(void); 35uint64_t unix_time(void);