diff --git a/7.3.520 b/7.3.520 new file mode 100644 index 0000000..9e2da8d --- /dev/null +++ b/7.3.520 @@ -0,0 +1,140 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.520 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.520 +Problem: Gvim starts up slow on Unbuntu 12.04. +Solution: Move the call to gui_mch_init_check() to after fork(). (Yasuhiro + Matsumoto) Do check $DISPLAY being set. +Files: src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro + + +*** ../vim-7.3.519/src/gui.c 2011-10-20 21:27:57.000000000 +0200 +--- src/gui.c 2012-05-18 16:53:14.000000000 +0200 +*************** +*** 270,275 **** +--- 270,281 ---- + } + /* Child */ + ++ #ifdef FEAT_GUI_GTK ++ /* Call gtk_init_check() here after fork(). See gui_init_check(). */ ++ if (gui_mch_init_check() != OK) ++ exit(1); ++ #endif ++ + # if defined(HAVE_SETSID) || defined(HAVE_SETPGID) + /* + * Change our process group. On some systems/shells a CTRL-C in the +*************** +*** 430,436 **** +--- 436,452 ---- + #ifdef ALWAYS_USE_GUI + result = OK; + #else ++ # ifdef FEAT_GUI_GTK ++ /* ++ * Note: Don't call gtk_init_check() before fork, it will be called after ++ * the fork. When calling it before fork, it make vim hang for a while. ++ * See gui_do_fork(). ++ * Use a simpler check if the GUI window can probably be opened. ++ */ ++ result = gui.dofork ? gui_mch_early_init_check() : gui_mch_init_check(); ++ # else + result = gui_mch_init_check(); ++ # endif + #endif + return result; + } +*** ../vim-7.3.519/src/gui_gtk_x11.c 2011-10-26 11:36:21.000000000 +0200 +--- src/gui_gtk_x11.c 2012-05-18 17:00:45.000000000 +0200 +*************** +*** 1414,1420 **** + } + + /* +! * Check if the GUI can be started. Called before gvimrc is sourced. + * Return OK or FAIL. + */ + int +--- 1414,1442 ---- + } + + /* +! * Check if the GUI can be started. Called before gvimrc is sourced and +! * before fork(). +! * Return OK or FAIL. +! */ +! int +! gui_mch_early_init_check(void) +! { +! char_u *p; +! +! /* Guess that when $DISPLAY isn't set the GUI can't start. */ +! p = mch_getenv((char_u *)"DISPLAY"); +! if (p == NULL || *p == NUL) +! { +! gui.dying = TRUE; +! EMSG(_((char *)e_opendisp)); +! return FAIL; +! } +! return OK; +! } +! +! /* +! * Check if the GUI can be started. Called before gvimrc is sourced but after +! * fork(). + * Return OK or FAIL. + */ + int +*************** +*** 3050,3056 **** + + for (i = 0; i < (int)N_SELECTION_TARGETS; ++i) + { +! /* OpenOffice tries to use TARGET_HTML and fails when it doesn't + * return something, instead of trying another target. Therefore only + * offer TARGET_HTML when it works. */ + if (!clip_html && selection_targets[i].info == TARGET_HTML) +--- 3072,3078 ---- + + for (i = 0; i < (int)N_SELECTION_TARGETS; ++i) + { +! /* OpenOffice tries to use TARGET_HTML and fails when we don't + * return something, instead of trying another target. Therefore only + * offer TARGET_HTML when it works. */ + if (!clip_html && selection_targets[i].info == TARGET_HTML) +*** ../vim-7.3.519/src/proto/gui_gtk_x11.pro 2011-08-10 17:44:41.000000000 +0200 +--- src/proto/gui_gtk_x11.pro 2012-05-18 16:54:28.000000000 +0200 +*************** +*** 4,9 **** +--- 4,10 ---- + void gui_mch_set_blinking __ARGS((long waittime, long on, long off)); + void gui_mch_stop_blink __ARGS((void)); + void gui_mch_start_blink __ARGS((void)); ++ int gui_mch_early_init_check __ARGS((void)); + int gui_mch_init_check __ARGS((void)); + void gui_mch_show_tabline __ARGS((int showit)); + int gui_mch_showing_tabline __ARGS((void)); +*** ../vim-7.3.519/src/version.c 2012-05-18 16:35:17.000000000 +0200 +--- src/version.c 2012-05-18 16:45:30.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 520, + /**/ + +-- +Bad programs can be written in any language. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org ///