From 7d82476590033a93761035ead1dd761b68c5c049 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Sun, 4 Jun 2017 19:30:37 -0400 Subject: Refactor type implementations --- backend/backend.c | 2 +- backend/drm/backend.c | 2 +- backend/drm/drm.c | 5 ++--- backend/udev.c | 2 -- include/backend.h | 17 ----------------- include/session/interface.h | 18 ------------------ include/wlr/backend/interface.h | 17 +++++++++++++++++ include/wlr/session.h | 4 ++-- include/wlr/session/interface.h | 15 +++++++++++++++ session/direct.c | 10 +++++----- session/logind.c | 10 +++++----- session/session.c | 26 ++++++++++++++------------ 12 files changed, 62 insertions(+), 66 deletions(-) delete mode 100644 include/backend.h delete mode 100644 include/session/interface.h create mode 100644 include/wlr/backend/interface.h create mode 100644 include/wlr/session/interface.h diff --git a/backend/backend.c b/backend/backend.c index 9a3d81d8..3fb74c57 100644 --- a/backend/backend.c +++ b/backend/backend.c @@ -4,9 +4,9 @@ #include #include #include +#include #include "common/log.h" #include "backend/drm/backend.h" -#include "backend.h" struct wlr_backend *wlr_backend_create(const struct wlr_backend_impl *impl, struct wlr_backend_state *state) { diff --git a/backend/drm/backend.c b/backend/drm/backend.c index 2840f17f..7c2ff7fe 100644 --- a/backend/drm/backend.c +++ b/backend/drm/backend.c @@ -10,7 +10,7 @@ #include #include #include -#include "backend.h" +#include #include "backend/udev.h" #include "backend/drm/backend.h" #include "backend/drm/drm.h" diff --git a/backend/drm/drm.c b/backend/drm/drm.c index 27a5932f..2523eaf0 100644 --- a/backend/drm/drm.c +++ b/backend/drm/drm.c @@ -12,12 +12,11 @@ #include #include #include - -#include "types.h" -#include "backend.h" +#include #include "backend/drm/backend.h" #include "backend/drm/drm.h" #include "common/log.h" +#include "types.h" static const char *conn_name[] = { [DRM_MODE_CONNECTOR_Unknown] = "Unknown", diff --git a/backend/udev.c b/backend/udev.c index fb213339..c84b8e31 100644 --- a/backend/udev.c +++ b/backend/udev.c @@ -9,8 +9,6 @@ #include #include #include -#include "backend.h" -#include "backend/drm/backend.h" #include "backend/udev.h" #include "common/log.h" diff --git a/include/backend.h b/include/backend.h deleted file mode 100644 index d42c6f17..00000000 --- a/include/backend.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef _WLR_BACKEND_INTERNAL_H -#define _WLR_BACKEND_INTERNAL_H - -#include -#include - -struct wlr_backend_state; - -struct wlr_backend_impl { - bool (*init)(struct wlr_backend_state *state); - void (*destroy)(struct wlr_backend_state *state); -}; - -struct wlr_backend *wlr_backend_create(const struct wlr_backend_impl *impl, - struct wlr_backend_state *state); - -#endif diff --git a/include/session/interface.h b/include/session/interface.h deleted file mode 100644 index 7345c4cf..00000000 --- a/include/session/interface.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef WLR_SESSION_INTERFACE_H -#define WLR_SESSION_INTERFACE_H - -#include - -struct session_interface { - struct wlr_session *(*start)(struct wl_display *disp); - void (*finish)(struct wlr_session *session); - int (*open)(struct wlr_session *restrict session, - const char *restrict path); - void (*close)(struct wlr_session *session, int fd); - bool (*change_vt)(struct wlr_session *session, int vt); -}; - -extern const struct session_interface session_logind_iface; -extern const struct session_interface session_direct_iface; - -#endif diff --git a/include/wlr/backend/interface.h b/include/wlr/backend/interface.h new file mode 100644 index 00000000..15cfb6c3 --- /dev/null +++ b/include/wlr/backend/interface.h @@ -0,0 +1,17 @@ +#ifndef _WLR_BACKEND_INTERFACE_H +#define _WLR_BACKEND_INTERFACE_H + +#include +#include + +struct wlr_backend_state; + +struct wlr_backend_impl { + bool (*init)(struct wlr_backend_state *state); + void (*destroy)(struct wlr_backend_state *state); +}; + +struct wlr_backend *wlr_backend_create(const struct wlr_backend_impl *impl, + struct wlr_backend_state *state); + +#endif diff --git a/include/wlr/session.h b/include/wlr/session.h index 5f210f10..bd5a96c0 100644 --- a/include/wlr/session.h +++ b/include/wlr/session.h @@ -4,7 +4,7 @@ #include #include -struct session_interface; +struct session_impl; // Passed to the listeners of device_paused/resumed struct device_arg { @@ -13,7 +13,7 @@ struct device_arg { }; struct wlr_session { - const struct session_interface *iface; + const struct session_impl *impl; struct wl_signal device_paused; struct wl_signal device_resumed; diff --git a/include/wlr/session/interface.h b/include/wlr/session/interface.h new file mode 100644 index 00000000..78256dd6 --- /dev/null +++ b/include/wlr/session/interface.h @@ -0,0 +1,15 @@ +#ifndef WLR_SESSION_INTERFACE_H +#define WLR_SESSION_INTERFACE_H + +#include + +struct session_impl { + struct wlr_session *(*start)(struct wl_display *disp); + void (*finish)(struct wlr_session *session); + int (*open)(struct wlr_session *restrict session, + const char *restrict path); + void (*close)(struct wlr_session *session, int fd); + bool (*change_vt)(struct wlr_session *session, int vt); +}; + +#endif diff --git a/session/direct.c b/session/direct.c index c135070f..c735dae4 100644 --- a/session/direct.c +++ b/session/direct.c @@ -1,5 +1,4 @@ #define _POSIX_C_SOURCE 200809L - #include #include #include @@ -7,10 +6,11 @@ #include #include #include - -#include "session/interface.h" +#include #include "common/log.h" +const struct session_impl session_direct; + struct direct_session { struct wlr_session base; }; @@ -44,13 +44,13 @@ static struct wlr_session *direct_session_start(struct wl_display *disp) { wlr_log(L_INFO, "Successfully loaded direct session"); - session->base.iface = &session_direct_iface; + session->base.impl = &session_direct; wl_signal_init(&session->base.device_paused); wl_signal_init(&session->base.device_resumed); return &session->base; } -const struct session_interface session_direct_iface = { +const struct session_impl session_direct = { .start = direct_session_start, .finish = direct_session_finish, .open = direct_session_open, diff --git a/session/logind.c b/session/logind.c index 6f0327e6..6ce7e4c2 100644 --- a/session/logind.c +++ b/session/logind.c @@ -1,5 +1,4 @@ #define _POSIX_C_SOURCE 200809L - #include #include #include @@ -12,10 +11,11 @@ #include #include #include - -#include "session/interface.h" +#include #include "common/log.h" +const struct session_impl session_logind; + struct logind_session { struct wlr_session base; @@ -335,7 +335,7 @@ static struct wlr_session *logind_session_start(struct wl_display *disp) { wlr_log(L_INFO, "Successfully loaded logind session"); - session->base.iface = &session_logind_iface; + session->base.impl = &session_logind; wl_signal_init(&session->base.device_paused); wl_signal_init(&session->base.device_resumed); return &session->base; @@ -350,7 +350,7 @@ error: return NULL; } -const struct session_interface session_logind_iface = { +const struct session_impl session_logind = { .start = logind_session_start, .finish = logind_session_finish, .open = logind_take_device, diff --git a/session/session.c b/session/session.c index 5df9fbd4..dbdd8156 100644 --- a/session/session.c +++ b/session/session.c @@ -1,22 +1,24 @@ #include - -#include #include +#include +#include #include "common/log.h" -#include "session/interface.h" -static const struct session_interface *ifaces[] = { +extern const struct session_impl session_logind; +extern const struct session_impl session_direct; + +static const struct session_impl *impls[] = { #ifdef HAS_SYSTEMD - &session_logind_iface, + &session_logind, #endif - &session_direct_iface, + &session_direct, NULL, }; struct wlr_session *wlr_session_start(struct wl_display *disp) { - const struct session_interface **iter; + const struct session_impl **iter; - for (iter = ifaces; *iter; ++iter) { + for (iter = impls; *iter; ++iter) { struct wlr_session *session = (*iter)->start(disp); if (session) { return session; @@ -28,19 +30,19 @@ struct wlr_session *wlr_session_start(struct wl_display *disp) { } void wlr_session_finish(struct wlr_session *session) { - session->iface->finish(session); + session->impl->finish(session); }; int wlr_session_open_file(struct wlr_session *restrict session, const char *restrict path) { - return session->iface->open(session, path); + return session->impl->open(session, path); } void wlr_session_close_file(struct wlr_session *session, int fd) { - session->iface->close(session, fd); + session->impl->close(session, fd); } bool wlr_session_change_vt(struct wlr_session *session, int vt) { - return session->iface->change_vt(session, vt); + return session->impl->change_vt(session, vt); } -- cgit v1.2.3