[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gEDA-dev: [PATCH] Make recent files code and dialog positions codeuse gschem_atexit



---
 gschem/include/prototype.h |    2 +-
 gschem/src/gschem.c        |    1 +
 gschem/src/gschem_dialog.c |    6 ++++--
 gschem/src/x_menus.c       |    4 +++-
 gschem/src/x_window.c      |    1 -
 5 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/gschem/include/prototype.h b/gschem/include/prototype.h
index f79c4ef..efdbe77 100644
--- a/gschem/include/prototype.h
+++ b/gschem/include/prototype.h
@@ -834,7 +834,7 @@ void x_menus_sensitivity(TOPLEVEL *w_current, const char *buf, int flag);
 void x_menus_popup_sensitivity(TOPLEVEL *w_current, const char *buf, int flag);
 void x_menu_attach_recent_files_submenu(TOPLEVEL *w_current);
 void recent_files_load();
-void recent_files_save();
+void recent_files_save(gpointer user_data);
 void recent_files_add(const char *filename);
 #if !GLIB_CHECK_VERSION(2,8,0)
 gboolean g_file_set_contents(const gchar *filename, const gchar *contents,
diff --git a/gschem/src/gschem.c b/gschem/src/gschem.c
index c9c8dbb..a97c2f9 100644
--- a/gschem/src/gschem.c
+++ b/gschem/src/gschem.c
@@ -244,6 +244,7 @@ void main_prog(void *closure, int argc, char *argv[])
   /* Load recent files list. This must be done
    * before calling x_window_setup(). */
   recent_files_load();
+  gschem_atexit(recent_files_save, NULL);
 
   /* At end, complete set up of window. */
   colormap = gdk_colormap_get_system ();
diff --git a/gschem/src/gschem_dialog.c b/gschem/src/gschem_dialog.c
index 572795d..deeb603 100644
--- a/gschem/src/gschem_dialog.c
+++ b/gschem/src/gschem_dialog.c
@@ -51,8 +51,10 @@ static GKeyFile *dialog_geometry = NULL;
  *
  *  \par Function Description
  *  This is called at program exit to save all window geometry data into a file
+ *
+ *  \param [in] user_data unused
  */
-static void save_geometry_to_file()
+static void save_geometry_to_file(gpointer user_data)
 {
   gchar *data, *file;
 
@@ -119,7 +121,7 @@ static void restore_geometry (GschemDialog *dialog)
     dialog_geometry = g_key_file_new();
 
     /* Remember to save data on program exit */
-    atexit(save_geometry_to_file);
+    gschem_atexit(save_geometry_to_file, NULL);
 
     if (!g_file_test (file, G_FILE_TEST_EXISTS)) {
       gchar *dir = g_build_filename (g_get_home_dir (), ".gEDA", NULL);
diff --git a/gschem/src/x_menus.c b/gschem/src/x_menus.c
index 2302cf5..7d63a21 100644
--- a/gschem/src/x_menus.c
+++ b/gschem/src/x_menus.c
@@ -543,8 +543,10 @@ static void recent_files_create_empty()
 }
 
 /*! \brief Save the list of recent files to RECENT_FILES_STORE.
+ *
+ *  \param [in] user_data unused
  */
-void recent_files_save()
+void recent_files_save(gpointer user_data)
 {
    gchar **files = NULL;
    int num = 0;
diff --git a/gschem/src/x_window.c b/gschem/src/x_window.c
index 2d22603..e388665 100644
--- a/gschem/src/x_window.c
+++ b/gschem/src/x_window.c
@@ -829,7 +829,6 @@ void x_window_close(TOPLEVEL *w_current)
 
   /* just closed last window, so quit */
   if (last_window) {
-    recent_files_save();
     gschem_quit();
   }
   
-- 
1.5.2.1



_______________________________________________
geda-dev mailing list
geda-dev@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-dev