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"
#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;
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))
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);
}
struct pepper_drm
{
pepper_compositor_t *compositor;
- pepper_libinput_t *input;
struct wl_list output_list;
#ifndef PEPPER_DRM_H
#define PEPPER_DRM_H
+#include <libudev.h>
#include <pepper.h>
#ifdef __cplusplus
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);
#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;
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))
pepper_fbdev_output_destroy(output);
}
- if (fbdev->input)
- pepper_libinput_destroy(fbdev->input);
-
- if (fbdev->udev)
- udev_unref(fbdev->udev);
-
free(fbdev);
}
struct pepper_fbdev
{
pepper_compositor_t *compositor;
- pepper_libinput_t *input;
struct wl_list output_list;
#ifndef PEPPER_FBDEV_H
#define PEPPER_FBDEV_H
+#include <libudev.h>
#include <pepper.h>
#ifdef __cplusplus
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);
#include <stdlib.h>
#include <signal.h>
+#include <libudev.h>
+
#include <pepper.h>
+#include <pepper-libinput.h>
#include <pepper-drm.h>
#include <pepper-desktop-shell.h>
{
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;
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;
if (drm)
pepper_drm_destroy(drm);
+ if (input)
+ pepper_libinput_destroy(input);
+
+ if (udev)
+ udev_unref(udev);
+
if (compositor)
pepper_compositor_destroy(compositor);
#include <stdlib.h>
#include <signal.h>
+#include <libudev.h>
+
#include <pepper.h>
+#include <pepper-libinput.h>
#include <pepper-fbdev.h>
#include <pepper-desktop-shell.h>
{
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;
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;
if (fbdev)
pepper_fbdev_destroy(fbdev);
+ if (input)
+ pepper_libinput_destroy(input);
+
+ if (udev)
+ udev_unref(udev);
+
if (compositor)
pepper_compositor_destroy(compositor);