diff --git a/auto_tests/conference_av_test.c b/auto_tests/conference_av_test.c index 6d701751..d76e0f24 100644 --- a/auto_tests/conference_av_test.c +++ b/auto_tests/conference_av_test.c @@ -352,8 +352,12 @@ static void run_conference_tests(Tox **toxes, State *state) for (uint32_t i = 0; i < NUM_AV_GROUP_TOX; ++i) { if (restarting[i]) { + ck_assert_msg(!toxav_groupchat_av_enabled(toxes[i], 0), + "#%u restarted but av enabled", state[i].index); ck_assert_msg(toxav_groupchat_enable_av(toxes[i], 0, audio_callback, &state[i]) == 0, "#%u failed to re-enable av", state[i].index); + ck_assert_msg(toxav_groupchat_av_enabled(toxes[i], 0), + "#%u av not enabled even after enabling", state[i].index); } } @@ -393,6 +397,8 @@ static void run_conference_tests(Tox **toxes, State *state) disabled[i] = false; ck_assert_msg(toxav_groupchat_disable_av(toxes[i], 0) != 0, "#%u could disable already disabled av!", state[i].index); + ck_assert_msg(!toxav_groupchat_av_enabled(toxes[i], 0), + "#%u av enabled after disabling", state[i].index); ck_assert_msg(toxav_groupchat_enable_av(toxes[i], 0, audio_callback, &state[i]) == 0, "#%u failed to re-enable av", state[i].index); } diff --git a/toxav/groupav.c b/toxav/groupav.c index f49848de..891b35e6 100644 --- a/toxav/groupav.c +++ b/toxav/groupav.c @@ -506,6 +506,13 @@ int groupchat_disable_av(Group_Chats *g_c, uint32_t groupnumber) return 0; } +/* Return whether A/V is enabled in the groupchat. + */ +bool groupchat_av_enabled(Group_Chats *g_c, uint32_t groupnumber) +{ + return group_get_object(g_c, groupnumber) != nullptr; +} + /* Create a new toxav group. * * return group number on success. diff --git a/toxav/groupav.h b/toxav/groupav.h index 45ff1d60..9d5351a4 100644 --- a/toxav/groupav.h +++ b/toxav/groupav.h @@ -74,4 +74,8 @@ int groupchat_enable_av(const Logger *log, Tox *tox, Group_Chats *g_c, uint32_t */ int groupchat_disable_av(Group_Chats *g_c, uint32_t groupnumber); +/* Return whether A/V is enabled in the groupchat. + */ +bool groupchat_av_enabled(Group_Chats *g_c, uint32_t groupnumber); + #endif // C_TOXCORE_TOXAV_GROUPAV_H diff --git a/toxav/toxav.h b/toxav/toxav.h index 6c1ea093..5d4f3bd3 100644 --- a/toxav/toxav.h +++ b/toxav/toxav.h @@ -803,6 +803,10 @@ int toxav_groupchat_enable_av(Tox *tox, uint32_t groupnumber, */ int toxav_groupchat_disable_av(Tox *tox, uint32_t groupnumber); +/* Return whether A/V is enabled in the groupchat. + */ +bool toxav_groupchat_av_enabled(Tox *tox, uint32_t groupnumber); + #ifdef __cplusplus } #endif diff --git a/toxav/toxav_old.c b/toxav/toxav_old.c index af9980b0..0ae9231d 100644 --- a/toxav/toxav_old.c +++ b/toxav/toxav_old.c @@ -109,3 +109,12 @@ int toxav_groupchat_disable_av(Tox *tox, uint32_t groupnumber) Messenger *m = *(Messenger **)tox; return groupchat_disable_av(m->conferences_object, groupnumber); } + +/* Return whether A/V is enabled in the groupchat. + */ +bool toxav_groupchat_av_enabled(Tox *tox, uint32_t groupnumber) +{ + // TODO(iphydf): Don't rely on toxcore internals. + Messenger *m = *(Messenger **)tox; + return groupchat_av_enabled(m->conferences_object, groupnumber); +}