diff options
-rw-r--r-- | toxcore/group.c | 27 | ||||
-rw-r--r-- | toxcore/group.h | 9 | ||||
-rw-r--r-- | toxcore/tox.c | 2 |
3 files changed, 29 insertions, 9 deletions
diff --git a/toxcore/group.c b/toxcore/group.c index d94349f4..96f5ba2f 100644 --- a/toxcore/group.c +++ b/toxcore/group.c | |||
@@ -398,8 +398,10 @@ static int addpeer(Group_Chats *g_c, int groupnumber, const uint8_t *real_pk, co | |||
398 | ++g->numpeers; | 398 | ++g->numpeers; |
399 | 399 | ||
400 | add_to_closest(g_c, groupnumber, real_pk, temp_pk); | 400 | add_to_closest(g_c, groupnumber, real_pk, temp_pk); |
401 | //if (g->peer_namelistchange != NULL) | 401 | |
402 | // (*g->peer_namelistchange)(g, g->numpeers - 1, CHAT_CHANGE_PEER_ADD, g->group_namelistchange_userdata); | 402 | if (g_c->peer_namelistchange) |
403 | g_c->peer_namelistchange(g_c->m, groupnumber, g->numpeers - 1, CHAT_CHANGE_PEER_ADD, | ||
404 | g_c->group_namelistchange_userdata); | ||
403 | 405 | ||
404 | return (g->numpeers - 1); | 406 | return (g->numpeers - 1); |
405 | } | 407 | } |
@@ -445,11 +447,10 @@ static int delpeer(Group_Chats *g_c, int groupnumber, int peer_index) | |||
445 | return -1; | 447 | return -1; |
446 | 448 | ||
447 | g->group = temp; | 449 | g->group = temp; |
448 | /* | 450 | |
449 | if (g->peer_namelistchange != NULL) { | 451 | if (g_c->peer_namelistchange) |
450 | (*g->peer_namelistchange)(g, peer_index, CHAT_CHANGE_PEER_DEL, g->group_namelistchange_userdata); | 452 | g_c->peer_namelistchange(g_c->m, groupnumber, peer_index, CHAT_CHANGE_PEER_DEL, g_c->group_namelistchange_userdata); |
451 | } | 453 | |
452 | */ | ||
453 | return 0; | 454 | return 0; |
454 | } | 455 | } |
455 | 456 | ||
@@ -781,6 +782,18 @@ void g_callback_group_message(Group_Chats *g_c, void (*function)(Messenger *m, i | |||
781 | g_c->message_callback_userdata = userdata; | 782 | g_c->message_callback_userdata = userdata; |
782 | } | 783 | } |
783 | 784 | ||
785 | /* Set callback function for peer name list changes. | ||
786 | * | ||
787 | * It gets called every time the name list changes(new peer/name, deleted peer) | ||
788 | * Function(Group_Chats *g_c, int groupnumber, int peernumber, TOX_CHAT_CHANGE change, void *userdata) | ||
789 | */ | ||
790 | void g_callback_group_namelistchange(Group_Chats *g_c, void (*function)(Messenger *m, int, int, uint8_t, void *), | ||
791 | void *userdata) | ||
792 | { | ||
793 | g_c->peer_namelistchange = function; | ||
794 | g_c->group_namelistchange_userdata = userdata; | ||
795 | } | ||
796 | |||
784 | static unsigned int send_message_group(const Group_Chats *g_c, int groupnumber, uint8_t message_id, const uint8_t *data, | 797 | static unsigned int send_message_group(const Group_Chats *g_c, int groupnumber, uint8_t message_id, const uint8_t *data, |
785 | uint16_t len); | 798 | uint16_t len); |
786 | 799 | ||
diff --git a/toxcore/group.h b/toxcore/group.h index c91edd7b..d3a330b2 100644 --- a/toxcore/group.h +++ b/toxcore/group.h | |||
@@ -103,6 +103,8 @@ typedef struct { | |||
103 | void *invite_callback_userdata; | 103 | void *invite_callback_userdata; |
104 | void (*message_callback)(Messenger *m, int, int, const uint8_t *, uint16_t, void *); | 104 | void (*message_callback)(Messenger *m, int, int, const uint8_t *, uint16_t, void *); |
105 | void *message_callback_userdata; | 105 | void *message_callback_userdata; |
106 | void (*peer_namelistchange)(Messenger *m, int, int, uint8_t, void *); | ||
107 | void *group_namelistchange_userdata; | ||
106 | } Group_Chats; | 108 | } Group_Chats; |
107 | 109 | ||
108 | /* Set the callback for group invites. | 110 | /* Set the callback for group invites. |
@@ -131,8 +133,13 @@ void g_callback_group_action(Group_Chats *g_c, void (*function)(Messenger *m, in | |||
131 | /* Set callback function for peer name list changes. | 133 | /* Set callback function for peer name list changes. |
132 | * | 134 | * |
133 | * It gets called every time the name list changes(new peer/name, deleted peer) | 135 | * It gets called every time the name list changes(new peer/name, deleted peer) |
134 | * Function(Group_Chats *g_c, int groupnumber, void *userdata) | 136 | * Function(Group_Chats *g_c, int groupnumber, int peernumber, TOX_CHAT_CHANGE change, void *userdata) |
135 | */ | 137 | */ |
138 | enum { | ||
139 | CHAT_CHANGE_PEER_ADD, | ||
140 | CHAT_CHANGE_PEER_DEL, | ||
141 | CHAT_CHANGE_PEER_NAME, | ||
142 | }; | ||
136 | void g_callback_group_namelistchange(Group_Chats *g_c, void (*function)(Messenger *m, int, int, uint8_t, void *), | 143 | void g_callback_group_namelistchange(Group_Chats *g_c, void (*function)(Messenger *m, int, int, uint8_t, void *), |
137 | void *userdata); | 144 | void *userdata); |
138 | 145 | ||
diff --git a/toxcore/tox.c b/toxcore/tox.c index 35587c2b..999d81d6 100644 --- a/toxcore/tox.c +++ b/toxcore/tox.c | |||
@@ -586,7 +586,7 @@ void tox_callback_group_action(Tox *tox, void (*function)(Messenger *tox, int, i | |||
586 | void tox_callback_group_namelist_change(Tox *tox, void (*function)(Tox *tox, int, int, uint8_t, void *), void *userdata) | 586 | void tox_callback_group_namelist_change(Tox *tox, void (*function)(Tox *tox, int, int, uint8_t, void *), void *userdata) |
587 | { | 587 | { |
588 | Messenger *m = tox; | 588 | Messenger *m = tox; |
589 | //m_callback_group_namelistchange(m, function, userdata); | 589 | g_callback_group_namelistchange(m->group_chat_object, function, userdata); |
590 | } | 590 | } |
591 | 591 | ||
592 | /* Creates a new groupchat and puts it in the chats array. | 592 | /* Creates a new groupchat and puts it in the chats array. |