Revision: 4921 http://geany.svn.sourceforge.net/geany/?rev=4921&view=rev Author: eht16 Date: 2010-05-16 17:43:24 +0000 (Sun, 16 May 2010)
Log Message: ----------- Small improvements to speed up quit process with many open documents. Avoid calling gtk_notebook_remove_page() on exit as it takes a lot of time.
Modified Paths: -------------- trunk/ChangeLog trunk/src/document.c trunk/src/editor.c trunk/src/project.c
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2010-05-16 17:43:10 UTC (rev 4920) +++ trunk/ChangeLog 2010-05-16 17:43:24 UTC (rev 4921) @@ -4,8 +4,11 @@ win32.h can be included unconditionally. * src/sidebar.c: Fix project base_path detection if the path has a trailing slash. + * src/document.c, src/editor.c, src/project.c: + Small improvements to speed up quit process with many open documents. + Avoid calling gtk_notebook_remove_page() on exit as it takes + a lot of time.
- 2010-05-15 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
* src/win32.c:
Modified: trunk/src/document.c =================================================================== --- trunk/src/document.c 2010-05-16 17:43:10 UTC (rev 4920) +++ trunk/src/document.c 2010-05-16 17:43:24 UTC (rev 4921) @@ -640,10 +640,13 @@
doc->is_valid = FALSE;
- notebook_remove_page(page_num); - sidebar_remove_document(doc); - navqueue_remove_file(doc->file_name); - msgwin_status_add(_("File %s closed."), DOC_FILENAME(doc)); + if (! main_status.quitting) + { + notebook_remove_page(page_num); + sidebar_remove_document(doc); + navqueue_remove_file(doc->file_name); + msgwin_status_add(_("File %s closed."), DOC_FILENAME(doc)); + } g_free(doc->encoding); g_free(doc->priv->saved_encoding.encoding); g_free(doc->file_name); @@ -2830,7 +2833,7 @@ for (p = 0; p < page_count; p++) { doc = document_get_from_page(p); - if (doc->changed) + if (DOC_VALID(doc) && doc->changed) { if (! dialogs_show_unsaved_file(doc)) return FALSE; @@ -2863,9 +2866,9 @@ } main_status.closing_all = TRUE;
- while (gtk_notebook_get_n_pages(GTK_NOTEBOOK(main_widgets.notebook)) > 0) + foreach_document(i) { - document_remove_page(0); + document_close(documents[i]); }
main_status.closing_all = FALSE;
Modified: trunk/src/editor.c =================================================================== --- trunk/src/editor.c 2010-05-16 17:43:10 UTC (rev 4920) +++ trunk/src/editor.c 2010-05-16 17:43:24 UTC (rev 4921) @@ -65,6 +65,7 @@ #include "keybindings.h" #include "project.h" #include "projectprivate.h" +#include "main.h"
/* Note: use sciwrappers.h instead where possible. @@ -4972,6 +4973,9 @@
g_return_if_fail(editor != NULL);
+ if (main_status.quitting) + return; + sci = editor->sci;
sci_set_mark_long_lines(sci, editor_get_long_line_type(),
Modified: trunk/src/project.c =================================================================== --- trunk/src/project.c 2010-05-16 17:43:10 UTC (rev 4920) +++ trunk/src/project.c 2010-05-16 17:43:24 UTC (rev 4921) @@ -309,6 +309,9 @@ /* Called when creating, opening, closing and updating projects. */ static void update_ui(void) { + if (main_status.quitting) + return; + ui_set_window_title(NULL); build_menu_update(NULL); sidebar_openfiles_update_all();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.