From f4a7e029fa5bdea9e2be51d75c40b789d795e3dc Mon Sep 17 00:00:00 2001 From: Junghoon Date: Tue, 28 Jul 2015 13:37:12 +0900 Subject: [PATCH] drm: fbdev: separate libinput creation code from drm & fbdev backends Change-Id: Ib3b4fc3b26ccaedd1e86e8ab52c6d72290e03e4e --- configure.ac | 2 +- src/lib/drm/drm-common.c | 25 +++---------------------- src/lib/drm/drm-internal.h | 1 - src/lib/drm/pepper-drm.h | 4 +++- src/lib/fbdev/fbdev-common.c | 25 +++---------------------- src/lib/fbdev/fbdev-internal.h | 1 - src/lib/fbdev/pepper-fbdev.h | 4 +++- src/samples/drm-backend.c | 23 ++++++++++++++++++++++- src/samples/fbdev-backend.c | 23 ++++++++++++++++++++++- 9 files changed, 57 insertions(+), 51 deletions(-) diff --git a/configure.ac b/configure.ac index 332fca1..5e80afa 100644 --- a/configure.ac +++ b/configure.ac @@ -155,7 +155,7 @@ AC_SUBST(DOCTOR_CFLAGS) AC_SUBST(DOCTOR_LIBS) # sample -SAMPLES_REQUIRES="wayland-server wayland-client" +SAMPLES_REQUIRES="wayland-server wayland-client libudev" PKG_CHECK_MODULES(SAMPLES, $[SAMPLES_REQUIRES]) SAMPLES_CFLAGS="$PEPPER_DIR $PEPPER_DESKTOP_SHELL_DIR $PEPPER_RENDER_DIR $SAMPLES_CFLAGS" diff --git a/src/lib/drm/drm-common.c b/src/lib/drm/drm-common.c index 2088bac..967c971 100644 --- a/src/lib/drm/drm-common.c +++ b/src/lib/drm/drm-common.c @@ -6,7 +6,8 @@ #include "drm-internal.h" PEPPER_API pepper_drm_t * -pepper_drm_create(pepper_compositor_t *compositor, const char *device, const char *renderer) +pepper_drm_create(pepper_compositor_t *compositor, struct udev *udev, + const char *device, const char *renderer) { pepper_drm_t *drm; @@ -17,22 +18,8 @@ pepper_drm_create(pepper_compositor_t *compositor, const char *device, const cha goto error; } - drm->udev = udev_new(); - if (!drm->udev) - { - PEPPER_ERROR("Failed to create udev context in %s\n", __FUNCTION__); - goto error; - } - drm->compositor = compositor; - drm->input = pepper_libinput_create(compositor, drm->udev); - - if (!drm->input) - { - PEPPER_ERROR("Failed to create pepper_libinput in %s\n", __FUNCTION__); - goto error; - } - + drm->udev = udev; wl_list_init(&drm->output_list); if (!pepper_drm_output_create(drm, renderer)) @@ -85,11 +72,5 @@ pepper_drm_destroy(pepper_drm_t *drm) if (drm->drm_fd) close(drm->drm_fd); - if (drm->input) - pepper_libinput_destroy(drm->input); - - if (drm->udev) - udev_unref(drm->udev); - free(drm); } diff --git a/src/lib/drm/drm-internal.h b/src/lib/drm/drm-internal.h index e17678f..56f2901 100644 --- a/src/lib/drm/drm-internal.h +++ b/src/lib/drm/drm-internal.h @@ -22,7 +22,6 @@ typedef struct drm_fb drm_fb_t; struct pepper_drm { pepper_compositor_t *compositor; - pepper_libinput_t *input; struct wl_list output_list; diff --git a/src/lib/drm/pepper-drm.h b/src/lib/drm/pepper-drm.h index ffde779..1ad4681 100644 --- a/src/lib/drm/pepper-drm.h +++ b/src/lib/drm/pepper-drm.h @@ -1,6 +1,7 @@ #ifndef PEPPER_DRM_H #define PEPPER_DRM_H +#include #include #ifdef __cplusplus @@ -10,7 +11,8 @@ extern "C" { typedef struct pepper_drm pepper_drm_t; PEPPER_API pepper_drm_t * -pepper_drm_create(pepper_compositor_t *compositor, const char *device, const char *renderer); +pepper_drm_create(pepper_compositor_t *compositor, struct udev *udev, + const char *device, const char *renderer); PEPPER_API void pepper_drm_destroy(pepper_drm_t *drm); diff --git a/src/lib/fbdev/fbdev-common.c b/src/lib/fbdev/fbdev-common.c index cce211c..da860c5 100644 --- a/src/lib/fbdev/fbdev-common.c +++ b/src/lib/fbdev/fbdev-common.c @@ -5,7 +5,8 @@ #include "fbdev-internal.h" PEPPER_API pepper_fbdev_t * -pepper_fbdev_create(pepper_compositor_t *compositor, const char *device, const char *renderer) +pepper_fbdev_create(pepper_compositor_t *compositor, struct udev *udev, + const char *device, const char *renderer) { pepper_fbdev_t *fbdev; @@ -23,22 +24,8 @@ pepper_fbdev_create(pepper_compositor_t *compositor, const char *device, const c goto error; } - fbdev->udev = udev_new(); - if (!fbdev->udev) - { - PEPPER_ERROR("Failed to create udev context in %s\n", __FUNCTION__); - goto error; - } - fbdev->compositor = compositor; - fbdev->input = pepper_libinput_create(compositor, fbdev->udev); - - if (!fbdev->input) - { - PEPPER_ERROR("Failed to create pepper_libinput in %s\n", __FUNCTION__); - goto error; - } - + fbdev->udev = udev; wl_list_init(&fbdev->output_list); if (!pepper_fbdev_output_create(fbdev, renderer)) @@ -70,11 +57,5 @@ pepper_fbdev_destroy(pepper_fbdev_t *fbdev) pepper_fbdev_output_destroy(output); } - if (fbdev->input) - pepper_libinput_destroy(fbdev->input); - - if (fbdev->udev) - udev_unref(fbdev->udev); - free(fbdev); } diff --git a/src/lib/fbdev/fbdev-internal.h b/src/lib/fbdev/fbdev-internal.h index 3d9f3f6..6104796 100644 --- a/src/lib/fbdev/fbdev-internal.h +++ b/src/lib/fbdev/fbdev-internal.h @@ -18,7 +18,6 @@ typedef struct fbdev_output fbdev_output_t; struct pepper_fbdev { pepper_compositor_t *compositor; - pepper_libinput_t *input; struct wl_list output_list; diff --git a/src/lib/fbdev/pepper-fbdev.h b/src/lib/fbdev/pepper-fbdev.h index 5652a2c..e8898b9 100644 --- a/src/lib/fbdev/pepper-fbdev.h +++ b/src/lib/fbdev/pepper-fbdev.h @@ -1,6 +1,7 @@ #ifndef PEPPER_FBDEV_H #define PEPPER_FBDEV_H +#include #include #ifdef __cplusplus @@ -10,7 +11,8 @@ extern "C" { typedef struct pepper_fbdev pepper_fbdev_t; PEPPER_API pepper_fbdev_t * -pepper_fbdev_create(pepper_compositor_t *compositor, const char *device, const char *renderer); +pepper_fbdev_create(pepper_compositor_t *compositor, struct udev *udev, + const char *device, const char *renderer); PEPPER_API void pepper_fbdev_destroy(pepper_fbdev_t *fbdev); diff --git a/src/samples/drm-backend.c b/src/samples/drm-backend.c index ccd179f..5e8804f 100644 --- a/src/samples/drm-backend.c +++ b/src/samples/drm-backend.c @@ -2,7 +2,10 @@ #include #include +#include + #include +#include #include #include @@ -44,6 +47,10 @@ main(int argc, char **argv) { pepper_compositor_t *compositor = NULL; pepper_drm_t *drm = NULL; + pepper_libinput_t *input = NULL; + + struct udev *udev = NULL; + struct wl_display *display = NULL; struct wl_event_loop *loop = NULL; struct wl_event_source *sigint = NULL; @@ -64,7 +71,15 @@ main(int argc, char **argv) if (!compositor) goto cleanup; - drm = pepper_drm_create(compositor, ""/*device*/, "gl"/*renderer*/); + udev = udev_new(); + if (!udev) + goto cleanup; + + input = pepper_libinput_create(compositor, udev); + if (!input) + goto cleanup; + + drm = pepper_drm_create(compositor, udev, ""/*device*/, "pixman"/*renderer*/); if (!drm) goto cleanup; @@ -90,6 +105,12 @@ cleanup: if (drm) pepper_drm_destroy(drm); + if (input) + pepper_libinput_destroy(input); + + if (udev) + udev_unref(udev); + if (compositor) pepper_compositor_destroy(compositor); diff --git a/src/samples/fbdev-backend.c b/src/samples/fbdev-backend.c index c2f891d..a2cfc6f 100644 --- a/src/samples/fbdev-backend.c +++ b/src/samples/fbdev-backend.c @@ -2,7 +2,10 @@ #include #include +#include + #include +#include #include #include @@ -44,6 +47,10 @@ main(int argc, char **argv) { pepper_compositor_t *compositor = NULL; pepper_fbdev_t *fbdev = NULL; + pepper_libinput_t *input = NULL; + + struct udev *udev = NULL; + struct wl_display *display = NULL; struct wl_event_loop *loop = NULL; struct wl_event_source *sigint = NULL; @@ -66,7 +73,15 @@ main(int argc, char **argv) if (!compositor) goto cleanup; - fbdev = pepper_fbdev_create(compositor, "", "pixman"); + udev = udev_new(); + if (!udev) + goto cleanup; + + input = pepper_libinput_create(compositor, udev); + if (!input) + goto cleanup; + + fbdev = pepper_fbdev_create(compositor, udev, "", "pixman"); if (!fbdev) goto cleanup; @@ -92,6 +107,12 @@ cleanup: if (fbdev) pepper_fbdev_destroy(fbdev); + if (input) + pepper_libinput_destroy(input); + + if (udev) + udev_unref(udev); + if (compositor) pepper_compositor_destroy(compositor); -- 2.7.4