chiark / gitweb /
@@
authorjames <james>
Wed, 20 Feb 2008 19:36:06 +0000 (19:36 +0000)
committerjames <james>
Wed, 20 Feb 2008 19:36:06 +0000 (19:36 +0000)
src/ansi.c
src/ansi.h
src/prototypes.h

index 0fa9a96e9fca5ad4940c7255c0976c918fc2cc62..019422821bf5e5fe49c9c8128b2b2a0cfe680651 100644 (file)
@@ -10,6 +10,9 @@ static char rcsid[] = "$Id$";
 
 /*
  * $Log$
+ * Revision 1.24  2008/02/20 19:36:06  james
+ * @@
+ *
  * Revision 1.23  2008/02/20 19:25:09  james
  * *** empty log message ***
  *
@@ -852,6 +855,11 @@ ansi_update (ANSI * a, Context * c)
 
 static void ansi_free(ANSI *a)
 {
+      a->terminal_reset(a);
+      if (a->terminal) 
+       a->terminal->close(a->terminal);
+
+       free(a);
 
 }
 
index 44fd61ae3aded5995b174cb8658619a4ce858f91..28089875cd0db8648e06324e138375a1c53bba6f 100644 (file)
@@ -12,6 +12,9 @@
 
 /*
  * $Log$
+ * Revision 1.9  2008/02/20 19:36:06  james
+ * @@
+ *
  * Revision 1.8  2008/02/20 19:25:09  james
  * *** empty log message ***
  *
@@ -74,9 +77,11 @@ typedef struct ANSI_struct
   int history_ptr;
 
   void (*dispatch)(struct ANSI_struct *,struct Context_struct *);
-  void (*update)(struct ANSI_struct *,struct CRT_struct *);
+  void (*update)(struct ANSI_struct *,struct Context_struct *);
+  void (*oneshot)(struct ANSI_struct *,struct CRT_struct *);
   void (*reset)(struct ANSI_struct *,struct CRT_struct *);
   void (*terminal_reset)(struct ANSI_struct *);
+  void (*close)(struct ANSI_struct *);
 } ANSI;
 
 
index cdb31119a01f650ac651860bd00b09a9f2297cad..6dc0ca6a1ee78f1883844d47b37604807cdfcb74 100644 (file)
@@ -1,26 +1,6 @@
 /* ansi.c */
-extern void ansi_move(ANSI *a, CRT_Pos p);
-extern void ansi_showhide_cursor(ANSI *a, int hide);
-extern void ansi_force_attr_normal(ANSI *a);
-extern void ansi_set_color(ANSI *a, int color);
-extern void ansi_set_attr(ANSI *a, int attr);
-extern void ansi_render(ANSI *a, CRT_CA ca);
-extern void ansi_cls(ANSI *a);
-extern void ansi_draw_line(ANSI *a, CRT_CA *cap, int y);
-extern void ansi_resize_check(ANSI *a);
-extern void ansi_history(ANSI *a, History *h);
-extern void ansi_draw(ANSI *a, CRT *c);
-extern void ansi_reset(ANSI *a, CRT *c);
-extern void ansi_terminal_reset(ANSI *a);
-extern void ansi_flush_escape(ANSI *a, Context *c);
-extern void ansi_parse_deckey(ANSI *a, Context *c);
-extern void ansi_parse_ansikey(ANSI *a, Context *c);
-extern void ansi_parse_escape(ANSI *a, Context *c);
-extern void ansi_check_escape(ANSI *a, Context *c);
-extern void ansi_parse_char(ANSI *a, Context *c, int ch);
-extern void ansi_parse(ANSI *a, Context *c, char *buf, int len);
 extern int ansi_dispatch(ANSI *a, Context *c);
-extern void ansi_update(ANSI *a, Context *c);
+extern ANSI *ansi_new_from_terminal(ANSI *a, TTY *t);
 /* crt.c */
 extern void crt_erase(CRT *c, CRT_Pos s, CRT_Pos e, int ea);
 extern void crt_cls(CRT *c);