sd->imf = NULL;
ecore_imf_shutdown();
+ termpty_shutdown();
+
_parent_sc.del(obj);
evas_object_smart_data_set(obj, NULL);
}
_termio_config_set(obj, config);
+ termpty_init();
+
sd->pty = termpty_new(cmd, w, h, config->scrollback);
sd->pty->cb.change.func = _smart_pty_change;
sd->pty->cb.change.data = obj;
#include <string.h>
#include <errno.h>
+/* specific log domain to help debug only terminal code parser */
+static int _termpty_log_dom = -1;
+
+#undef CRITICAL
+#undef ERR
+#undef WRN
+#undef INF
+#undef DBG
+
+#define CRITICAL(...) EINA_LOG_DOM_CRIT(_termpty_log_dom, __VA_ARGS__)
+#define ERR(...) EINA_LOG_DOM_ERR(_termpty_log_dom, __VA_ARGS__)
+#define WRN(...) EINA_LOG_DOM_WARN(_termpty_log_dom, __VA_ARGS__)
+#define INF(...) EINA_LOG_DOM_INFO(_termpty_log_dom, __VA_ARGS__)
+#define DBG(...) EINA_LOG_DOM_DBG(_termpty_log_dom, __VA_ARGS__)
+
+void
+termpty_init(void)
+{
+ if (_termpty_log_dom >= 0) return;
+
+ _termpty_log_dom = eina_log_domain_register("termpty", NULL);
+ if (_termpty_log_dom < 0)
+ EINA_LOG_CRIT("could not create log domain 'termpty'.");
+}
+
+void
+termpty_shutdown(void)
+{
+ if (_termpty_log_dom < 0) return;
+ eina_log_domain_unregister(_termpty_log_dom);
+ _termpty_log_dom = -1;
+}
+
static void
_text_clear(Termpty *ty, Termcell *cells, int count, int val, Eina_Bool inherit_att)
{
/* translates VT100 ACS escape codes to Unicode values.
* Based on rxvt-unicode screen.C table.
*/
-static int vt100_to_unicode[62] = {
+static const int vt100_to_unicode[62] = {
0x2191, 0x2193, 0x2192, 0x2190, 0x2588, 0x259a, 0x2603,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
Termcell cell[1];
};
+void termpty_init(void);
+void termpty_shutdown(void);
+
Termpty *termpty_new(const char *cmd, int w, int h, int backscroll);
void termpty_free(Termpty *ty);
Termcell *termpty_cellrow_get(Termpty *ty, int y, int *wret);