diff --git a/src/main.c b/src/main.c index 319718b..b28240f 100644 --- a/src/main.c +++ b/src/main.c @@ -402,7 +402,6 @@ static void load_data(Tox *m, char *path) void exit_toxic(Tox *m) { - pthread_join(Winthread.tid, NULL); store_data(m, DATA_FILE); close_all_file_senders(); kill_all_windows(); @@ -500,7 +499,6 @@ int main(int argc, char *argv[]) } prompt = init_windows(m); - prompt_init_statusbar(prompt, m); /* create new thread for ncurses stuff */ if (pthread_mutex_init(&Winthread.lock, NULL) != 0) @@ -550,6 +548,7 @@ int main(int argc, char *argv[]) } sort_friendlist_index(m); + prompt_init_statusbar(prompt, m); while (true) { do_toxic(m, prompt); diff --git a/src/prompt.c b/src/prompt.c index d7f6b1b..2c797c7 100644 --- a/src/prompt.c +++ b/src/prompt.c @@ -36,6 +36,7 @@ uint8_t pending_frnd_requests[MAX_FRIENDS_NUM][TOX_CLIENT_ID_SIZE] = {0}; uint8_t num_frnd_requests = 0; extern ToxWindow *prompt; +struct _Winthread Winthread; /* Array of global command names used for tab completion. */ const uint8_t glob_cmd_list[AC_NUM_GLOB_COMMANDS][MAX_CMDNAME_SIZE] = { @@ -467,21 +468,27 @@ void prompt_init_statusbar(ToxWindow *self, Tox *m) statusbar->is_online = false; uint8_t nick[TOX_MAX_NAME_LENGTH] = {'\0'}; + uint8_t statusmsg[MAX_STR_SIZE]; + + pthread_mutex_lock(&Winthread.lock); tox_get_self_name(m, nick, TOX_MAX_NAME_LENGTH); + tox_get_self_status_message(m, statusmsg, MAX_STR_SIZE); + pthread_mutex_unlock(&Winthread.lock); + snprintf(statusbar->nick, sizeof(statusbar->nick), "%s", nick); /* temporary until statusmessage saving works */ uint8_t ver[strlen(TOXICVER) + 1]; - uint8_t statusmsg[MAX_STR_SIZE]; strcpy(ver, TOXICVER); uint8_t *toxic_ver = strtok(ver, "_"); - if (toxic_ver != NULL) + if (!strcmp("Online", statusmsg)) snprintf(statusmsg, MAX_STR_SIZE, "Toxing on Toxic v.%s", toxic_ver); - else - snprintf(statusmsg, MAX_STR_SIZE, "Toxing on Toxic hacker edition"); - m_set_statusmessage(m, statusmsg, strlen(statusmsg) + 1); + pthread_mutex_lock(&Winthread.lock); + tox_set_status_message(m, statusmsg, strlen(statusmsg) + 1); + pthread_mutex_unlock(&Winthread.lock); + snprintf(statusbar->statusmsg, sizeof(statusbar->statusmsg), "%s", statusmsg); /* Init statusbar subwindow */