Exemplo n.º 1
0
void tb_shutdown(void)
{
	if (termw == -1) {
		fputs("tb_shutdown() should not be called twice.", stderr);
		abort();
	}

	bytebuffer_puts(&output_buffer, funcs[T_SHOW_CURSOR]);
	bytebuffer_puts(&output_buffer, funcs[T_SGR0]);
	bytebuffer_puts(&output_buffer, funcs[T_CLEAR_SCREEN]);
	bytebuffer_puts(&output_buffer, funcs[T_EXIT_CA]);
	bytebuffer_puts(&output_buffer, funcs[T_EXIT_KEYPAD]);
	bytebuffer_puts(&output_buffer, funcs[T_EXIT_MOUSE]);
	bytebuffer_flush(&output_buffer, inout);
	tcsetattr(inout, TCSAFLUSH, &orig_tios);

	shutdown_term();
	close(inout);
	close(winch_fds[0]);
	close(winch_fds[1]);

	cellbuf_free(&back_buffer);
	cellbuf_free(&front_buffer);
	bytebuffer_free(&output_buffer);
	bytebuffer_free(&input_buffer);
	termw = termh = -1;
}
Exemplo n.º 2
0
void tb_shutdown(void)
{
	bytebuffer_puts(&output_buffer, funcs[T_SHOW_CURSOR]);
	bytebuffer_puts(&output_buffer, funcs[T_SGR0]);
	bytebuffer_puts(&output_buffer, funcs[T_CLEAR_SCREEN]);
	bytebuffer_puts(&output_buffer, funcs[T_EXIT_CA]);
	bytebuffer_puts(&output_buffer, funcs[T_EXIT_KEYPAD]);
	bytebuffer_flush(&output_buffer, inout);
	tcsetattr(inout, TCSAFLUSH, &orig_tios);

	shutdown_term();
	close(inout);
	close(winch_fds[0]);
	close(winch_fds[1]);

	cellbuf_free(&back_buffer);
	cellbuf_free(&front_buffer);
	bytebuffer_free(&output_buffer);
	bytebuffer_free(&input_buffer);
}
Exemplo n.º 3
0
Arquivo: app_term.c Projeto: vaplv/foo
/*******************************************************************************
 *
 * Command buffer functions.
 *
 ******************************************************************************/
enum app_error
app_init_term(struct app* app)
{
  struct wm_window_desc win_desc;
  enum app_error app_err = APP_NO_ERROR;
  enum rdr_error rdr_err = RDR_NO_ERROR;

  if(!app || !app->rdr.term_font || !app->wm.window) {
    app_err = APP_INVALID_ARGUMENT;
    goto error;
  }
  app_err = app_regular_create_command_buffer(app, &app->term.cmdbuf);
  if(APP_NO_ERROR != app_err)
    goto error;
  WM(get_window_desc(app->wm.window, &win_desc));
  rdr_err = rdr_create_term
    (app->rdr.system,
     app->rdr.term_font,
     win_desc.width,
     win_desc.height,
     &app->term.render_term);
  if(RDR_NO_ERROR != rdr_err) {
    app_err = rdr_to_app_error(rdr_err);
    goto error;
  }
  rdr_err = rdr_term_print_wstring
    (app->term.render_term, RDR_TERM_PROMPT, L"$ ", RDR_TERM_COLOR_GREEN);
  if(RDR_NO_ERROR != rdr_err) {
    app_err = rdr_to_app_error(rdr_err);
    goto error;
  }
  app->term.is_enabled = false;
exit:
  return app_err;
error:
  APP(shutdown_term(app));
  goto exit;
}