Changed events to use wayland functions.

This commit is contained in:
Scott Anderson 2017-05-02 14:08:34 +12:00
parent 562d43a5ec
commit 115d4ae637
8 changed files with 127 additions and 197 deletions

View file

@ -6,6 +6,7 @@
#include <EGL/egl.h>
#include <gbm.h>
#include <libudev.h>
#include <wayland-server.h>
#include "session.h"
#include "udev.h"
@ -16,10 +17,18 @@ struct wlr_drm_backend {
int fd;
bool paused;
// Priority Queue (Max-heap)
size_t event_cap;
size_t event_len;
struct wlr_drm_event *events;
struct wl_event_loop *event_loop;
struct {
struct wl_event_source *drm;
struct wl_event_source *udev;
} event_src;
struct {
struct wl_signal display_add;
struct wl_signal display_rem;
struct wl_signal display_render;
} signals;
size_t display_len;
struct wlr_drm_display *displays;

View file

@ -1,25 +0,0 @@
#ifndef EVENT_H
#define EVENT_H
#include <stdbool.h>
#include "drm.h"
enum wlr_drm_event_type {
DRM_EV_NONE,
DRM_EV_RENDER,
DRM_EV_DISPLAY_REM,
DRM_EV_DISPLAY_ADD,
};
struct wlr_drm_event {
enum wlr_drm_event_type type;
struct wlr_drm_display *display;
};
struct wlr_drm_backend;
bool wlr_drm_get_event(struct wlr_drm_backend *backend,
struct wlr_drm_event *restrict ret);
bool wlr_drm_add_event(struct wlr_drm_backend *backend,
struct wlr_drm_display *disp, enum wlr_drm_event_type type);
#endif

View file

@ -8,15 +8,14 @@
struct wlr_udev {
struct udev *udev;
struct udev_monitor *mon;
int mon_fd;
char *drm_path;
};
bool wlr_udev_init(struct wlr_udev *udev);
struct wlr_drm_backend;
bool wlr_udev_init(struct wlr_drm_backend *backend);
void wlr_udev_free(struct wlr_udev *udev);
int wlr_udev_find_gpu(struct wlr_udev *udev, struct wlr_session *session);
struct wlr_drm_backend;
void wlr_udev_event(struct wlr_drm_backend *backend);
#endif