tty: kernel should send SIGWINCH, not terminal
This commit is contained in:
parent
4fb42341dd
commit
0995d14106
@ -64,7 +64,7 @@ char * selection_text = NULL;
|
|||||||
|
|
||||||
term_state_t * ansi_state = NULL;
|
term_state_t * ansi_state = NULL;
|
||||||
|
|
||||||
void reinit(); /* Defined way further down */
|
void reinit(void); /* Defined way further down */
|
||||||
void term_redraw_cursor();
|
void term_redraw_cursor();
|
||||||
|
|
||||||
void term_clear();
|
void term_clear();
|
||||||
@ -1046,7 +1046,7 @@ term_callbacks_t term_callbacks = {
|
|||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
void reinit(int send_sig) {
|
void reinit(void) {
|
||||||
if (term_buffer) {
|
if (term_buffer) {
|
||||||
/* Do nothing */
|
/* Do nothing */
|
||||||
} else {
|
} else {
|
||||||
@ -1205,7 +1205,7 @@ int main(int argc, char ** argv) {
|
|||||||
w.ws_ypixel = 0;
|
w.ws_ypixel = 0;
|
||||||
ioctl(fd_master, TIOCSWINSZ, &w);
|
ioctl(fd_master, TIOCSWINSZ, &w);
|
||||||
|
|
||||||
reinit(0);
|
reinit();
|
||||||
|
|
||||||
fflush(stdin);
|
fflush(stdin);
|
||||||
|
|
||||||
|
@ -155,7 +155,7 @@ static struct MenuList * menu_right_click = NULL;
|
|||||||
|
|
||||||
static void render_decors(void);
|
static void render_decors(void);
|
||||||
static void term_clear();
|
static void term_clear();
|
||||||
static void reinit();
|
static void reinit(void);
|
||||||
static void term_redraw_cursor();
|
static void term_redraw_cursor();
|
||||||
|
|
||||||
static int decor_left_width = 0;
|
static int decor_left_width = 0;
|
||||||
@ -1714,7 +1714,7 @@ static void key_event(int ret, key_event_t * event) {
|
|||||||
_no_frame = !_no_frame;
|
_no_frame = !_no_frame;
|
||||||
window_width = window->width - decor_width * (!_no_frame);
|
window_width = window->width - decor_width * (!_no_frame);
|
||||||
window_height = window->height - (decor_height + menu_bar_height) * (!_no_frame);
|
window_height = window->height - (decor_height + menu_bar_height) * (!_no_frame);
|
||||||
reinit(1);
|
reinit();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case KEY_ARROW_UP:
|
case KEY_ARROW_UP:
|
||||||
@ -1866,7 +1866,7 @@ static term_cell_t * copy_terminal(int old_width, int old_height, term_cell_t *
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Reinitialize the terminal after a resize. */
|
/* Reinitialize the terminal after a resize. */
|
||||||
static void reinit(int send_sig) {
|
static void reinit(void) {
|
||||||
|
|
||||||
/* Figure out character sizes if fonts have changed. */
|
/* Figure out character sizes if fonts have changed. */
|
||||||
if (_use_aa && !_have_freetype) {
|
if (_use_aa && !_have_freetype) {
|
||||||
@ -1943,11 +1943,6 @@ static void reinit(int send_sig) {
|
|||||||
w.ws_xpixel = term_width * char_width;
|
w.ws_xpixel = term_width * char_width;
|
||||||
w.ws_ypixel = term_height * char_height;
|
w.ws_ypixel = term_height * char_height;
|
||||||
ioctl(fd_master, TIOCSWINSZ, &w);
|
ioctl(fd_master, TIOCSWINSZ, &w);
|
||||||
|
|
||||||
/* If requested, send a signal to the application. */
|
|
||||||
if (send_sig) {
|
|
||||||
kill(child_pid, SIGWINCH);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void update_bounds(void) {
|
static void update_bounds(void) {
|
||||||
@ -2009,7 +2004,7 @@ static void resize_finish(int width, int height) {
|
|||||||
reinit_graphics_yutani(ctx, window);
|
reinit_graphics_yutani(ctx, window);
|
||||||
|
|
||||||
/* Reinitialize the terminal buffer and ANSI library */
|
/* Reinitialize the terminal buffer and ANSI library */
|
||||||
reinit(1);
|
reinit();
|
||||||
|
|
||||||
/* We are done resizing. */
|
/* We are done resizing. */
|
||||||
yutani_window_resize_done(yctx, window);
|
yutani_window_resize_done(yctx, window);
|
||||||
@ -2254,13 +2249,13 @@ static void _menu_action_hide_borders(struct MenuEntry * self) {
|
|||||||
window_height = window->height - (decor_height + menu_bar_height) * (!_no_frame);
|
window_height = window->height - (decor_height + menu_bar_height) * (!_no_frame);
|
||||||
menu_update_title(_menu_toggle_borders_context, _no_frame ? "Show borders" : "Hide borders");
|
menu_update_title(_menu_toggle_borders_context, _no_frame ? "Show borders" : "Hide borders");
|
||||||
menu_update_title(_menu_toggle_borders_bar, _no_frame ? "Show borders" : "Hide borders");
|
menu_update_title(_menu_toggle_borders_bar, _no_frame ? "Show borders" : "Hide borders");
|
||||||
reinit(1);
|
reinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _menu_action_toggle_sdf(struct MenuEntry * self) {
|
static void _menu_action_toggle_sdf(struct MenuEntry * self) {
|
||||||
_use_aa = !(_use_aa);
|
_use_aa = !(_use_aa);
|
||||||
menu_update_title(self, _use_aa ? "Bitmap font" : "Anti-aliased font");
|
menu_update_title(self, _use_aa ? "Bitmap font" : "Anti-aliased font");
|
||||||
reinit(1);
|
reinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _menu_action_show_about(struct MenuEntry * self) {
|
static void _menu_action_show_about(struct MenuEntry * self) {
|
||||||
@ -2295,7 +2290,7 @@ static void _menu_action_set_scale(struct MenuEntry * self) {
|
|||||||
scale_fonts = 1;
|
scale_fonts = 1;
|
||||||
font_scaling = atof(_self->action);
|
font_scaling = atof(_self->action);
|
||||||
}
|
}
|
||||||
reinit(1);
|
reinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char ** argv) {
|
int main(int argc, char ** argv) {
|
||||||
@ -2474,7 +2469,7 @@ int main(int argc, char ** argv) {
|
|||||||
terminal = fdopen(fd_slave, "w");
|
terminal = fdopen(fd_slave, "w");
|
||||||
|
|
||||||
/* Initialize the terminal buffer and ANSI library for the first time. */
|
/* Initialize the terminal buffer and ANSI library for the first time. */
|
||||||
reinit(0);
|
reinit();
|
||||||
|
|
||||||
/* Make sure we're not passing anything to stdin on the child */
|
/* Make sure we're not passing anything to stdin on the child */
|
||||||
fflush(stdin);
|
fflush(stdin);
|
||||||
|
@ -273,7 +273,7 @@ int pty_ioctl(pty_t * pty, int request, void * argp) {
|
|||||||
if (!argp) return -EINVAL;
|
if (!argp) return -EINVAL;
|
||||||
validate(argp);
|
validate(argp);
|
||||||
memcpy(&pty->size, argp, sizeof(struct winsize));
|
memcpy(&pty->size, argp, sizeof(struct winsize));
|
||||||
/* TODO send sigwinch to fg_prog */
|
group_send_signal(pty->fg_proc, SIGWINCH, 1);
|
||||||
return 0;
|
return 0;
|
||||||
case TIOCGWINSZ:
|
case TIOCGWINSZ:
|
||||||
if (!argp) return -EINVAL;
|
if (!argp) return -EINVAL;
|
||||||
|
Loading…
Reference in New Issue
Block a user