From 3e1f9f0c6172300e7fb7042db24f1ffc22123228 Mon Sep 17 00:00:00 2001 From: David Herrmann Date: Sun, 28 Oct 2012 14:29:59 +0100 Subject: [PATCH] uterm: add uterm_video_available() helper This helper provides information whether a given backend is available and even whether kernel-runtime support is available for this backend. Signed-off-by: David Herrmann --- src/uterm.h | 1 + src/uterm_video.c | 23 +++++++++++++++++++++++ src/uterm_video.h | 10 ++++++++++ 3 files changed, 34 insertions(+) diff --git a/src/uterm.h b/src/uterm.h index 6e284ef..9f6c909 100644 --- a/src/uterm.h +++ b/src/uterm.h @@ -170,6 +170,7 @@ typedef void (*uterm_display_cb) (struct uterm_display *disp, /* misc */ const char *uterm_dpms_to_name(int dpms); +bool uterm_video_available(unsigned int type); /* screen interface */ diff --git a/src/uterm_video.c b/src/uterm_video.c index f3e029f..b518da5 100644 --- a/src/uterm_video.c +++ b/src/uterm_video.c @@ -59,6 +59,29 @@ const char *uterm_dpms_to_name(int dpms) } } +bool uterm_video_available(unsigned int type) +{ + switch (type) { + case UTERM_VIDEO_DRM: +#ifdef BUILD_ENABLE_VIDEO_DRM + return video_drm_available(); +#endif + return false; + case UTERM_VIDEO_DUMB: +#ifdef BUILD_ENABLE_VIDEO_DUMB + return video_drm_available(); +#endif + return false; + case UTERM_VIDEO_FBDEV: +#ifdef BUILD_ENABLE_VIDEO_FBDEV + return true; +#endif + return false; + default: + return false; + } +} + /* Until we allow multiple displays in one screen, we use this constructor which * is basically just a wrapper around "struct uterm_dispaly". * The idea behind screens is having one single drawing-target which is spread diff --git a/src/uterm_video.h b/src/uterm_video.h index 6d1c812..052ede3 100644 --- a/src/uterm_video.h +++ b/src/uterm_video.h @@ -466,6 +466,11 @@ static inline void video_drm_free_name(char *name) free(name); } +static inline bool video_drm_available(void) +{ + return drmAvailable(); +} + #else static inline char *video_drm_get_id(int fd) @@ -486,6 +491,11 @@ static inline void video_drm_free_name(char *name) { } +bool video_drm_available(void) +{ + return false; +} + #endif #endif /* UTERM_VIDEO_H */