summaryrefslogtreecommitdiff
path: root/core/Messenger.c
diff options
context:
space:
mode:
authorMaxim Biro <nurupo.contributions@gmail.com>2013-08-11 14:57:47 -0400
committerMaxim Biro <nurupo.contributions@gmail.com>2013-08-11 14:57:47 -0400
commiteaa7d3e0a0a38e4bac6c8879567cbb064f7d48c3 (patch)
tree1b6b6e1eec5d4773af5c62d2576676919978097d /core/Messenger.c
parent440871bda1ee0eb7ee7c6abd31c62340242a5fd0 (diff)
Replaced friendstatus with connectionstatus
Diffstat (limited to 'core/Messenger.c')
-rw-r--r--core/Messenger.c27
1 files changed, 19 insertions, 8 deletions
diff --git a/core/Messenger.c b/core/Messenger.c
index d26bba56..4ea7e507 100644
--- a/core/Messenger.c
+++ b/core/Messenger.c
@@ -169,7 +169,7 @@ int m_addfriend_norequest(uint8_t * client_id)
169 for (i = 0; i <= numfriends; ++i) { 169 for (i = 0; i <= numfriends; ++i) {
170 if(friendlist[i].status == NOFRIEND) { 170 if(friendlist[i].status == NOFRIEND) {
171 DHT_addfriend(client_id); 171 DHT_addfriend(client_id);
172 set_friend_status(i, FRIEND_REQUESTED); 172 friendlist[i].status = FRIEND_REQUESTED;
173 friendlist[i].crypt_connection_id = -1; 173 friendlist[i].crypt_connection_id = -1;
174 friendlist[i].friend_request_id = -1; 174 friendlist[i].friend_request_id = -1;
175 memcpy(friendlist[i].client_id, client_id, CLIENT_ID_SIZE); 175 memcpy(friendlist[i].client_id, client_id, CLIENT_ID_SIZE);
@@ -482,18 +482,29 @@ void m_callback_read_receipt(void (*function)(int, uint32_t))
482 read_receipt_isset = 1; 482 read_receipt_isset = 1;
483} 483}
484 484
485static void (*friend_statuschange)(int, uint8_t); 485static void (*friend_connectionstatuschange)(int, uint8_t);
486static uint8_t friend_statuschange_isset = 0; 486static uint8_t friend_connectionstatuschange_isset = 0;
487void m_callback_friendstatus(void (*function)(int, uint8_t)) 487void m_callback_connectionstatus(void (*function)(int, uint8_t))
488{ 488{
489 friend_statuschange = function; 489 friend_connectionstatuschange = function;
490 friend_statuschange_isset = 1; 490 friend_connectionstatuschange_isset = 1;
491}
492
493static void check_friend_connectionstatus(int friendnumber, uint8_t status)
494{
495 if (!friend_connectionstatuschange_isset)
496 return;
497 if (status == NOFRIEND)
498 return;
499 const uint8_t is_connected = friendlist[friendnumber].status == FRIEND_ONLINE;
500 const uint8_t was_connected = status == FRIEND_ONLINE;
501 if (is_connected != was_connected)
502 friend_connectionstatuschange(friendnumber, is_connected);
491} 503}
492 504
493static void set_friend_status(int friendnumber, uint8_t status) 505static void set_friend_status(int friendnumber, uint8_t status)
494{ 506{
495 if (friendlist[friendnumber].status != status && friend_statuschange_isset) 507 check_friend_connectionstatus(friendnumber, status);
496 friend_statuschange(friendnumber, status);
497 friendlist[friendnumber].status = status; 508 friendlist[friendnumber].status = status;
498} 509}
499 510