Skip to content

Commit

Permalink
updated for version 7.3.520
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
brammool committed May 18, 2012
1 parent 2570d8c commit 8b9f36d
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 2 deletions.
16 changes: 16 additions & 0 deletions src/gui.c
Expand Up @@ -270,6 +270,12 @@ gui_do_fork()
}
/* 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
Expand Down Expand Up @@ -430,7 +436,17 @@ gui_init_check()
#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;
}
Expand Down
26 changes: 24 additions & 2 deletions src/gui_gtk_x11.c
Expand Up @@ -1414,7 +1414,29 @@ selection_get_cb(GtkWidget *widget UNUSED,
}

/*
* Check if the GUI can be started. Called before gvimrc is sourced.
* 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
Expand Down Expand Up @@ -3050,7 +3072,7 @@ gui_gtk_set_selection_targets(void)

for (i = 0; i < (int)N_SELECTION_TARGETS; ++i)
{
/* OpenOffice tries to use TARGET_HTML and fails when it doesn't
/* 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)
Expand Down
1 change: 1 addition & 0 deletions src/proto/gui_gtk_x11.pro
Expand Up @@ -4,6 +4,7 @@ void gui_mch_free_all __ARGS((void));
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));
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -714,6 +714,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
520,
/**/
519,
/**/
Expand Down

0 comments on commit 8b9f36d

Please sign in to comment.