messenger-gtk

Gtk+3 graphical user interfaces for GNUnet Messenger
Log | Files | Refs | Submodules | README | LICENSE

commit 098b9d48733cf2374e4c1c6f4d9ec733edfe59d5
parent d533c72c5729ae7715b464f88e169b7993e77eb7
Author: TheJackiMonster <thejackimonster@gmail.com>
Date:   Fri, 11 Feb 2022 00:27:44 +0100

Implemented workaround to delays with the scheduler

Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>

Diffstat:
Msrc/chat/messenger.c | 21+++++++++++++++++++++
Msrc/chat/messenger.h | 1+
2 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/src/chat/messenger.c b/src/chat/messenger.c @@ -42,6 +42,9 @@ _chat_messenger_quit(void *cls) { MESSENGER_Application *app = (MESSENGER_Application*) cls; + if (app->chat.messenger.idle) + GNUNET_SCHEDULER_cancel(app->chat.messenger.idle); + MESSENGER_ApplicationSignal signal; int received = read(app->chat.pipe[0], &signal, sizeof(signal)); @@ -60,6 +63,19 @@ _chat_messenger_quit(void *cls) GNUNET_SCHEDULER_shutdown(); } +static void +_chat_messenger_idle(void *cls) +{ + MESSENGER_Application *app = (MESSENGER_Application*) cls; + + app->chat.messenger.idle = GNUNET_SCHEDULER_add_delayed_with_priority( + GNUNET_TIME_relative_get_second_(), + GNUNET_SCHEDULER_PRIORITY_IDLE, + &_chat_messenger_idle, + app + ); +} + static int _chat_messenger_message(void *cls, struct GNUNET_CHAT_Context *context, @@ -186,5 +202,10 @@ chat_messenger_run(void *cls, app ); + app->chat.messenger.idle = GNUNET_SCHEDULER_add_now( + &_chat_messenger_idle, + app + ); + GNUNET_NETWORK_fdset_destroy(fd); } diff --git a/src/chat/messenger.h b/src/chat/messenger.h @@ -36,6 +36,7 @@ typedef struct CHAT_MESSENGER_Handle { struct GNUNET_CHAT_Handle *handle; struct GNUNET_SCHEDULER_Task *quit; + struct GNUNET_SCHEDULER_Task *idle; } CHAT_MESSENGER_Handle; void