diff options
author | Timo Sirainen <cras@irssi.org> | 2001-10-21 13:22:28 +0000 |
---|---|---|
committer | cras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564> | 2001-10-21 13:22:28 +0000 |
commit | ae1b5b0d50b58a4230ce45a09c0ee98231d28f0e (patch) | |
tree | c37b647234d913f58dbcb0ede8b4655015db007d | |
parent | 1b64509ae2bb354e2003f9263e85b8018b322404 (diff) | |
download | irssi-ae1b5b0d50b58a4230ce45a09c0ee98231d28f0e.zip |
added irssi_init_finished variable to core.h which is TRUE after "irssi init
finished" signal is sent.
Perl scripts aren't now autoloaded until irssi_init_finished is TRUE (fixes
the crash at startup).
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1879 dbcabf3a-b0e7-0310-adc4-f8d773084564
-rw-r--r-- | src/core/core.c | 8 | ||||
-rw-r--r-- | src/core/core.h | 1 | ||||
-rw-r--r-- | src/perl/perl-core.c | 14 |
3 files changed, 22 insertions, 1 deletions
diff --git a/src/core/core.c b/src/core/core.c index 62864388..ef2af512 100644 --- a/src/core/core.c +++ b/src/core/core.c @@ -57,6 +57,7 @@ void log_away_init(void); void log_away_deinit(void); int irssi_gui; +int irssi_init_finished; static char *irssi_dir, *irssi_config_file; static GSList *dialog_type_queue, *dialog_text_queue; @@ -188,6 +189,11 @@ void core_init_paths(int argc, char *argv[]) irssi_config_file = g_strdup_printf("%s/config", irssi_dir); } +static void sig_irssi_init_finished(void) +{ + irssi_init_finished = TRUE; +} + void core_init(int argc, char *argv[]) { dialog_type_queue = NULL; @@ -233,6 +239,7 @@ void core_init(int argc, char *argv[]) #endif read_settings(); signal_add("setup changed", (SIGNAL_FUNC) read_settings); + signal_add("irssi init finished", (SIGNAL_FUNC) sig_irssi_init_finished); settings_check(); @@ -242,6 +249,7 @@ void core_init(int argc, char *argv[]) void core_deinit(void) { signal_remove("setup changed", (SIGNAL_FUNC) read_settings); + signal_remove("irssi init finished", (SIGNAL_FUNC) sig_irssi_init_finished); chat_commands_deinit(); diff --git a/src/core/core.h b/src/core/core.h index eda825ab..6b7ec621 100644 --- a/src/core/core.h +++ b/src/core/core.h @@ -10,6 +10,7 @@ #define IRSSI_GUI_KDE 5 extern int irssi_gui; +extern int irssi_init_finished; /* TRUE after "irssi init finished" signal is sent */ void core_init_paths(int argc, char *argv[]); diff --git a/src/perl/perl-core.c b/src/perl/perl-core.c index 1a970604..432a4283 100644 --- a/src/perl/perl-core.c +++ b/src/perl/perl-core.c @@ -21,6 +21,7 @@ #define NEED_PERL_H #include "module.h" #include "modules.h" +#include "core.h" #include "signals.h" #include "misc.h" @@ -386,6 +387,13 @@ static void sig_script_error(PERL_SCRIPT_REC *script, const char *error) } } +static void sig_autorun() +{ + signal_remove("irssi init finished", (SIGNAL_FUNC) sig_autorun); + + perl_scripts_autorun(); +} + void perl_core_init(void) { print_script_errors = 1; @@ -395,7 +403,11 @@ void perl_core_init(void) signal_add_last("script error", (SIGNAL_FUNC) sig_script_error); perl_scripts_init(); - perl_scripts_autorun(); + + if (irssi_init_finished) + perl_scripts_autorun(); + else + signal_add("irssi init finished", (SIGNAL_FUNC) sig_autorun); module_register("perl", "core"); } |