1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-05-28 23:34:49 -05:00

Remove the post_main() mechanism.

This existed in order to avoid the various confusions that could
happen if a toplevel callback ran in the context of a subsidiary
instance of gtk_main(). Now there aren't any subsidiary gtk_main
instances any more, this mechanism is no longer needed, and I can
throw it out. It was horrible anyway.
This commit is contained in:
Simon Tatham 2017-11-26 20:03:12 +00:00
parent ef6e38d8eb
commit 71b00097dd
2 changed files with 1 additions and 33 deletions

View File

@ -203,40 +203,9 @@ static int idle_fn_scheduled;
static void notify_toplevel_callback(void *);
/*
* Replacement code for the gtk_quit_add() function, which GTK2 - in
* their unbounded wisdom - deprecated without providing any usable
* replacement, and which we were using to ensure that our idle
* function for toplevel callbacks was only run from the outermost
* gtk_main().
*
* We must make sure that all our subsidiary calls to gtk_main() are
* followed by a call to post_main(), so that the idle function can be
* re-established when we end up back at the top level.
*/
void post_main(void)
{
if (gtk_main_level() == 1)
notify_toplevel_callback(NULL);
}
static gint idle_toplevel_callback_func(gpointer data)
{
if (gtk_main_level() > 1) {
/*
* We don't run callbacks if we're in the middle of a
* subsidiary gtk_main. So unschedule this idle function; it
* will be rescheduled by post_main() when we come back up a
* level, which is the earliest we might actually do
* something.
*/
if (idle_fn_scheduled) { /* double-check, just in case */
g_source_remove(toplevel_callback_idle_id);
idle_fn_scheduled = FALSE;
}
} else {
run_toplevel_callbacks();
}
run_toplevel_callbacks();
/*
* If we've emptied our toplevel callback queue, unschedule

View File

@ -161,7 +161,6 @@ enum DialogSlot {
void register_dialog(void *frontend, enum DialogSlot slot, GtkWidget *dialog);
void unregister_dialog(void *frontend, enum DialogSlot slot);
#endif
void post_main(void); /* called after any subsidiary gtk_main() */
/* Things pterm.c needs from gtkdlg.c */
#ifdef MAY_REFER_TO_GTK_IN_HEADERS