diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/font.h | 2 | ||||
-rw-r--r-- | src/font_8x16.c | 2 | ||||
-rw-r--r-- | src/font_freetype2.c | 2 | ||||
-rw-r--r-- | src/font_pango.c | 2 | ||||
-rw-r--r-- | src/font_unifont.c | 2 | ||||
-rw-r--r-- | src/kmscon_conf.c | 2 | ||||
-rw-r--r-- | src/kmscon_main.c | 1 | ||||
-rw-r--r-- | src/kmscon_seat.c | 1 | ||||
-rw-r--r-- | src/kmscon_seat.h | 1 | ||||
-rw-r--r-- | src/kmscon_terminal.c | 1 | ||||
-rw-r--r-- | src/text.c | 2 | ||||
-rw-r--r-- | src/text.h | 2 | ||||
-rw-r--r-- | src/text_bblit.c | 2 | ||||
-rw-r--r-- | src/text_bbulk.c | 2 | ||||
-rw-r--r-- | src/text_gltex.c | 2 | ||||
-rw-r--r-- | src/uterm.h | 203 | ||||
-rw-r--r-- | src/uterm_video.c | 2 | ||||
-rw-r--r-- | src/uterm_video.h | 211 | ||||
-rw-r--r-- | src/uterm_video_drm.c | 2 | ||||
-rw-r--r-- | src/uterm_video_dumb.c | 2 | ||||
-rw-r--r-- | src/uterm_video_fbdev.c | 2 | ||||
-rw-r--r-- | src/uterm_video_internal.h | 2 | ||||
-rw-r--r-- | src/wlt_terminal.c | 1 |
23 files changed, 233 insertions, 218 deletions
@@ -33,7 +33,7 @@ #include <errno.h> #include <stdlib.h> #include "kmscon_module.h" -#include "uterm.h" +#include "uterm_video.h" /* fonts */ diff --git a/src/font_8x16.c b/src/font_8x16.c index ae2cae0..24f8935 100644 --- a/src/font_8x16.c +++ b/src/font_8x16.c @@ -49,7 +49,7 @@ #include <string.h> #include "font.h" #include "log.h" -#include "uterm.h" +#include "uterm_video.h" #define LOG_SUBSYSTEM "font_8x16" diff --git a/src/font_freetype2.c b/src/font_freetype2.c index a035bee..d1cbd71 100644 --- a/src/font_freetype2.c +++ b/src/font_freetype2.c @@ -48,7 +48,7 @@ #include "log.h" #include "shl_dlist.h" #include "shl_hashtable.h" -#include "uterm.h" +#include "uterm_video.h" #define LOG_SUBSYSTEM "font_freetype2" diff --git a/src/font_pango.c b/src/font_pango.c index 22b9128..664b99e 100644 --- a/src/font_pango.c +++ b/src/font_pango.c @@ -56,7 +56,7 @@ #include "shl_dlist.h" #include "shl_hashtable.h" #include "tsm_unicode.h" -#include "uterm.h" +#include "uterm_video.h" #define LOG_SUBSYSTEM "font_pango" diff --git a/src/font_unifont.c b/src/font_unifont.c index 3431d09..0dbb1aa 100644 --- a/src/font_unifont.c +++ b/src/font_unifont.c @@ -44,7 +44,7 @@ #include <string.h> #include "font.h" #include "log.h" -#include "uterm.h" +#include "uterm_video.h" #define LOG_SUBSYSTEM "font_unifont" diff --git a/src/kmscon_conf.c b/src/kmscon_conf.c index db46692..f88b696 100644 --- a/src/kmscon_conf.c +++ b/src/kmscon_conf.c @@ -36,7 +36,7 @@ #include "kmscon_conf.h" #include "log.h" #include "shl_misc.h" -#include "uterm.h" +#include "uterm_video.h" static void print_help() { diff --git a/src/kmscon_main.c b/src/kmscon_main.c index ed29fb8..3385445 100644 --- a/src/kmscon_main.c +++ b/src/kmscon_main.c @@ -41,6 +41,7 @@ #include "shl_misc.h" #include "text.h" #include "uterm.h" +#include "uterm_video.h" struct app_video { struct shl_dlist list; diff --git a/src/kmscon_seat.c b/src/kmscon_seat.c index e1f054d..aaba005 100644 --- a/src/kmscon_seat.c +++ b/src/kmscon_seat.c @@ -42,6 +42,7 @@ #include "log.h" #include "shl_dlist.h" #include "uterm.h" +#include "uterm_video.h" #define LOG_SUBSYSTEM "seat" diff --git a/src/kmscon_seat.h b/src/kmscon_seat.h index 1787f61..398d073 100644 --- a/src/kmscon_seat.h +++ b/src/kmscon_seat.h @@ -37,6 +37,7 @@ #include "conf.h" #include "eloop.h" #include "uterm.h" +#include "uterm_video.h" struct kmscon_seat; struct kmscon_session; diff --git a/src/kmscon_terminal.c b/src/kmscon_terminal.c index d122238..a90228d 100644 --- a/src/kmscon_terminal.c +++ b/src/kmscon_terminal.c @@ -46,6 +46,7 @@ #include "tsm_screen.h" #include "tsm_vte.h" #include "uterm.h" +#include "uterm_video.h" #define LOG_SUBSYSTEM "terminal" @@ -39,7 +39,7 @@ #include "shl_dlist.h" #include "shl_register.h" #include "text.h" -#include "uterm.h" +#include "uterm_video.h" #define LOG_SUBSYSTEM "text" @@ -38,7 +38,7 @@ #include "font.h" #include "kmscon_module.h" #include "tsm_screen.h" -#include "uterm.h" +#include "uterm_video.h" /* text renderer */ diff --git a/src/text_bblit.c b/src/text_bblit.c index 4595b18..ca19fb4 100644 --- a/src/text_bblit.c +++ b/src/text_bblit.c @@ -38,7 +38,7 @@ #include <string.h> #include "log.h" #include "text.h" -#include "uterm.h" +#include "uterm_video.h" #define LOG_SUBSYSTEM "text_bblit" diff --git a/src/text_bbulk.c b/src/text_bbulk.c index 3e589b6..298d252 100644 --- a/src/text_bbulk.c +++ b/src/text_bbulk.c @@ -38,7 +38,7 @@ #include <string.h> #include "log.h" #include "text.h" -#include "uterm.h" +#include "uterm_video.h" #define LOG_SUBSYSTEM "text_bbulk" diff --git a/src/text_gltex.c b/src/text_gltex.c index b8cd8bf..845ae10 100644 --- a/src/text_gltex.c +++ b/src/text_gltex.c @@ -50,7 +50,7 @@ #include "shl_hashtable.h" #include "static_gl.h" #include "text.h" -#include "uterm.h" +#include "uterm_video.h" #define LOG_SUBSYSTEM "text_gltex" diff --git a/src/uterm.h b/src/uterm.h index 1330f85..39ff67e 100644 --- a/src/uterm.h +++ b/src/uterm.h @@ -38,211 +38,10 @@ #ifndef UTERM_UTERM_H #define UTERM_UTERM_H +#include <eloop.h> #include <inttypes.h> #include <stdbool.h> #include <stdlib.h> -#include "eloop.h" - -/* - * Video Control - * Linux provides 2 famous ways to access the video hardware: fbdev and drm - * fbdev is the older one of both and is simply a mmap() of the framebuffer into - * main memory. It does not allow 3D acceleration and if you need 2D - * acceleration you should use libraries like cairo to draw into the framebuffer - * provided by this library. - * DRM is the new approach which provides 3D acceleration with mesa. It allows - * much more configuration as fbdev and is the recommended way to access video - * hardware on modern computers. - * Modern mesa provides 3D acceleration on fbdev, too. This is used in systems - * like Android. This will allow us to provide an fbdev backend here. - * - * Famous linux graphics systems like X.Org/X11 or Wayland use fbdev or DRM - * internally to access the video hardware. This API allows low-level access to - * fbdev and DRM without the need of X.Org/X11 or Wayland. If VT support is - * enabled in your kernel, each application can run on a different VT. For - * instance, X.Org may run on VT-7, Wayland on VT-8, your application on VT-9 - * and default consoles on VT-1 to VT-6. You can switch between them with - * ctrl-alt-F1-F12. - * If VT support is not available (very unlikely) you need other ways to switch - * between applications. - * - * The main object by this API is uterm_video. This object attaches to a single - * graphics card via DRM or on a single frambuffer via fbdev. Many DRM drivers - * also provide an fbdev driver so you must go sure not to write to both - * simulatneously. Use "UTERM_VIDEO_DRM" to scan for DRM devices. Otherwise, - * fbdev is used. DRM is the recommended way. Use fbdev only on embedded devices - * which do not come with an DRM driver. - * The uterm_video object scans for graphic-cards and connected displays. Each - * display is represented as a uterm_display object. The uterm_video object is - * hotplug-capable so it reports if a display is connected or disconnected. - * Each uterm_display object can be activated/deactivated independently of the - * other displays. To draw to a display you need to create a uterm_screen object - * and add your display to the screen. The screen object allows to spread a - * single screen onto multiple displays. Currently, the uterm_screen object - * allows only one display per screen but we may extend this in the future. - * - * If you are using fbdev, you *must* correctly destroy your uterm_video object - * and also call uterm_video_segfault() if you abnormally abort your - * application. Otherwise your video device remains in undefined state and other - * applications might not display correctly. - * If you use DRM, the same operations are recommended but not required as the - * kernel can correctly reset video devices on its own. - */ - -struct uterm_mode; -struct uterm_display; -struct uterm_video; - -enum uterm_display_state { - UTERM_DISPLAY_ACTIVE, - UTERM_DISPLAY_ASLEEP, - UTERM_DISPLAY_INACTIVE, - UTERM_DISPLAY_GONE, -}; - -enum uterm_display_dpms { - UTERM_DPMS_ON, - UTERM_DPMS_STANDBY, - UTERM_DPMS_SUSPEND, - UTERM_DPMS_OFF, - UTERM_DPMS_UNKNOWN, -}; - -enum uterm_video_type { - UTERM_VIDEO_DRM, - UTERM_VIDEO_DUMB, - UTERM_VIDEO_FBDEV, -}; - -enum uterm_video_action { - UTERM_WAKE_UP, - UTERM_SLEEP, - UTERM_NEW, - UTERM_GONE, -}; - -struct uterm_video_hotplug { - struct uterm_display *display; - int action; -}; - -enum uterm_display_action { - UTERM_PAGE_FLIP, -}; - -struct uterm_display_event { - int action; -}; - -enum uterm_video_format { - UTERM_FORMAT_GREY, - UTERM_FORMAT_XRGB32, -}; - -struct uterm_video_buffer { - unsigned int width; - unsigned int height; - unsigned int stride; - unsigned int format; - uint8_t *data; -}; - -struct uterm_video_blend_req { - const struct uterm_video_buffer *buf; - unsigned int x; - unsigned int y; - uint8_t fr; - uint8_t fg; - uint8_t fb; - uint8_t br; - uint8_t bg; - uint8_t bb; -}; - -typedef void (*uterm_video_cb) (struct uterm_video *video, - struct uterm_video_hotplug *arg, - void *data); -typedef void (*uterm_display_cb) (struct uterm_display *disp, - struct uterm_display_event *arg, - void *data); - -/* misc */ - -const char *uterm_dpms_to_name(int dpms); -bool uterm_video_available(unsigned int type); - -/* display modes interface */ - -void uterm_mode_ref(struct uterm_mode *mode); -void uterm_mode_unref(struct uterm_mode *mode); -struct uterm_mode *uterm_mode_next(struct uterm_mode *mode); - -const char *uterm_mode_get_name(const struct uterm_mode *mode); -unsigned int uterm_mode_get_width(const struct uterm_mode *mode); -unsigned int uterm_mode_get_height(const struct uterm_mode *mode); - -/* display interface */ - -void uterm_display_ref(struct uterm_display *disp); -void uterm_display_unref(struct uterm_display *disp); -struct uterm_display *uterm_display_next(struct uterm_display *disp); - -int uterm_display_register_cb(struct uterm_display *disp, uterm_display_cb cb, - void *data); -void uterm_display_unregister_cb(struct uterm_display *disp, - uterm_display_cb cb, void *data); - -struct uterm_mode *uterm_display_get_modes(struct uterm_display *disp); -struct uterm_mode *uterm_display_get_current(struct uterm_display *disp); -struct uterm_mode *uterm_display_get_default(struct uterm_display *disp); - -int uterm_display_get_state(struct uterm_display *disp); -int uterm_display_activate(struct uterm_display *disp, struct uterm_mode *mode); -void uterm_display_deactivate(struct uterm_display *disp); -int uterm_display_set_dpms(struct uterm_display *disp, int state); -int uterm_display_get_dpms(const struct uterm_display *disp); - -int uterm_display_use(struct uterm_display *disp); -int uterm_display_swap(struct uterm_display *disp); -bool uterm_display_is_swapping(struct uterm_display *disp); - -int uterm_display_fill(struct uterm_display *disp, - uint8_t r, uint8_t g, uint8_t b, - unsigned int x, unsigned int y, - unsigned int width, unsigned int height); -int uterm_display_blit(struct uterm_display *disp, - const struct uterm_video_buffer *buf, - unsigned int x, unsigned int y); -int uterm_display_fake_blend(struct uterm_display *disp, - const struct uterm_video_buffer *buf, - unsigned int x, unsigned int y, - uint8_t fr, uint8_t fg, uint8_t fb, - uint8_t br, uint8_t bg, uint8_t bb); -int uterm_display_fake_blendv(struct uterm_display *disp, - const struct uterm_video_blend_req *req, - size_t num); - -/* video interface */ - -int uterm_video_new(struct uterm_video **out, - struct ev_eloop *eloop, - unsigned int type, - const char *node); -void uterm_video_ref(struct uterm_video *video); -void uterm_video_unref(struct uterm_video *video); - -void uterm_video_segfault(struct uterm_video *video); -int uterm_video_use(struct uterm_video *video); -struct uterm_display *uterm_video_get_displays(struct uterm_video *video); -int uterm_video_register_cb(struct uterm_video *video, uterm_video_cb cb, - void *data); -void uterm_video_unregister_cb(struct uterm_video *video, uterm_video_cb cb, - void *data); - -void uterm_video_sleep(struct uterm_video *video); -int uterm_video_wake_up(struct uterm_video *video); -bool uterm_video_is_awake(struct uterm_video *video); -void uterm_video_poll(struct uterm_video *video); /* * Input Devices diff --git a/src/uterm_video.c b/src/uterm_video.c index 616a2d7..082038d 100644 --- a/src/uterm_video.c +++ b/src/uterm_video.c @@ -37,7 +37,7 @@ #include "eloop.h" #include "log.h" #include "shl_hook.h" -#include "uterm.h" +#include "uterm_video.h" #include "uterm_video_internal.h" #define LOG_SUBSYSTEM "video" diff --git a/src/uterm_video.h b/src/uterm_video.h new file mode 100644 index 0000000..e30194b --- /dev/null +++ b/src/uterm_video.h @@ -0,0 +1,211 @@ +/* + * uterm_video - Linux User-Space Terminal Video Handling + * + * Copyright (c) 2011-2013 David Herrmann <dh.herrmann@googlemail.com> + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * Video Control + * Linux provides 2 famous ways to access the video hardware: FBDEV and DRM. + * fbdev is the older one of both and is simply a mmap() of the framebuffer into + * main memory. It does not allow 3D acceleration and if you need 2D + * acceleration you should use libraries like cairo to draw into the framebuffer + * provided by this library. + * DRM is the new approach which provides 3D acceleration with mesa. It allows + * much more configuration as fbdev and is the recommended way to access video + * hardware on modern computers. + * Modern mesa provides 3D acceleration on fbdev, too. This is used in systems + * like Android. This will allow us to provide an fbdev backend here. + * + * Famous linux graphics systems like X.Org/X11 or Wayland use fbdev or DRM + * internally to access the video hardware. This API allows low-level access to + * fbdev and DRM without the need of X.Org/X11 or Wayland. If VT support is + * enabled in your kernel, each application can run on a different VT. For + * instance, X.Org may run on VT-7, Wayland on VT-8, your application on VT-9 + * and default consoles on VT-1 to VT-6. You can switch between them with + * ctrl-alt-F1-F12. + * If VT support is not available you need other ways to switch between + * applications. See uterm_vt for more. + */ + +#ifndef UTERM_UTERM_VIDEO_H +#define UTERM_UTERM_VIDEO_H + +#include <eloop.h> +#include <inttypes.h> +#include <stdbool.h> +#include <stdlib.h> + +struct uterm_mode; +struct uterm_display; +struct uterm_video; + +enum uterm_display_state { + UTERM_DISPLAY_ACTIVE, + UTERM_DISPLAY_ASLEEP, + UTERM_DISPLAY_INACTIVE, + UTERM_DISPLAY_GONE, +}; + +enum uterm_display_dpms { + UTERM_DPMS_ON, + UTERM_DPMS_STANDBY, + UTERM_DPMS_SUSPEND, + UTERM_DPMS_OFF, + UTERM_DPMS_UNKNOWN, +}; + +enum uterm_video_type { + UTERM_VIDEO_DRM, + UTERM_VIDEO_DUMB, + UTERM_VIDEO_FBDEV, +}; + +enum uterm_video_action { + UTERM_WAKE_UP, + UTERM_SLEEP, + UTERM_NEW, + UTERM_GONE, +}; + +struct uterm_video_hotplug { + struct uterm_display *display; + int action; +}; + +enum uterm_display_action { + UTERM_PAGE_FLIP, +}; + +struct uterm_display_event { + int action; +}; + +enum uterm_video_format { + UTERM_FORMAT_GREY, + UTERM_FORMAT_XRGB32, +}; + +struct uterm_video_buffer { + unsigned int width; + unsigned int height; + unsigned int stride; + unsigned int format; + uint8_t *data; +}; + +struct uterm_video_blend_req { + const struct uterm_video_buffer *buf; + unsigned int x; + unsigned int y; + uint8_t fr; + uint8_t fg; + uint8_t fb; + uint8_t br; + uint8_t bg; + uint8_t bb; +}; + +typedef void (*uterm_video_cb) (struct uterm_video *video, + struct uterm_video_hotplug *arg, + void *data); +typedef void (*uterm_display_cb) (struct uterm_display *disp, + struct uterm_display_event *arg, + void *data); + +/* misc */ + +const char *uterm_dpms_to_name(int dpms); +bool uterm_video_available(unsigned int type); + +/* display modes interface */ + +void uterm_mode_ref(struct uterm_mode *mode); +void uterm_mode_unref(struct uterm_mode *mode); +struct uterm_mode *uterm_mode_next(struct uterm_mode *mode); + +const char *uterm_mode_get_name(const struct uterm_mode *mode); +unsigned int uterm_mode_get_width(const struct uterm_mode *mode); +unsigned int uterm_mode_get_height(const struct uterm_mode *mode); + +/* display interface */ + +void uterm_display_ref(struct uterm_display *disp); +void uterm_display_unref(struct uterm_display *disp); +struct uterm_display *uterm_display_next(struct uterm_display *disp); + +int uterm_display_register_cb(struct uterm_display *disp, uterm_display_cb cb, + void *data); +void uterm_display_unregister_cb(struct uterm_display *disp, + uterm_display_cb cb, void *data); + +struct uterm_mode *uterm_display_get_modes(struct uterm_display *disp); +struct uterm_mode *uterm_display_get_current(struct uterm_display *disp); +struct uterm_mode *uterm_display_get_default(struct uterm_display *disp); + +int uterm_display_get_state(struct uterm_display *disp); +int uterm_display_activate(struct uterm_display *disp, struct uterm_mode *mode); +void uterm_display_deactivate(struct uterm_display *disp); +int uterm_display_set_dpms(struct uterm_display *disp, int state); +int uterm_display_get_dpms(const struct uterm_display *disp); + +int uterm_display_use(struct uterm_display *disp); +int uterm_display_swap(struct uterm_display *disp); +bool uterm_display_is_swapping(struct uterm_display *disp); + +int uterm_display_fill(struct uterm_display *disp, + uint8_t r, uint8_t g, uint8_t b, + unsigned int x, unsigned int y, + unsigned int width, unsigned int height); +int uterm_display_blit(struct uterm_display *disp, + const struct uterm_video_buffer *buf, + unsigned int x, unsigned int y); +int uterm_display_fake_blend(struct uterm_display *disp, + const struct uterm_video_buffer *buf, + unsigned int x, unsigned int y, + uint8_t fr, uint8_t fg, uint8_t fb, + uint8_t br, uint8_t bg, uint8_t bb); +int uterm_display_fake_blendv(struct uterm_display *disp, + const struct uterm_video_blend_req *req, + size_t num); + +/* video interface */ + +int uterm_video_new(struct uterm_video **out, struct ev_eloop *eloop, + unsigned int type, const char *node); +void uterm_video_ref(struct uterm_video *video); +void uterm_video_unref(struct uterm_video *video); + +void uterm_video_segfault(struct uterm_video *video); +int uterm_video_use(struct uterm_video *video); +struct uterm_display *uterm_video_get_displays(struct uterm_video *video); +int uterm_video_register_cb(struct uterm_video *video, uterm_video_cb cb, + void *data); +void uterm_video_unregister_cb(struct uterm_video *video, uterm_video_cb cb, + void *data); + +void uterm_video_sleep(struct uterm_video *video); +int uterm_video_wake_up(struct uterm_video *video); +bool uterm_video_is_awake(struct uterm_video *video); +void uterm_video_poll(struct uterm_video *video); + +#endif /* UTERM_UTERM_VIDEO_H */ diff --git a/src/uterm_video_drm.c b/src/uterm_video_drm.c index 840ba36..0ba6863 100644 --- a/src/uterm_video_drm.c +++ b/src/uterm_video_drm.c @@ -46,7 +46,7 @@ #include <xf86drmMode.h> #include "eloop.h" #include "log.h" -#include "uterm.h" +#include "uterm_video.h" #include "uterm_video_internal.h" #define LOG_SUBSYSTEM "video_drm" diff --git a/src/uterm_video_dumb.c b/src/uterm_video_dumb.c index 6a8101d..cf721d9 100644 --- a/src/uterm_video_dumb.c +++ b/src/uterm_video_dumb.c @@ -39,7 +39,7 @@ #include <xf86drmMode.h> #include "eloop.h" #include "log.h" -#include "uterm.h" +#include "uterm_video.h" #include "uterm_video_internal.h" #define LOG_SUBSYSTEM "video_dumb" diff --git a/src/uterm_video_fbdev.c b/src/uterm_video_fbdev.c index e8cfe24..3285baa 100644 --- a/src/uterm_video_fbdev.c +++ b/src/uterm_video_fbdev.c @@ -37,7 +37,7 @@ #include <sys/mman.h> #include <unistd.h> #include "log.h" -#include "uterm.h" +#include "uterm_video.h" #include "uterm_video_internal.h" #define LOG_SUBSYSTEM "video_fbdev" diff --git a/src/uterm_video_internal.h b/src/uterm_video_internal.h index a7937c1..d34b200 100644 --- a/src/uterm_video_internal.h +++ b/src/uterm_video_internal.h @@ -34,7 +34,7 @@ #include <stdlib.h> #include "eloop.h" #include "shl_hook.h" -#include "uterm.h" +#include "uterm_video.h" /* backend-operations */ diff --git a/src/wlt_terminal.c b/src/wlt_terminal.c index 380e814..1588285 100644 --- a/src/wlt_terminal.c +++ b/src/wlt_terminal.c @@ -44,6 +44,7 @@ #include "tsm_unicode.h" #include "tsm_screen.h" #include "tsm_vte.h" +#include "uterm_video.h" #include "wlt_main.h" #include "wlt_terminal.h" #include "wlt_toolkit.h" |