On 10/23/09, Peter Clifton <pc...@cam.ac.uk> wrote: > On Fri, 2009-10-23 at 14:51 +0000, Ineiev wrote: >> Please consider removing Settings.init_done. > > It wasn't added (or needed to be altered) in the patch.. so I don't > think it ought to be removed - at least not in the same patch. > > A quick grep of the source-code suggests that it is related to the issue > I pointed to in my previous reply to KMK, that the GUI isn't "up" yet, > so can't be sent certain commands. > > Since it is used in only one place (rather dubiously), and that place > explicitly refers to gtk_main_quit(), I suspect that it is old, possibly > broken code. Perhaps we need a gui->quit() or gui->exit() method.
And this is my point of view on the patch: diff --git a/src/global.h b/src/global.h index 4cf489a..7d0386c 100644 --- a/src/global.h +++ b/src/global.h @@ -663,8 +663,6 @@ typedef struct /* some resources... */ /* connections is done */ AutoPlace; /* flag which says we should force placement of the windows on startup */ - int HistorySize, /* FIXME? Used in hid/xaw code only. */ - init_done; } SettingType, *SettingTypePtr; diff --git a/src/hid/common/hidnogui.c b/src/hid/common/hidnogui.c index 4d6baa0..68c5eac 100644 --- a/src/hid/common/hidnogui.c +++ b/src/hid/common/hidnogui.c @@ -52,19 +52,16 @@ nogui_parse_arguments (int *argc, char ***argv) static void nogui_invalidate_wh (int x, int y, int width, int height, int last) { - CRASH; } static void nogui_invalidate_lr (int l, int r, int t, int b, int last) { - CRASH; } static void nogui_invalidate_all (void) { - CRASH; } static int diff --git a/src/main.c b/src/main.c index a0b38f3..00c2340 100644 --- a/src/main.c +++ b/src/main.c @@ -829,6 +829,21 @@ char *program_basename = 0; char *program_directory = 0; #include "dolists.h" +static void +run_initial_scripts (void) +{ + if (Settings.ScriptFilename) + { + Message (_("Executing startup script file %s\n"), + Settings.ScriptFilename); + hid_actionl ("ExecuteFile", Settings.ScriptFilename, NULL); + } + if (Settings.ActionString) + { + Message (_("Executing startup action %s\n"), Settings.ActionString); + hid_parse_actions (Settings.ActionString, 0); + } +} int main (int argc, char *argv[]) @@ -968,6 +983,7 @@ main (int argc, char *argv[]) if (gui->printer || gui->exporter) { + run_initial_scripts (); gui->do_export (0); exit (0); } @@ -991,52 +1007,30 @@ main (int argc, char *argv[]) #ifdef HAVE_LIBSTROKE stroke_init (); #endif - /* - * Set this flag to zero. Then if we have a startup - * action which includes Quit(), the flag will be set - * to -1 and we can avoid ever calling gtk_main(); - */ - Settings.init_done = 0; - if (Settings.ScriptFilename) - { - Message (_("Executing startup script file %s\n"), - Settings.ScriptFilename); - hid_actionl ("ExecuteFile", Settings.ScriptFilename, NULL); - } - if (Settings.ActionString) - { - Message (_("Executing startup action %s\n"), Settings.ActionString); - hid_parse_actions (Settings.ActionString, 0); - } - - if (Settings.init_done == 0) - { - Settings.init_done = 1; #if HAVE_DBUS - pcb_dbus_setup(); + pcb_dbus_setup(); #endif - EnableAutosave (); + EnableAutosave (); #ifdef DEBUG - printf ("Settings.LibraryCommandDir = \"%s\"\n", - Settings.LibraryCommandDir); - printf ("Settings.FontPath = \"%s\"\n", - Settings.FontPath); - printf ("Settings.ElementPath = \"%s\"\n", - Settings.ElementPath); - printf ("Settings.LibraryPath = \"%s\"\n", - Settings.LibraryPath); - printf ("Settings.LibraryTree = \"%s\"\n", - Settings.LibraryTree); + printf ("Settings.LibraryCommandDir = \"%s\"\n", + Settings.LibraryCommandDir); + printf ("Settings.FontPath = \"%s\"\n", + Settings.FontPath); + printf ("Settings.ElementPath = \"%s\"\n", + Settings.ElementPath); + printf ("Settings.LibraryPath = \"%s\"\n", + Settings.LibraryPath); + printf ("Settings.LibraryTree = \"%s\"\n", + Settings.LibraryTree); #endif - - gui->do_export (0); + run_initial_scripts (); + gui->do_export (0); #if HAVE_DBUS - pcb_dbus_finish(); + pcb_dbus_finish(); #endif - } return (0); } diff --git a/src/misc.c b/src/misc.c index 693da81..92d7e59 100644 --- a/src/misc.c +++ b/src/misc.c @@ -879,16 +879,7 @@ QuitApplication (void) else DisableEmergencySave (); - /* - * if Settings.init_done is not > 0 then we haven't even called - * gtk_main() yet so gtk_main_quit() will give an error. In - * this case just set the flag to -1 and we will exit instead - * of calling gtk_main() - */ - if (Settings.init_done > 0) - exit (0); - else - Settings.init_done = -1; + exit (0); } /* --------------------------------------------------------------------------- It eradicates Settings.init_done variable, because it is IMO a very tightly related issue, if not the same; as it was, it most probably didn't work as intended e.g. because the program just ignored quit command and processed the rest commands in the script; after the suggested patch, PCB just invokes no startup scripts until the end of initialisation. The reorderings in main.c should harm no GUI because run_initial_scripts is enclosed in the if (gui->printer || gui->exporter) statement. As for hid/common/hidnogui.c modifications, I must confess with great shame that I don't undestand why hid_invalidate_$(anything) might have reasons to abort the program when there is no GUI. _______________________________________________ geda-user mailing list geda-user@moria.seul.org http://www.seul.org/cgi-bin/mailman/listinfo/geda-user