diff options
author | Maxim Biro <nurupo.contributions@gmail.com> | 2013-08-11 14:57:47 -0400 |
---|---|---|
committer | Maxim Biro <nurupo.contributions@gmail.com> | 2013-08-11 14:57:47 -0400 |
commit | eaa7d3e0a0a38e4bac6c8879567cbb064f7d48c3 (patch) | |
tree | 1b6b6e1eec5d4773af5c62d2576676919978097d /core/Messenger.c | |
parent | 440871bda1ee0eb7ee7c6abd31c62340242a5fd0 (diff) |
Replaced friendstatus with connectionstatus
Diffstat (limited to 'core/Messenger.c')
-rw-r--r-- | core/Messenger.c | 27 |
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 | ||
485 | static void (*friend_statuschange)(int, uint8_t); | 485 | static void (*friend_connectionstatuschange)(int, uint8_t); |
486 | static uint8_t friend_statuschange_isset = 0; | 486 | static uint8_t friend_connectionstatuschange_isset = 0; |
487 | void m_callback_friendstatus(void (*function)(int, uint8_t)) | 487 | void 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 | |||
493 | static 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 | ||
493 | static void set_friend_status(int friendnumber, uint8_t status) | 505 | static 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 | ||