mirror of
https://github.com/vim/vim.git
synced 2025-09-29 04:34:16 -04:00
patch 8.2.0694: Haiku: channel and terminal do not work
Problem: Haiku: channel and terminal do not work. Solution: Close files when the job has finished. (Ozaki Kiichi, closes #6039)
This commit is contained in:
@@ -1145,10 +1145,11 @@ VimFormView::FrameResized(float new_width, float new_height)
|
||||
VimTextAreaView::VimTextAreaView(BRect frame):
|
||||
BView(frame, "VimTextAreaView", B_FOLLOW_ALL_SIDES,
|
||||
#ifdef FEAT_MBYTE_IME
|
||||
B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE | B_INPUT_METHOD_AWARE),
|
||||
B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE | B_INPUT_METHOD_AWARE
|
||||
#else
|
||||
B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE),
|
||||
B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE
|
||||
#endif
|
||||
),
|
||||
mouseDragEventCount(0)
|
||||
{
|
||||
#ifdef FEAT_MBYTE_IME
|
||||
@@ -3093,7 +3094,7 @@ gui_haiku_process_event(bigtime_t timeout)
|
||||
}
|
||||
}
|
||||
#else
|
||||
add_to_input_buf_csi(string, len);
|
||||
add_to_input_buf_csi(string, len);
|
||||
#endif
|
||||
else
|
||||
add_to_input_buf(string, len);
|
||||
@@ -4437,15 +4438,16 @@ gui_mch_wait_for_chars(
|
||||
int wtime)
|
||||
{
|
||||
int focus;
|
||||
bigtime_t until, timeout;
|
||||
status_t st;
|
||||
bigtime_t until, timeout;
|
||||
status_t st;
|
||||
|
||||
if (wtime >= 0) {
|
||||
if (wtime >= 0)
|
||||
{
|
||||
timeout = wtime * 1000;
|
||||
until = system_time() + timeout;
|
||||
} else {
|
||||
timeout = B_INFINITE_TIMEOUT;
|
||||
}
|
||||
else
|
||||
timeout = B_INFINITE_TIMEOUT;
|
||||
|
||||
focus = gui.in_focus;
|
||||
for (;;)
|
||||
@@ -4461,6 +4463,28 @@ gui_mch_wait_for_chars(
|
||||
}
|
||||
|
||||
gui_mch_flush();
|
||||
|
||||
#ifdef MESSAGE_QUEUE
|
||||
# ifdef FEAT_TIMERS
|
||||
did_add_timer = FALSE;
|
||||
# endif
|
||||
parse_queued_messages();
|
||||
# ifdef FEAT_TIMERS
|
||||
if (did_add_timer)
|
||||
// Need to recompute the waiting time.
|
||||
break;
|
||||
# endif
|
||||
# ifdef FEAT_JOB_CHANNEL
|
||||
if (has_any_channel())
|
||||
{
|
||||
if (wtime < 0 || timeout > 20000)
|
||||
timeout = 20000;
|
||||
}
|
||||
else if (wtime < 0)
|
||||
timeout = B_INFINITE_TIMEOUT;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Don't use gui_mch_update() because then we will spin-lock until a
|
||||
* char arrives, instead we use gui_haiku_process_event() to hang until
|
||||
@@ -4478,7 +4502,8 @@ gui_mch_wait_for_chars(
|
||||
* Calculate how much longer we're willing to wait for the
|
||||
* next event.
|
||||
*/
|
||||
if (wtime >= 0) {
|
||||
if (wtime >= 0)
|
||||
{
|
||||
timeout = until - system_time();
|
||||
if (timeout < 0)
|
||||
break;
|
||||
|
Reference in New Issue
Block a user