summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Herrmann <dh.herrmann@googlemail.com>2013-01-07 18:03:45 +0100
committerDavid Herrmann <dh.herrmann@googlemail.com>2013-01-07 18:03:45 +0100
commit50cfef008b64519592d11b2f35088b7446ff6ff8 (patch)
treebf4ed43699c262914f4410f0adfeed7f3c1018f6
parentebf48cba229a968397fe7495b8b4321f5b9ce138 (diff)
uterm: move video API into uterm_video.h
Split the main header to avoid having it as dependency in so many places. Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
-rw-r--r--Makefile.am5
-rw-r--r--src/font.h2
-rw-r--r--src/font_8x16.c2
-rw-r--r--src/font_freetype2.c2
-rw-r--r--src/font_pango.c2
-rw-r--r--src/font_unifont.c2
-rw-r--r--src/kmscon_conf.c2
-rw-r--r--src/kmscon_main.c1
-rw-r--r--src/kmscon_seat.c1
-rw-r--r--src/kmscon_seat.h1
-rw-r--r--src/kmscon_terminal.c1
-rw-r--r--src/text.c2
-rw-r--r--src/text.h2
-rw-r--r--src/text_bblit.c2
-rw-r--r--src/text_bbulk.c2
-rw-r--r--src/text_gltex.c2
-rw-r--r--src/uterm.h203
-rw-r--r--src/uterm_video.c2
-rw-r--r--src/uterm_video.h211
-rw-r--r--src/uterm_video_drm.c2
-rw-r--r--src/uterm_video_dumb.c2
-rw-r--r--src/uterm_video_fbdev.c2
-rw-r--r--src/uterm_video_internal.h2
-rw-r--r--src/wlt_terminal.c1
24 files changed, 237 insertions, 219 deletions
diff --git a/Makefile.am b/Makefile.am
index 5380f97..5e6203c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -218,7 +218,9 @@ libtsm_la_LDFLAGS = \
if BUILD_ENABLE_UTERM
lib_LTLIBRARIES += libuterm.la
-include_HEADERS += src/uterm.h
+include_HEADERS += \
+ src/uterm.h \
+ src/uterm_video.h
pkgconfig_DATA += docs/pc/libuterm.pc
endif
@@ -227,6 +229,7 @@ libuterm_la_SOURCES = \
$(SHL_HOOK) \
$(SHL_MISC) \
src/uterm.h \
+ src/uterm_video.h \
src/uterm_input_internal.h \
src/uterm_video_internal.h \
src/uterm_systemd_internal.h \
diff --git a/src/font.h b/src/font.h
index b3f056f..cf76424 100644
--- a/src/font.h
+++ b/src/font.h
@@ -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"
diff --git a/src/text.c b/src/text.c
index e825d37..89c4899 100644
--- a/src/text.c
+++ b/src/text.c
@@ -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"
diff --git a/src/text.h b/src/text.h
index 0504dfc..f2cee79 100644
--- a/src/text.h
+++ b/src/text.h
@@ -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"