Remove wlr_ prefix from local symbols
This commit is contained in:
parent
097561d6bf
commit
b0d99f5c67
|
@ -237,7 +237,7 @@ static uint32_t atomic_crtc_get_gamma_size(struct wlr_drm_backend *drm,
|
||||||
return legacy_iface.crtc_get_gamma_size(drm, crtc);
|
return legacy_iface.crtc_get_gamma_size(drm, crtc);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!wlr_drm_get_prop(drm->fd, crtc->id, crtc->props.gamma_lut_size,
|
if (!drm_get_prop(drm->fd, crtc->id, crtc->props.gamma_lut_size,
|
||||||
&gamma_lut_size)) {
|
&gamma_lut_size)) {
|
||||||
wlr_log(L_ERROR, "Unable to get gamma lut size");
|
wlr_log(L_ERROR, "Unable to get gamma lut size");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
static bool wlr_drm_backend_start(struct wlr_backend *backend) {
|
static bool wlr_drm_backend_start(struct wlr_backend *backend) {
|
||||||
struct wlr_drm_backend *drm = (struct wlr_drm_backend *)backend;
|
struct wlr_drm_backend *drm = (struct wlr_drm_backend *)backend;
|
||||||
wlr_drm_scan_connectors(drm);
|
drm_scan_connectors(drm);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ static void wlr_drm_backend_destroy(struct wlr_backend *backend) {
|
||||||
|
|
||||||
struct wlr_drm_backend *drm = (struct wlr_drm_backend *)backend;
|
struct wlr_drm_backend *drm = (struct wlr_drm_backend *)backend;
|
||||||
|
|
||||||
wlr_drm_restore_outputs(drm);
|
drm_restore_outputs(drm);
|
||||||
|
|
||||||
struct wlr_drm_connector *conn, *next;
|
struct wlr_drm_connector *conn, *next;
|
||||||
wl_list_for_each_safe(conn, next, &drm->outputs, link) {
|
wl_list_for_each_safe(conn, next, &drm->outputs, link) {
|
||||||
|
@ -41,8 +41,8 @@ static void wlr_drm_backend_destroy(struct wlr_backend *backend) {
|
||||||
wl_list_remove(&drm->session_signal.link);
|
wl_list_remove(&drm->session_signal.link);
|
||||||
wl_list_remove(&drm->drm_invalidated.link);
|
wl_list_remove(&drm->drm_invalidated.link);
|
||||||
|
|
||||||
wlr_drm_resources_free(drm);
|
drm_resources_finish(drm);
|
||||||
wlr_drm_renderer_finish(&drm->renderer);
|
drm_renderer_finish(&drm->renderer);
|
||||||
wlr_session_close_file(drm->session, drm->fd);
|
wlr_session_close_file(drm->session, drm->fd);
|
||||||
wl_event_source_remove(drm->drm_event);
|
wl_event_source_remove(drm->drm_event);
|
||||||
free(drm);
|
free(drm);
|
||||||
|
@ -71,14 +71,14 @@ static void session_signal(struct wl_listener *listener, void *data) {
|
||||||
|
|
||||||
if (session->active) {
|
if (session->active) {
|
||||||
wlr_log(L_INFO, "DRM fd resumed");
|
wlr_log(L_INFO, "DRM fd resumed");
|
||||||
wlr_drm_scan_connectors(drm);
|
drm_scan_connectors(drm);
|
||||||
|
|
||||||
struct wlr_drm_connector *conn;
|
struct wlr_drm_connector *conn;
|
||||||
wl_list_for_each(conn, &drm->outputs, link){
|
wl_list_for_each(conn, &drm->outputs, link){
|
||||||
if (conn->output.enabled) {
|
if (conn->output.enabled) {
|
||||||
wlr_output_set_mode(&conn->output, conn->output.current_mode);
|
wlr_output_set_mode(&conn->output, conn->output.current_mode);
|
||||||
} else {
|
} else {
|
||||||
wlr_drm_connector_enable(&conn->output, false);
|
drm_connector_enable(&conn->output, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!conn->crtc) {
|
if (!conn->crtc) {
|
||||||
|
@ -104,7 +104,7 @@ static void drm_invalidated(struct wl_listener *listener, void *data) {
|
||||||
wlr_log(L_DEBUG, "%s invalidated", name);
|
wlr_log(L_DEBUG, "%s invalidated", name);
|
||||||
free(name);
|
free(name);
|
||||||
|
|
||||||
wlr_drm_scan_connectors(drm);
|
drm_scan_connectors(drm);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void handle_display_destroy(struct wl_listener *listener, void *data) {
|
static void handle_display_destroy(struct wl_listener *listener, void *data) {
|
||||||
|
@ -144,7 +144,7 @@ struct wlr_backend *wlr_drm_backend_create(struct wl_display *display,
|
||||||
struct wl_event_loop *event_loop = wl_display_get_event_loop(display);
|
struct wl_event_loop *event_loop = wl_display_get_event_loop(display);
|
||||||
|
|
||||||
drm->drm_event = wl_event_loop_add_fd(event_loop, drm->fd,
|
drm->drm_event = wl_event_loop_add_fd(event_loop, drm->fd,
|
||||||
WL_EVENT_READABLE, wlr_drm_event, NULL);
|
WL_EVENT_READABLE, drm_event, NULL);
|
||||||
if (!drm->drm_event) {
|
if (!drm->drm_event) {
|
||||||
wlr_log(L_ERROR, "Failed to create DRM event source");
|
wlr_log(L_ERROR, "Failed to create DRM event source");
|
||||||
goto error_fd;
|
goto error_fd;
|
||||||
|
@ -153,15 +153,15 @@ struct wlr_backend *wlr_drm_backend_create(struct wl_display *display,
|
||||||
drm->session_signal.notify = session_signal;
|
drm->session_signal.notify = session_signal;
|
||||||
wl_signal_add(&session->session_signal, &drm->session_signal);
|
wl_signal_add(&session->session_signal, &drm->session_signal);
|
||||||
|
|
||||||
if (!wlr_drm_check_features(drm)) {
|
if (!drm_check_features(drm)) {
|
||||||
goto error_event;
|
goto error_event;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!wlr_drm_resources_init(drm)) {
|
if (!drm_resources_init(drm)) {
|
||||||
goto error_event;
|
goto error_event;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!wlr_drm_renderer_init(drm, &drm->renderer)) {
|
if (!drm_renderer_init(drm, &drm->renderer)) {
|
||||||
wlr_log(L_ERROR, "Failed to initialize renderer");
|
wlr_log(L_ERROR, "Failed to initialize renderer");
|
||||||
goto error_event;
|
goto error_event;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
#include "backend/drm/util.h"
|
#include "backend/drm/util.h"
|
||||||
#include "util/signal.h"
|
#include "util/signal.h"
|
||||||
|
|
||||||
bool wlr_drm_check_features(struct wlr_drm_backend *drm) {
|
bool drm_check_features(struct wlr_drm_backend *drm) {
|
||||||
if (drmSetClientCap(drm->fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1)) {
|
if (drmSetClientCap(drm->fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1)) {
|
||||||
wlr_log(L_ERROR, "DRM universal planes unsupported");
|
wlr_log(L_ERROR, "DRM universal planes unsupported");
|
||||||
return false;
|
return false;
|
||||||
|
@ -87,8 +87,8 @@ static bool init_planes(struct wlr_drm_backend *drm) {
|
||||||
p->possible_crtcs = plane->possible_crtcs;
|
p->possible_crtcs = plane->possible_crtcs;
|
||||||
uint64_t type;
|
uint64_t type;
|
||||||
|
|
||||||
if (!wlr_drm_get_plane_props(drm->fd, p->id, &p->props) ||
|
if (!drm_get_plane_props(drm->fd, p->id, &p->props) ||
|
||||||
!wlr_drm_get_prop(drm->fd, p->id, p->props.type, &type)) {
|
!drm_get_prop(drm->fd, p->id, p->props.type, &type)) {
|
||||||
drmModeFreePlane(plane);
|
drmModeFreePlane(plane);
|
||||||
goto error_planes;
|
goto error_planes;
|
||||||
}
|
}
|
||||||
|
@ -122,7 +122,7 @@ error_res:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wlr_drm_resources_init(struct wlr_drm_backend *drm) {
|
bool drm_resources_init(struct wlr_drm_backend *drm) {
|
||||||
drmModeRes *res = drmModeGetResources(drm->fd);
|
drmModeRes *res = drmModeGetResources(drm->fd);
|
||||||
if (!res) {
|
if (!res) {
|
||||||
wlr_log_errno(L_ERROR, "Failed to get DRM resources");
|
wlr_log_errno(L_ERROR, "Failed to get DRM resources");
|
||||||
|
@ -142,7 +142,7 @@ bool wlr_drm_resources_init(struct wlr_drm_backend *drm) {
|
||||||
struct wlr_drm_crtc *crtc = &drm->crtcs[i];
|
struct wlr_drm_crtc *crtc = &drm->crtcs[i];
|
||||||
crtc->id = res->crtcs[i];
|
crtc->id = res->crtcs[i];
|
||||||
crtc->legacy_crtc = drmModeGetCrtc(drm->fd, crtc->id);
|
crtc->legacy_crtc = drmModeGetCrtc(drm->fd, crtc->id);
|
||||||
wlr_drm_get_crtc_props(drm->fd, crtc->id, &crtc->props);
|
drm_get_crtc_props(drm->fd, crtc->id, &crtc->props);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!init_planes(drm)) {
|
if (!init_planes(drm)) {
|
||||||
|
@ -160,7 +160,7 @@ error_res:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wlr_drm_resources_free(struct wlr_drm_backend *drm) {
|
void drm_resources_finish(struct wlr_drm_backend *drm) {
|
||||||
if (!drm) {
|
if (!drm) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -187,13 +187,13 @@ void wlr_drm_resources_free(struct wlr_drm_backend *drm) {
|
||||||
free(drm->planes);
|
free(drm->planes);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool wlr_drm_connector_make_current(struct wlr_output *output,
|
static bool drm_connector_make_current(struct wlr_output *output,
|
||||||
int *buffer_age) {
|
int *buffer_age) {
|
||||||
struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
|
struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
|
||||||
return wlr_drm_surface_make_current(&conn->crtc->primary->surf, buffer_age);
|
return drm_surface_make_current(&conn->crtc->primary->surf, buffer_age);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool wlr_drm_connector_swap_buffers(struct wlr_output *output,
|
static bool drm_connector_swap_buffers(struct wlr_output *output,
|
||||||
pixman_region32_t *damage) {
|
pixman_region32_t *damage) {
|
||||||
struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
|
struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
|
||||||
struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend;
|
struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend;
|
||||||
|
@ -207,9 +207,9 @@ static bool wlr_drm_connector_swap_buffers(struct wlr_output *output,
|
||||||
}
|
}
|
||||||
struct wlr_drm_plane *plane = crtc->primary;
|
struct wlr_drm_plane *plane = crtc->primary;
|
||||||
|
|
||||||
struct gbm_bo *bo = wlr_drm_surface_swap_buffers(&plane->surf, damage);
|
struct gbm_bo *bo = drm_surface_swap_buffers(&plane->surf, damage);
|
||||||
if (drm->parent) {
|
if (drm->parent) {
|
||||||
bo = wlr_drm_surface_mgpu_copy(&plane->mgpu_surf, bo);
|
bo = drm_surface_mgpu_copy(&plane->mgpu_surf, bo);
|
||||||
}
|
}
|
||||||
uint32_t fb_id = get_fb_for_bo(bo);
|
uint32_t fb_id = get_fb_for_bo(bo);
|
||||||
|
|
||||||
|
@ -227,7 +227,7 @@ static bool wlr_drm_connector_swap_buffers(struct wlr_output *output,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void wlr_drm_connector_set_gamma(struct wlr_output *output,
|
static void drm_connector_set_gamma(struct wlr_output *output,
|
||||||
uint32_t size, uint16_t *r, uint16_t *g, uint16_t *b) {
|
uint32_t size, uint16_t *r, uint16_t *g, uint16_t *b) {
|
||||||
struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
|
struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
|
||||||
struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend;
|
struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend;
|
||||||
|
@ -242,7 +242,7 @@ static void wlr_drm_connector_set_gamma(struct wlr_output *output,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32_t wlr_drm_connector_get_gamma_size(struct wlr_output *output) {
|
static uint32_t drm_connector_get_gamma_size(struct wlr_output *output) {
|
||||||
struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
|
struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
|
||||||
struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend;
|
struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend;
|
||||||
|
|
||||||
|
@ -253,7 +253,7 @@ static uint32_t wlr_drm_connector_get_gamma_size(struct wlr_output *output) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wlr_drm_connector_start_renderer(struct wlr_drm_connector *conn) {
|
static void drm_connector_start_renderer(struct wlr_drm_connector *conn) {
|
||||||
if (conn->state != WLR_DRM_CONN_CONNECTED) {
|
if (conn->state != WLR_DRM_CONN_CONNECTED) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -265,7 +265,7 @@ void wlr_drm_connector_start_renderer(struct wlr_drm_connector *conn) {
|
||||||
}
|
}
|
||||||
struct wlr_drm_plane *plane = crtc->primary;
|
struct wlr_drm_plane *plane = crtc->primary;
|
||||||
|
|
||||||
struct gbm_bo *bo = wlr_drm_surface_get_front(
|
struct gbm_bo *bo = drm_surface_get_front(
|
||||||
drm->parent ? &plane->mgpu_surf : &plane->surf);
|
drm->parent ? &plane->mgpu_surf : &plane->surf);
|
||||||
uint32_t fb_id = get_fb_for_bo(bo);
|
uint32_t fb_id = get_fb_for_bo(bo);
|
||||||
|
|
||||||
|
@ -279,7 +279,7 @@ void wlr_drm_connector_start_renderer(struct wlr_drm_connector *conn) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void wlr_drm_connector_enable(struct wlr_output *output, bool enable) {
|
void drm_connector_enable(struct wlr_output *output, bool enable) {
|
||||||
struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
|
struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
|
||||||
if (conn->state != WLR_DRM_CONN_CONNECTED) {
|
if (conn->state != WLR_DRM_CONN_CONNECTED) {
|
||||||
return;
|
return;
|
||||||
|
@ -292,7 +292,7 @@ void wlr_drm_connector_enable(struct wlr_output *output, bool enable) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (enable) {
|
if (enable) {
|
||||||
wlr_drm_connector_start_renderer(conn);
|
drm_connector_start_renderer(conn);
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_output_update_enabled(&conn->output, enable);
|
wlr_output_update_enabled(&conn->output, enable);
|
||||||
|
@ -340,9 +340,9 @@ static void realloc_planes(struct wlr_drm_backend *drm, const uint32_t *crtc_in,
|
||||||
if (*old != new) {
|
if (*old != new) {
|
||||||
changed_outputs[crtc_res[i]] = true;
|
changed_outputs[crtc_res[i]] = true;
|
||||||
if (*old) {
|
if (*old) {
|
||||||
wlr_drm_surface_finish(&(*old)->surf);
|
drm_surface_finish(&(*old)->surf);
|
||||||
}
|
}
|
||||||
wlr_drm_surface_finish(&new->surf);
|
drm_surface_finish(&new->surf);
|
||||||
*old = new;
|
*old = new;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -461,7 +461,9 @@ error_conn:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool wlr_drm_connector_set_mode(struct wlr_output *output,
|
static void drm_connector_cleanup(struct wlr_drm_connector *conn);
|
||||||
|
|
||||||
|
static bool drm_connector_set_mode(struct wlr_output *output,
|
||||||
struct wlr_output_mode *mode) {
|
struct wlr_output_mode *mode) {
|
||||||
struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
|
struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
|
||||||
struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend;
|
struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend;
|
||||||
|
@ -513,28 +515,28 @@ static bool wlr_drm_connector_set_mode(struct wlr_output *output,
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!wlr_drm_plane_surfaces_init(crtc->primary, drm,
|
if (!drm_plane_surfaces_init(crtc->primary, drm,
|
||||||
mode->width, mode->height, GBM_FORMAT_XRGB8888)) {
|
mode->width, mode->height, GBM_FORMAT_XRGB8888)) {
|
||||||
wlr_log(L_ERROR, "Failed to initialize renderer for plane");
|
wlr_log(L_ERROR, "Failed to initialize renderer for plane");
|
||||||
goto error_conn;
|
goto error_conn;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_drm_connector_start_renderer(conn);
|
drm_connector_start_renderer(conn);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
error_conn:
|
error_conn:
|
||||||
wlr_drm_connector_cleanup(conn);
|
drm_connector_cleanup(conn);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void wlr_drm_connector_transform(struct wlr_output *output,
|
static void drm_connector_transform(struct wlr_output *output,
|
||||||
enum wl_output_transform transform) {
|
enum wl_output_transform transform) {
|
||||||
output->transform = transform;
|
output->transform = transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool wlr_drm_connector_set_cursor(struct wlr_output *output,
|
static bool drm_connector_set_cursor(struct wlr_output *output,
|
||||||
const uint8_t *buf, int32_t stride, uint32_t width, uint32_t height,
|
const uint8_t *buf, int32_t stride, uint32_t width, uint32_t height,
|
||||||
int32_t hotspot_x, int32_t hotspot_y, bool update_pixels) {
|
int32_t hotspot_x, int32_t hotspot_y, bool update_pixels) {
|
||||||
struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
|
struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
|
||||||
|
@ -570,7 +572,7 @@ static bool wlr_drm_connector_set_cursor(struct wlr_output *output,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!wlr_drm_surface_init(&plane->surf, renderer, w, h,
|
if (!drm_surface_init(&plane->surf, renderer, w, h,
|
||||||
GBM_FORMAT_ARGB8888, 0)) {
|
GBM_FORMAT_ARGB8888, 0)) {
|
||||||
wlr_log(L_ERROR, "Cannot allocate cursor resources");
|
wlr_log(L_ERROR, "Cannot allocate cursor resources");
|
||||||
return false;
|
return false;
|
||||||
|
@ -629,7 +631,7 @@ static bool wlr_drm_connector_set_cursor(struct wlr_output *output,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_drm_surface_make_current(&plane->surf, NULL);
|
drm_surface_make_current(&plane->surf, NULL);
|
||||||
|
|
||||||
struct wlr_renderer *rend = plane->surf.renderer->wlr_rend;
|
struct wlr_renderer *rend = plane->surf.renderer->wlr_rend;
|
||||||
|
|
||||||
|
@ -648,7 +650,7 @@ static bool wlr_drm_connector_set_cursor(struct wlr_output *output,
|
||||||
wlr_renderer_read_pixels(rend, WL_SHM_FORMAT_ARGB8888, bo_stride,
|
wlr_renderer_read_pixels(rend, WL_SHM_FORMAT_ARGB8888, bo_stride,
|
||||||
plane->surf.width, plane->surf.height, 0, 0, 0, 0, bo_data);
|
plane->surf.width, plane->surf.height, 0, 0, 0, 0, bo_data);
|
||||||
|
|
||||||
wlr_drm_surface_swap_buffers(&plane->surf, NULL);
|
drm_surface_swap_buffers(&plane->surf, NULL);
|
||||||
|
|
||||||
wlr_texture_destroy(texture);
|
wlr_texture_destroy(texture);
|
||||||
gbm_bo_unmap(plane->cursor_bo, bo_data);
|
gbm_bo_unmap(plane->cursor_bo, bo_data);
|
||||||
|
@ -666,7 +668,7 @@ static bool wlr_drm_connector_set_cursor(struct wlr_output *output,
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool wlr_drm_connector_move_cursor(struct wlr_output *output,
|
static bool drm_connector_move_cursor(struct wlr_output *output,
|
||||||
int x, int y) {
|
int x, int y) {
|
||||||
struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
|
struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
|
||||||
struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend;
|
struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend;
|
||||||
|
@ -703,25 +705,25 @@ static bool wlr_drm_connector_move_cursor(struct wlr_output *output,
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void wlr_drm_connector_destroy(struct wlr_output *output) {
|
static void drm_connector_destroy(struct wlr_output *output) {
|
||||||
struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
|
struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
|
||||||
wlr_drm_connector_cleanup(conn);
|
drm_connector_cleanup(conn);
|
||||||
wl_event_source_remove(conn->retry_pageflip);
|
wl_event_source_remove(conn->retry_pageflip);
|
||||||
wl_list_remove(&conn->link);
|
wl_list_remove(&conn->link);
|
||||||
free(conn);
|
free(conn);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct wlr_output_impl output_impl = {
|
static const struct wlr_output_impl output_impl = {
|
||||||
.enable = wlr_drm_connector_enable,
|
.enable = drm_connector_enable,
|
||||||
.set_mode = wlr_drm_connector_set_mode,
|
.set_mode = drm_connector_set_mode,
|
||||||
.transform = wlr_drm_connector_transform,
|
.transform = drm_connector_transform,
|
||||||
.set_cursor = wlr_drm_connector_set_cursor,
|
.set_cursor = drm_connector_set_cursor,
|
||||||
.move_cursor = wlr_drm_connector_move_cursor,
|
.move_cursor = drm_connector_move_cursor,
|
||||||
.destroy = wlr_drm_connector_destroy,
|
.destroy = drm_connector_destroy,
|
||||||
.make_current = wlr_drm_connector_make_current,
|
.make_current = drm_connector_make_current,
|
||||||
.swap_buffers = wlr_drm_connector_swap_buffers,
|
.swap_buffers = drm_connector_swap_buffers,
|
||||||
.set_gamma = wlr_drm_connector_set_gamma,
|
.set_gamma = drm_connector_set_gamma,
|
||||||
.get_gamma_size = wlr_drm_connector_get_gamma_size,
|
.get_gamma_size = drm_connector_get_gamma_size,
|
||||||
};
|
};
|
||||||
|
|
||||||
bool wlr_output_is_drm(struct wlr_output *output) {
|
bool wlr_output_is_drm(struct wlr_output *output) {
|
||||||
|
@ -731,7 +733,7 @@ bool wlr_output_is_drm(struct wlr_output *output) {
|
||||||
static int retry_pageflip(void *data) {
|
static int retry_pageflip(void *data) {
|
||||||
struct wlr_drm_connector *conn = data;
|
struct wlr_drm_connector *conn = data;
|
||||||
wlr_log(L_INFO, "%s: Retrying pageflip", conn->output.name);
|
wlr_log(L_INFO, "%s: Retrying pageflip", conn->output.name);
|
||||||
wlr_drm_connector_start_renderer(conn);
|
drm_connector_start_renderer(conn);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -744,7 +746,7 @@ static const int32_t subpixel_map[] = {
|
||||||
[DRM_MODE_SUBPIXEL_NONE] = WL_OUTPUT_SUBPIXEL_NONE,
|
[DRM_MODE_SUBPIXEL_NONE] = WL_OUTPUT_SUBPIXEL_NONE,
|
||||||
};
|
};
|
||||||
|
|
||||||
void wlr_drm_scan_connectors(struct wlr_drm_backend *drm) {
|
void drm_scan_connectors(struct wlr_drm_backend *drm) {
|
||||||
wlr_log(L_INFO, "Scanning DRM connectors");
|
wlr_log(L_INFO, "Scanning DRM connectors");
|
||||||
|
|
||||||
drmModeRes *res = drmModeGetResources(drm->fd);
|
drmModeRes *res = drmModeGetResources(drm->fd);
|
||||||
|
@ -834,10 +836,10 @@ void wlr_drm_scan_connectors(struct wlr_drm_backend *drm) {
|
||||||
wlr_conn->output.phys_width, wlr_conn->output.phys_height);
|
wlr_conn->output.phys_width, wlr_conn->output.phys_height);
|
||||||
wlr_conn->output.subpixel = subpixel_map[drm_conn->subpixel];
|
wlr_conn->output.subpixel = subpixel_map[drm_conn->subpixel];
|
||||||
|
|
||||||
wlr_drm_get_connector_props(drm->fd, wlr_conn->id, &wlr_conn->props);
|
drm_get_connector_props(drm->fd, wlr_conn->id, &wlr_conn->props);
|
||||||
|
|
||||||
size_t edid_len = 0;
|
size_t edid_len = 0;
|
||||||
uint8_t *edid = wlr_drm_get_prop_blob(drm->fd,
|
uint8_t *edid = drm_get_prop_blob(drm->fd,
|
||||||
wlr_conn->id, wlr_conn->props.edid, &edid_len);
|
wlr_conn->id, wlr_conn->props.edid, &edid_len);
|
||||||
parse_edid(&wlr_conn->output, edid_len, edid);
|
parse_edid(&wlr_conn->output, edid_len, edid);
|
||||||
free(edid);
|
free(edid);
|
||||||
|
@ -874,7 +876,7 @@ void wlr_drm_scan_connectors(struct wlr_drm_backend *drm) {
|
||||||
wlr_log(L_INFO, "'%s' disconnected", wlr_conn->output.name);
|
wlr_log(L_INFO, "'%s' disconnected", wlr_conn->output.name);
|
||||||
|
|
||||||
wlr_output_update_enabled(&wlr_conn->output, false);
|
wlr_output_update_enabled(&wlr_conn->output, false);
|
||||||
wlr_drm_connector_cleanup(wlr_conn);
|
drm_connector_cleanup(wlr_conn);
|
||||||
}
|
}
|
||||||
|
|
||||||
drmModeFreeEncoder(curr_enc);
|
drmModeFreeEncoder(curr_enc);
|
||||||
|
@ -892,7 +894,7 @@ void wlr_drm_scan_connectors(struct wlr_drm_backend *drm) {
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_INFO, "'%s' disappeared", conn->output.name);
|
wlr_log(L_INFO, "'%s' disappeared", conn->output.name);
|
||||||
wlr_drm_connector_cleanup(conn);
|
drm_connector_cleanup(conn);
|
||||||
|
|
||||||
drmModeFreeCrtc(conn->old_crtc);
|
drmModeFreeCrtc(conn->old_crtc);
|
||||||
wl_event_source_remove(conn->retry_pageflip);
|
wl_event_source_remove(conn->retry_pageflip);
|
||||||
|
@ -911,9 +913,9 @@ static void page_flip_handler(int fd, unsigned seq,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_drm_surface_post(&conn->crtc->primary->surf);
|
drm_surface_post(&conn->crtc->primary->surf);
|
||||||
if (drm->parent) {
|
if (drm->parent) {
|
||||||
wlr_drm_surface_post(&conn->crtc->primary->mgpu_surf);
|
drm_surface_post(&conn->crtc->primary->mgpu_surf);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (drm->session->active) {
|
if (drm->session->active) {
|
||||||
|
@ -921,7 +923,7 @@ static void page_flip_handler(int fd, unsigned seq,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int wlr_drm_event(int fd, uint32_t mask, void *data) {
|
int drm_event(int fd, uint32_t mask, void *data) {
|
||||||
drmEventContext event = {
|
drmEventContext event = {
|
||||||
.version = DRM_EVENT_CONTEXT_VERSION,
|
.version = DRM_EVENT_CONTEXT_VERSION,
|
||||||
.page_flip_handler = page_flip_handler,
|
.page_flip_handler = page_flip_handler,
|
||||||
|
@ -931,7 +933,7 @@ int wlr_drm_event(int fd, uint32_t mask, void *data) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wlr_drm_restore_outputs(struct wlr_drm_backend *drm) {
|
void drm_restore_outputs(struct wlr_drm_backend *drm) {
|
||||||
uint64_t to_close = (1 << wl_list_length(&drm->outputs)) - 1;
|
uint64_t to_close = (1 << wl_list_length(&drm->outputs)) - 1;
|
||||||
|
|
||||||
struct wlr_drm_connector *conn;
|
struct wlr_drm_connector *conn;
|
||||||
|
@ -944,7 +946,7 @@ void wlr_drm_restore_outputs(struct wlr_drm_backend *drm) {
|
||||||
time_t timeout = time(NULL) + 5;
|
time_t timeout = time(NULL) + 5;
|
||||||
|
|
||||||
while (to_close && time(NULL) < timeout) {
|
while (to_close && time(NULL) < timeout) {
|
||||||
wlr_drm_event(drm->fd, 0, NULL);
|
drm_event(drm->fd, 0, NULL);
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
struct wlr_drm_connector *conn;
|
struct wlr_drm_connector *conn;
|
||||||
wl_list_for_each(conn, &drm->outputs, link) {
|
wl_list_for_each(conn, &drm->outputs, link) {
|
||||||
|
@ -971,7 +973,7 @@ void wlr_drm_restore_outputs(struct wlr_drm_backend *drm) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void wlr_drm_connector_cleanup(struct wlr_drm_connector *conn) {
|
static void drm_connector_cleanup(struct wlr_drm_connector *conn) {
|
||||||
if (!conn) {
|
if (!conn) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -985,8 +987,8 @@ void wlr_drm_connector_cleanup(struct wlr_drm_connector *conn) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_drm_surface_finish(&crtc->planes[i]->surf);
|
drm_surface_finish(&crtc->planes[i]->surf);
|
||||||
wlr_drm_surface_finish(&crtc->planes[i]->mgpu_surf);
|
drm_surface_finish(&crtc->planes[i]->mgpu_surf);
|
||||||
if (crtc->planes[i]->id == 0) {
|
if (crtc->planes[i]->id == 0) {
|
||||||
free(crtc->planes[i]);
|
free(crtc->planes[i]);
|
||||||
crtc->planes[i] = NULL;
|
crtc->planes[i] = NULL;
|
||||||
|
|
|
@ -87,22 +87,22 @@ static bool scan_properties(int fd, uint32_t id, uint32_t type, uint32_t *result
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wlr_drm_get_connector_props(int fd, uint32_t id, union wlr_drm_connector_props *out) {
|
bool drm_get_connector_props(int fd, uint32_t id, union wlr_drm_connector_props *out) {
|
||||||
return scan_properties(fd, id, DRM_MODE_OBJECT_CONNECTOR, out->props,
|
return scan_properties(fd, id, DRM_MODE_OBJECT_CONNECTOR, out->props,
|
||||||
connector_info, sizeof(connector_info) / sizeof(connector_info[0]));
|
connector_info, sizeof(connector_info) / sizeof(connector_info[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wlr_drm_get_crtc_props(int fd, uint32_t id, union wlr_drm_crtc_props *out) {
|
bool drm_get_crtc_props(int fd, uint32_t id, union wlr_drm_crtc_props *out) {
|
||||||
return scan_properties(fd, id, DRM_MODE_OBJECT_CRTC, out->props,
|
return scan_properties(fd, id, DRM_MODE_OBJECT_CRTC, out->props,
|
||||||
crtc_info, sizeof(crtc_info) / sizeof(crtc_info[0]));
|
crtc_info, sizeof(crtc_info) / sizeof(crtc_info[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wlr_drm_get_plane_props(int fd, uint32_t id, union wlr_drm_plane_props *out) {
|
bool drm_get_plane_props(int fd, uint32_t id, union wlr_drm_plane_props *out) {
|
||||||
return scan_properties(fd, id, DRM_MODE_OBJECT_PLANE, out->props,
|
return scan_properties(fd, id, DRM_MODE_OBJECT_PLANE, out->props,
|
||||||
plane_info, sizeof(plane_info) / sizeof(plane_info[0]));
|
plane_info, sizeof(plane_info) / sizeof(plane_info[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wlr_drm_get_prop(int fd, uint32_t obj, uint32_t prop, uint64_t *ret) {
|
bool drm_get_prop(int fd, uint32_t obj, uint32_t prop, uint64_t *ret) {
|
||||||
drmModeObjectProperties *props = drmModeObjectGetProperties(fd, obj, DRM_MODE_OBJECT_ANY);
|
drmModeObjectProperties *props = drmModeObjectGetProperties(fd, obj, DRM_MODE_OBJECT_ANY);
|
||||||
if (!props) {
|
if (!props) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -122,9 +122,9 @@ bool wlr_drm_get_prop(int fd, uint32_t obj, uint32_t prop, uint64_t *ret) {
|
||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *wlr_drm_get_prop_blob(int fd, uint32_t obj, uint32_t prop, size_t *ret_len) {
|
void *drm_get_prop_blob(int fd, uint32_t obj, uint32_t prop, size_t *ret_len) {
|
||||||
uint64_t blob_id;
|
uint64_t blob_id;
|
||||||
if (!wlr_drm_get_prop(fd, obj, prop, &blob_id)) {
|
if (!drm_get_prop(fd, obj, prop, &blob_id)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
#define DRM_FORMAT_MOD_LINEAR 0
|
#define DRM_FORMAT_MOD_LINEAR 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool wlr_drm_renderer_init(struct wlr_drm_backend *drm,
|
bool drm_renderer_init(struct wlr_drm_backend *drm,
|
||||||
struct wlr_drm_renderer *renderer) {
|
struct wlr_drm_renderer *renderer) {
|
||||||
renderer->gbm = gbm_create_device(drm->fd);
|
renderer->gbm = gbm_create_device(drm->fd);
|
||||||
if (!renderer->gbm) {
|
if (!renderer->gbm) {
|
||||||
|
@ -47,7 +47,7 @@ error_gbm:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wlr_drm_renderer_finish(struct wlr_drm_renderer *renderer) {
|
void drm_renderer_finish(struct wlr_drm_renderer *renderer) {
|
||||||
if (!renderer) {
|
if (!renderer) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ void wlr_drm_renderer_finish(struct wlr_drm_renderer *renderer) {
|
||||||
gbm_device_destroy(renderer->gbm);
|
gbm_device_destroy(renderer->gbm);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wlr_drm_surface_init(struct wlr_drm_surface *surf,
|
bool drm_surface_init(struct wlr_drm_surface *surf,
|
||||||
struct wlr_drm_renderer *renderer, uint32_t width, uint32_t height,
|
struct wlr_drm_renderer *renderer, uint32_t width, uint32_t height,
|
||||||
uint32_t format, uint32_t flags) {
|
uint32_t format, uint32_t flags) {
|
||||||
if (surf->width == width && surf->height == height) {
|
if (surf->width == width && surf->height == height) {
|
||||||
|
@ -103,7 +103,7 @@ error_zero:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wlr_drm_surface_finish(struct wlr_drm_surface *surf) {
|
void drm_surface_finish(struct wlr_drm_surface *surf) {
|
||||||
if (!surf || !surf->renderer) {
|
if (!surf || !surf->renderer) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -123,12 +123,12 @@ void wlr_drm_surface_finish(struct wlr_drm_surface *surf) {
|
||||||
memset(surf, 0, sizeof(*surf));
|
memset(surf, 0, sizeof(*surf));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wlr_drm_surface_make_current(struct wlr_drm_surface *surf,
|
bool drm_surface_make_current(struct wlr_drm_surface *surf,
|
||||||
int *buffer_damage) {
|
int *buffer_damage) {
|
||||||
return wlr_egl_make_current(&surf->renderer->egl, surf->egl, buffer_damage);
|
return wlr_egl_make_current(&surf->renderer->egl, surf->egl, buffer_damage);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct gbm_bo *wlr_drm_surface_swap_buffers(struct wlr_drm_surface *surf,
|
struct gbm_bo *drm_surface_swap_buffers(struct wlr_drm_surface *surf,
|
||||||
pixman_region32_t *damage) {
|
pixman_region32_t *damage) {
|
||||||
if (surf->front) {
|
if (surf->front) {
|
||||||
gbm_surface_release_buffer(surf->gbm, surf->front);
|
gbm_surface_release_buffer(surf->gbm, surf->front);
|
||||||
|
@ -141,20 +141,20 @@ struct gbm_bo *wlr_drm_surface_swap_buffers(struct wlr_drm_surface *surf,
|
||||||
return surf->back;
|
return surf->back;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct gbm_bo *wlr_drm_surface_get_front(struct wlr_drm_surface *surf) {
|
struct gbm_bo *drm_surface_get_front(struct wlr_drm_surface *surf) {
|
||||||
if (surf->front) {
|
if (surf->front) {
|
||||||
return surf->front;
|
return surf->front;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_drm_surface_make_current(surf, NULL);
|
drm_surface_make_current(surf, NULL);
|
||||||
struct wlr_renderer *renderer = surf->renderer->wlr_rend;
|
struct wlr_renderer *renderer = surf->renderer->wlr_rend;
|
||||||
wlr_renderer_begin(renderer, surf->width, surf->height);
|
wlr_renderer_begin(renderer, surf->width, surf->height);
|
||||||
wlr_renderer_clear(renderer, (float[]){ 0.0, 0.0, 0.0, 1.0 });
|
wlr_renderer_clear(renderer, (float[]){ 0.0, 0.0, 0.0, 1.0 });
|
||||||
wlr_renderer_end(renderer);
|
wlr_renderer_end(renderer);
|
||||||
return wlr_drm_surface_swap_buffers(surf, NULL);
|
return drm_surface_swap_buffers(surf, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wlr_drm_surface_post(struct wlr_drm_surface *surf) {
|
void drm_surface_post(struct wlr_drm_surface *surf) {
|
||||||
if (surf->front) {
|
if (surf->front) {
|
||||||
gbm_surface_release_buffer(surf->gbm, surf->front);
|
gbm_surface_release_buffer(surf->gbm, surf->front);
|
||||||
surf->front = NULL;
|
surf->front = NULL;
|
||||||
|
@ -208,9 +208,9 @@ static struct wlr_texture *get_tex_for_bo(struct wlr_drm_renderer *renderer,
|
||||||
return tex->tex;
|
return tex->tex;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct gbm_bo *wlr_drm_surface_mgpu_copy(struct wlr_drm_surface *dest,
|
struct gbm_bo *drm_surface_mgpu_copy(struct wlr_drm_surface *dest,
|
||||||
struct gbm_bo *src) {
|
struct gbm_bo *src) {
|
||||||
wlr_drm_surface_make_current(dest, NULL);
|
drm_surface_make_current(dest, NULL);
|
||||||
|
|
||||||
struct wlr_texture *tex = get_tex_for_bo(dest->renderer, src);
|
struct wlr_texture *tex = get_tex_for_bo(dest->renderer, src);
|
||||||
assert(tex);
|
assert(tex);
|
||||||
|
@ -224,25 +224,25 @@ struct gbm_bo *wlr_drm_surface_mgpu_copy(struct wlr_drm_surface *dest,
|
||||||
wlr_render_texture_with_matrix(renderer, tex, mat, 1.0f);
|
wlr_render_texture_with_matrix(renderer, tex, mat, 1.0f);
|
||||||
wlr_renderer_end(renderer);
|
wlr_renderer_end(renderer);
|
||||||
|
|
||||||
return wlr_drm_surface_swap_buffers(dest, NULL);
|
return drm_surface_swap_buffers(dest, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wlr_drm_plane_surfaces_init(struct wlr_drm_plane *plane,
|
bool drm_plane_surfaces_init(struct wlr_drm_plane *plane,
|
||||||
struct wlr_drm_backend *drm, int32_t width, uint32_t height,
|
struct wlr_drm_backend *drm, int32_t width, uint32_t height,
|
||||||
uint32_t format) {
|
uint32_t format) {
|
||||||
if (!drm->parent) {
|
if (!drm->parent) {
|
||||||
return wlr_drm_surface_init(&plane->surf, &drm->renderer, width, height,
|
return drm_surface_init(&plane->surf, &drm->renderer, width, height,
|
||||||
format, GBM_BO_USE_SCANOUT);
|
format, GBM_BO_USE_SCANOUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!wlr_drm_surface_init(&plane->surf, &drm->parent->renderer,
|
if (!drm_surface_init(&plane->surf, &drm->parent->renderer,
|
||||||
width, height, format, GBM_BO_USE_LINEAR)) {
|
width, height, format, GBM_BO_USE_LINEAR)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!wlr_drm_surface_init(&plane->mgpu_surf, &drm->renderer,
|
if (!drm_surface_init(&plane->mgpu_surf, &drm->renderer,
|
||||||
width, height, format, GBM_BO_USE_SCANOUT)) {
|
width, height, format, GBM_BO_USE_SCANOUT)) {
|
||||||
wlr_drm_surface_finish(&plane->surf);
|
drm_surface_finish(&plane->surf);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ static int wlr_libinput_readable(int fd, uint32_t mask, void *_backend) {
|
||||||
}
|
}
|
||||||
struct libinput_event *event;
|
struct libinput_event *event;
|
||||||
while ((event = libinput_get_event(backend->libinput_context))) {
|
while ((event = libinput_get_event(backend->libinput_context))) {
|
||||||
wlr_libinput_event(backend, event);
|
libinput_handle_event(backend, event);
|
||||||
libinput_event_destroy(event);
|
libinput_event_destroy(event);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -86,7 +86,7 @@ static void handle_device_added(struct wlr_libinput_backend *backend,
|
||||||
if (!wlr_dev) {
|
if (!wlr_dev) {
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
wlr_dev->keyboard = wlr_libinput_keyboard_create(libinput_dev);
|
wlr_dev->keyboard = libinput_keyboard_create(libinput_dev);
|
||||||
if (!wlr_dev->keyboard) {
|
if (!wlr_dev->keyboard) {
|
||||||
free(wlr_dev);
|
free(wlr_dev);
|
||||||
goto fail;
|
goto fail;
|
||||||
|
@ -99,7 +99,7 @@ static void handle_device_added(struct wlr_libinput_backend *backend,
|
||||||
if (!wlr_dev) {
|
if (!wlr_dev) {
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
wlr_dev->pointer = wlr_libinput_pointer_create(libinput_dev);
|
wlr_dev->pointer = libinput_pointer_create(libinput_dev);
|
||||||
if (!wlr_dev->pointer) {
|
if (!wlr_dev->pointer) {
|
||||||
free(wlr_dev);
|
free(wlr_dev);
|
||||||
goto fail;
|
goto fail;
|
||||||
|
@ -112,7 +112,7 @@ static void handle_device_added(struct wlr_libinput_backend *backend,
|
||||||
if (!wlr_dev) {
|
if (!wlr_dev) {
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
wlr_dev->touch = wlr_libinput_touch_create(libinput_dev);
|
wlr_dev->touch = libinput_touch_create(libinput_dev);
|
||||||
if (!wlr_dev->touch) {
|
if (!wlr_dev->touch) {
|
||||||
free(wlr_dev);
|
free(wlr_dev);
|
||||||
goto fail;
|
goto fail;
|
||||||
|
@ -125,7 +125,7 @@ static void handle_device_added(struct wlr_libinput_backend *backend,
|
||||||
if (!wlr_dev) {
|
if (!wlr_dev) {
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
wlr_dev->tablet_tool = wlr_libinput_tablet_tool_create(libinput_dev);
|
wlr_dev->tablet_tool = libinput_tablet_tool_create(libinput_dev);
|
||||||
if (!wlr_dev->tablet_tool) {
|
if (!wlr_dev->tablet_tool) {
|
||||||
free(wlr_dev);
|
free(wlr_dev);
|
||||||
goto fail;
|
goto fail;
|
||||||
|
@ -138,7 +138,7 @@ static void handle_device_added(struct wlr_libinput_backend *backend,
|
||||||
if (!wlr_dev) {
|
if (!wlr_dev) {
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
wlr_dev->tablet_pad = wlr_libinput_tablet_pad_create(libinput_dev);
|
wlr_dev->tablet_pad = libinput_tablet_pad_create(libinput_dev);
|
||||||
if (!wlr_dev->tablet_pad) {
|
if (!wlr_dev->tablet_pad) {
|
||||||
free(wlr_dev);
|
free(wlr_dev);
|
||||||
goto fail;
|
goto fail;
|
||||||
|
@ -192,7 +192,7 @@ static void handle_device_removed(struct wlr_libinput_backend *backend,
|
||||||
free(wlr_devices);
|
free(wlr_devices);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wlr_libinput_event(struct wlr_libinput_backend *backend,
|
void libinput_handle_event(struct wlr_libinput_backend *backend,
|
||||||
struct libinput_event *event) {
|
struct libinput_event *event) {
|
||||||
assert(backend && event);
|
assert(backend && event);
|
||||||
struct libinput_device *libinput_dev = libinput_event_get_device(event);
|
struct libinput_device *libinput_dev = libinput_event_get_device(event);
|
||||||
|
|
|
@ -28,7 +28,7 @@ struct wlr_keyboard_impl impl = {
|
||||||
.led_update = wlr_libinput_keyboard_set_leds
|
.led_update = wlr_libinput_keyboard_set_leds
|
||||||
};
|
};
|
||||||
|
|
||||||
struct wlr_keyboard *wlr_libinput_keyboard_create(
|
struct wlr_keyboard *libinput_keyboard_create(
|
||||||
struct libinput_device *libinput_dev) {
|
struct libinput_device *libinput_dev) {
|
||||||
assert(libinput_dev);
|
assert(libinput_dev);
|
||||||
struct wlr_libinput_keyboard *wlr_libinput_kb;
|
struct wlr_libinput_keyboard *wlr_libinput_kb;
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#include "backend/libinput.h"
|
#include "backend/libinput.h"
|
||||||
#include "util/signal.h"
|
#include "util/signal.h"
|
||||||
|
|
||||||
struct wlr_pointer *wlr_libinput_pointer_create(
|
struct wlr_pointer *libinput_pointer_create(
|
||||||
struct libinput_device *libinput_dev) {
|
struct libinput_device *libinput_dev) {
|
||||||
assert(libinput_dev);
|
assert(libinput_dev);
|
||||||
struct wlr_pointer *wlr_pointer = calloc(1, sizeof(struct wlr_pointer));
|
struct wlr_pointer *wlr_pointer = calloc(1, sizeof(struct wlr_pointer));
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#include "backend/libinput.h"
|
#include "backend/libinput.h"
|
||||||
#include "util/signal.h"
|
#include "util/signal.h"
|
||||||
|
|
||||||
struct wlr_tablet_pad *wlr_libinput_tablet_pad_create(
|
struct wlr_tablet_pad *libinput_tablet_pad_create(
|
||||||
struct libinput_device *libinput_dev) {
|
struct libinput_device *libinput_dev) {
|
||||||
assert(libinput_dev);
|
assert(libinput_dev);
|
||||||
struct wlr_tablet_pad *wlr_tablet_pad = calloc(1, sizeof(struct wlr_tablet_pad));
|
struct wlr_tablet_pad *wlr_tablet_pad = calloc(1, sizeof(struct wlr_tablet_pad));
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#include "backend/libinput.h"
|
#include "backend/libinput.h"
|
||||||
#include "util/signal.h"
|
#include "util/signal.h"
|
||||||
|
|
||||||
struct wlr_tablet_tool *wlr_libinput_tablet_tool_create(
|
struct wlr_tablet_tool *libinput_tablet_tool_create(
|
||||||
struct libinput_device *libinput_dev) {
|
struct libinput_device *libinput_dev) {
|
||||||
assert(libinput_dev);
|
assert(libinput_dev);
|
||||||
struct wlr_tablet_tool *wlr_tablet_tool = calloc(1, sizeof(struct wlr_tablet_tool));
|
struct wlr_tablet_tool *wlr_tablet_tool = calloc(1, sizeof(struct wlr_tablet_tool));
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#include "backend/libinput.h"
|
#include "backend/libinput.h"
|
||||||
#include "util/signal.h"
|
#include "util/signal.h"
|
||||||
|
|
||||||
struct wlr_touch *wlr_libinput_touch_create(
|
struct wlr_touch *libinput_touch_create(
|
||||||
struct libinput_device *libinput_dev) {
|
struct libinput_device *libinput_dev) {
|
||||||
assert(libinput_dev);
|
assert(libinput_dev);
|
||||||
struct wlr_touch *wlr_touch = calloc(1, sizeof(struct wlr_touch));
|
struct wlr_touch *wlr_touch = calloc(1, sizeof(struct wlr_touch));
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <wlr/backend/drm.h>
|
||||||
#include <wlr/backend/interface.h>
|
#include <wlr/backend/interface.h>
|
||||||
#include <wlr/backend/session.h>
|
#include <wlr/backend/session.h>
|
||||||
#include <wlr/util/log.h>
|
#include <wlr/util/log.h>
|
||||||
#include "backend/drm/drm.h"
|
|
||||||
#include "backend/multi.h"
|
#include "backend/multi.h"
|
||||||
#include "util/signal.h"
|
#include "util/signal.h"
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ static bool wlr_wl_backend_start(struct wlr_backend *_backend) {
|
||||||
struct wlr_wl_backend *backend = (struct wlr_wl_backend *)_backend;
|
struct wlr_wl_backend *backend = (struct wlr_wl_backend *)_backend;
|
||||||
wlr_log(L_INFO, "Initializating wayland backend");
|
wlr_log(L_INFO, "Initializating wayland backend");
|
||||||
|
|
||||||
wlr_wl_registry_poll(backend);
|
wl_registry_poll(backend);
|
||||||
if (!backend->compositor || !backend->shell) {
|
if (!backend->compositor || !backend->shell) {
|
||||||
wlr_log_errno(L_ERROR, "Could not obtain retrieve required globals");
|
wlr_log_errno(L_ERROR, "Could not obtain retrieve required globals");
|
||||||
return false;
|
return false;
|
||||||
|
@ -126,7 +126,7 @@ bool wlr_backend_is_wl(struct wlr_backend *b) {
|
||||||
return b->impl == &backend_impl;
|
return b->impl == &backend_impl;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct wlr_wl_backend_output *wlr_wl_output_for_surface(
|
struct wlr_wl_backend_output *wl_output_for_surface(
|
||||||
struct wlr_wl_backend *backend, struct wl_surface *surface) {
|
struct wlr_wl_backend *backend, struct wl_surface *surface) {
|
||||||
struct wlr_wl_backend_output *output;
|
struct wlr_wl_backend_output *output;
|
||||||
wl_list_for_each(output, &backend->outputs, link) {
|
wl_list_for_each(output, &backend->outputs, link) {
|
||||||
|
@ -137,7 +137,7 @@ struct wlr_wl_backend_output *wlr_wl_output_for_surface(
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wlr_wl_output_layout_get_box(struct wlr_wl_backend *backend,
|
void wl_output_layout_get_box(struct wlr_wl_backend *backend,
|
||||||
struct wlr_box *box) {
|
struct wlr_box *box) {
|
||||||
int min_x = INT_MAX, min_y = INT_MAX;
|
int min_x = INT_MAX, min_y = INT_MAX;
|
||||||
int max_x = INT_MIN, max_y = INT_MIN;
|
int max_x = INT_MIN, max_y = INT_MIN;
|
||||||
|
|
|
@ -84,7 +84,7 @@ static bool wlr_wl_output_set_cursor(struct wlr_output *_output,
|
||||||
|
|
||||||
if (!update_pixels) {
|
if (!update_pixels) {
|
||||||
// Update hotspot without changing cursor image
|
// Update hotspot without changing cursor image
|
||||||
wlr_wl_output_update_cursor(output);
|
wl_output_update_cursor(output);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (!buf) {
|
if (!buf) {
|
||||||
|
@ -95,7 +95,7 @@ static bool wlr_wl_output_set_cursor(struct wlr_output *_output,
|
||||||
output->cursor.surface = NULL;
|
output->cursor.surface = NULL;
|
||||||
output->cursor.buf_size = 0;
|
output->cursor.buf_size = 0;
|
||||||
}
|
}
|
||||||
wlr_wl_output_update_cursor(output);
|
wl_output_update_cursor(output);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -153,7 +153,7 @@ static bool wlr_wl_output_set_cursor(struct wlr_output *_output,
|
||||||
wl_surface_damage(output->cursor.surface, 0, 0, width, height);
|
wl_surface_damage(output->cursor.surface, 0, 0, width, height);
|
||||||
wl_surface_commit(output->cursor.surface);
|
wl_surface_commit(output->cursor.surface);
|
||||||
|
|
||||||
wlr_wl_output_update_cursor(output);
|
wl_output_update_cursor(output);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -192,7 +192,7 @@ static void wlr_wl_output_destroy(struct wlr_output *wlr_output) {
|
||||||
free(output);
|
free(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wlr_wl_output_update_cursor(struct wlr_wl_backend_output *output) {
|
void wl_output_update_cursor(struct wlr_wl_backend_output *output) {
|
||||||
if (output->backend->pointer && output->enter_serial) {
|
if (output->backend->pointer && output->enter_serial) {
|
||||||
wl_pointer_set_cursor(output->backend->pointer, output->enter_serial,
|
wl_pointer_set_cursor(output->backend->pointer, output->enter_serial,
|
||||||
output->cursor.surface, output->cursor.hotspot_x,
|
output->cursor.surface, output->cursor.hotspot_x,
|
||||||
|
@ -200,7 +200,7 @@ void wlr_wl_output_update_cursor(struct wlr_wl_backend_output *output) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wlr_wl_output_move_cursor(struct wlr_output *_output, int x, int y) {
|
bool wl_output_move_cursor(struct wlr_output *_output, int x, int y) {
|
||||||
// TODO: only return true if x == current x and y == current y
|
// TODO: only return true if x == current x and y == current y
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -212,7 +212,7 @@ static struct wlr_output_impl output_impl = {
|
||||||
.make_current = wlr_wl_output_make_current,
|
.make_current = wlr_wl_output_make_current,
|
||||||
.swap_buffers = wlr_wl_output_swap_buffers,
|
.swap_buffers = wlr_wl_output_swap_buffers,
|
||||||
.set_cursor = wlr_wl_output_set_cursor,
|
.set_cursor = wlr_wl_output_set_cursor,
|
||||||
.move_cursor = wlr_wl_output_move_cursor,
|
.move_cursor = wl_output_move_cursor,
|
||||||
};
|
};
|
||||||
|
|
||||||
bool wlr_output_is_wl(struct wlr_output *wlr_output) {
|
bool wlr_output_is_wl(struct wlr_output *wlr_output) {
|
||||||
|
|
|
@ -48,7 +48,7 @@ static const struct wl_registry_listener registry_listener = {
|
||||||
.global_remove = registry_global_remove
|
.global_remove = registry_global_remove
|
||||||
};
|
};
|
||||||
|
|
||||||
void wlr_wl_registry_poll(struct wlr_wl_backend *backend) {
|
void wl_registry_poll(struct wlr_wl_backend *backend) {
|
||||||
wl_registry_add_listener(backend->registry, ®istry_listener, backend);
|
wl_registry_add_listener(backend->registry, ®istry_listener, backend);
|
||||||
wl_display_dispatch(backend->remote_display);
|
wl_display_dispatch(backend->remote_display);
|
||||||
wl_display_roundtrip(backend->remote_display);
|
wl_display_roundtrip(backend->remote_display);
|
||||||
|
|
|
@ -21,7 +21,7 @@ static void pointer_handle_enter(void *data, struct wl_pointer *wl_pointer,
|
||||||
assert(dev && dev->pointer);
|
assert(dev && dev->pointer);
|
||||||
struct wlr_wl_pointer *wlr_wl_pointer = (struct wlr_wl_pointer *)dev->pointer;
|
struct wlr_wl_pointer *wlr_wl_pointer = (struct wlr_wl_pointer *)dev->pointer;
|
||||||
struct wlr_wl_backend_output *output =
|
struct wlr_wl_backend_output *output =
|
||||||
wlr_wl_output_for_surface(wlr_wl_dev->backend, surface);
|
wl_output_for_surface(wlr_wl_dev->backend, surface);
|
||||||
if (!output) {
|
if (!output) {
|
||||||
// GNOME sends a pointer enter when the surface is being destroyed
|
// GNOME sends a pointer enter when the surface is being destroyed
|
||||||
return;
|
return;
|
||||||
|
@ -33,7 +33,7 @@ static void pointer_handle_enter(void *data, struct wl_pointer *wl_pointer,
|
||||||
&wlr_wl_pointer->output_destroy_listener);
|
&wlr_wl_pointer->output_destroy_listener);
|
||||||
wlr_wl_pointer->current_output = output;
|
wlr_wl_pointer->current_output = output;
|
||||||
output->enter_serial = serial;
|
output->enter_serial = serial;
|
||||||
wlr_wl_output_update_cursor(output);
|
wl_output_update_cursor(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pointer_handle_leave(void *data, struct wl_pointer *wl_pointer,
|
static void pointer_handle_leave(void *data, struct wl_pointer *wl_pointer,
|
||||||
|
@ -70,7 +70,7 @@ static void pointer_handle_motion(void *data, struct wl_pointer *wl_pointer,
|
||||||
box.y /= wlr_output->scale;
|
box.y /= wlr_output->scale;
|
||||||
|
|
||||||
struct wlr_box layout_box;
|
struct wlr_box layout_box;
|
||||||
wlr_wl_output_layout_get_box(wlr_wl_pointer->current_output->backend,
|
wl_output_layout_get_box(wlr_wl_pointer->current_output->backend,
|
||||||
&layout_box);
|
&layout_box);
|
||||||
|
|
||||||
double ox = wlr_output->lx / (double)layout_box.width;
|
double ox = wlr_output->lx / (double)layout_box.width;
|
||||||
|
|
|
@ -136,17 +136,12 @@ struct wlr_drm_connector {
|
||||||
struct wl_list link;
|
struct wl_list link;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool wlr_drm_check_features(struct wlr_drm_backend *drm);
|
bool drm_check_features(struct wlr_drm_backend *drm);
|
||||||
bool wlr_drm_resources_init(struct wlr_drm_backend *drm);
|
bool drm_resources_init(struct wlr_drm_backend *drm);
|
||||||
void wlr_drm_resources_free(struct wlr_drm_backend *drm);
|
void drm_resources_finish(struct wlr_drm_backend *drm);
|
||||||
void wlr_drm_restore_outputs(struct wlr_drm_backend *drm);
|
void drm_restore_outputs(struct wlr_drm_backend *drm);
|
||||||
void wlr_drm_connector_cleanup(struct wlr_drm_connector *conn);
|
void drm_scan_connectors(struct wlr_drm_backend *state);
|
||||||
void wlr_drm_scan_connectors(struct wlr_drm_backend *state);
|
int drm_event(int fd, uint32_t mask, void *data);
|
||||||
int wlr_drm_event(int fd, uint32_t mask, void *data);
|
void drm_connector_enable(struct wlr_output *output, bool enable);
|
||||||
void wlr_drm_connector_enable(struct wlr_output *output, bool enable);
|
|
||||||
|
|
||||||
void wlr_drm_connector_start_renderer(struct wlr_drm_connector *conn);
|
|
||||||
|
|
||||||
struct wlr_session *wlr_drm_backend_get_session(struct wlr_backend *backend);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -59,11 +59,12 @@ union wlr_drm_plane_props {
|
||||||
uint32_t props[12];
|
uint32_t props[12];
|
||||||
};
|
};
|
||||||
|
|
||||||
bool wlr_drm_get_connector_props(int fd, uint32_t id, union wlr_drm_connector_props *out);
|
bool drm_get_connector_props(int fd, uint32_t id,
|
||||||
bool wlr_drm_get_crtc_props(int fd, uint32_t id, union wlr_drm_crtc_props *out);
|
union wlr_drm_connector_props *out);
|
||||||
bool wlr_drm_get_plane_props(int fd, uint32_t id, union wlr_drm_plane_props *out);
|
bool drm_get_crtc_props(int fd, uint32_t id, union wlr_drm_crtc_props *out);
|
||||||
|
bool drm_get_plane_props(int fd, uint32_t id, union wlr_drm_plane_props *out);
|
||||||
|
|
||||||
bool wlr_drm_get_prop(int fd, uint32_t obj, uint32_t prop, uint64_t *ret);
|
bool drm_get_prop(int fd, uint32_t obj, uint32_t prop, uint64_t *ret);
|
||||||
void *wlr_drm_get_prop_blob(int fd, uint32_t obj, uint32_t prop, size_t *ret_len);
|
void *drm_get_prop_blob(int fd, uint32_t obj, uint32_t prop, size_t *ret_len);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -31,25 +31,25 @@ struct wlr_drm_surface {
|
||||||
struct gbm_bo *back;
|
struct gbm_bo *back;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool wlr_drm_renderer_init(struct wlr_drm_backend *drm,
|
bool drm_renderer_init(struct wlr_drm_backend *drm,
|
||||||
struct wlr_drm_renderer *renderer);
|
struct wlr_drm_renderer *renderer);
|
||||||
void wlr_drm_renderer_finish(struct wlr_drm_renderer *renderer);
|
void drm_renderer_finish(struct wlr_drm_renderer *renderer);
|
||||||
|
|
||||||
bool wlr_drm_surface_init(struct wlr_drm_surface *surf,
|
bool drm_surface_init(struct wlr_drm_surface *surf,
|
||||||
struct wlr_drm_renderer *renderer, uint32_t width, uint32_t height,
|
struct wlr_drm_renderer *renderer, uint32_t width, uint32_t height,
|
||||||
uint32_t format, uint32_t flags);
|
uint32_t format, uint32_t flags);
|
||||||
|
|
||||||
bool wlr_drm_plane_surfaces_init(struct wlr_drm_plane *plane,
|
bool drm_plane_surfaces_init(struct wlr_drm_plane *plane,
|
||||||
struct wlr_drm_backend *drm, int32_t width, uint32_t height,
|
struct wlr_drm_backend *drm, int32_t width, uint32_t height,
|
||||||
uint32_t format);
|
uint32_t format);
|
||||||
|
|
||||||
void wlr_drm_surface_finish(struct wlr_drm_surface *surf);
|
void drm_surface_finish(struct wlr_drm_surface *surf);
|
||||||
bool wlr_drm_surface_make_current(struct wlr_drm_surface *surf, int *buffer_age);
|
bool drm_surface_make_current(struct wlr_drm_surface *surf, int *buffer_age);
|
||||||
struct gbm_bo *wlr_drm_surface_swap_buffers(struct wlr_drm_surface *surf,
|
struct gbm_bo *drm_surface_swap_buffers(struct wlr_drm_surface *surf,
|
||||||
pixman_region32_t *damage);
|
pixman_region32_t *damage);
|
||||||
struct gbm_bo *wlr_drm_surface_get_front(struct wlr_drm_surface *surf);
|
struct gbm_bo *drm_surface_get_front(struct wlr_drm_surface *surf);
|
||||||
void wlr_drm_surface_post(struct wlr_drm_surface *surf);
|
void drm_surface_post(struct wlr_drm_surface *surf);
|
||||||
struct gbm_bo *wlr_drm_surface_mgpu_copy(struct wlr_drm_surface *dest,
|
struct gbm_bo *drm_surface_mgpu_copy(struct wlr_drm_surface *dest,
|
||||||
struct gbm_bo *src);
|
struct gbm_bo *src);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -31,19 +31,19 @@ struct wlr_libinput_input_device {
|
||||||
|
|
||||||
uint32_t usec_to_msec(uint64_t usec);
|
uint32_t usec_to_msec(uint64_t usec);
|
||||||
|
|
||||||
void wlr_libinput_event(struct wlr_libinput_backend *state,
|
void libinput_handle_event(struct wlr_libinput_backend *state,
|
||||||
struct libinput_event *event);
|
struct libinput_event *event);
|
||||||
|
|
||||||
struct wlr_input_device *get_appropriate_device(
|
struct wlr_input_device *get_appropriate_device(
|
||||||
enum wlr_input_device_type desired_type,
|
enum wlr_input_device_type desired_type,
|
||||||
struct libinput_device *device);
|
struct libinput_device *device);
|
||||||
|
|
||||||
struct wlr_keyboard *wlr_libinput_keyboard_create(
|
struct wlr_keyboard *libinput_keyboard_create(
|
||||||
struct libinput_device *device);
|
struct libinput_device *device);
|
||||||
void handle_keyboard_key(struct libinput_event *event,
|
void handle_keyboard_key(struct libinput_event *event,
|
||||||
struct libinput_device *device);
|
struct libinput_device *device);
|
||||||
|
|
||||||
struct wlr_pointer *wlr_libinput_pointer_create(
|
struct wlr_pointer *libinput_pointer_create(
|
||||||
struct libinput_device *device);
|
struct libinput_device *device);
|
||||||
void handle_pointer_motion(struct libinput_event *event,
|
void handle_pointer_motion(struct libinput_event *event,
|
||||||
struct libinput_device *device);
|
struct libinput_device *device);
|
||||||
|
@ -54,7 +54,7 @@ void handle_pointer_button(struct libinput_event *event,
|
||||||
void handle_pointer_axis(struct libinput_event *event,
|
void handle_pointer_axis(struct libinput_event *event,
|
||||||
struct libinput_device *device);
|
struct libinput_device *device);
|
||||||
|
|
||||||
struct wlr_touch *wlr_libinput_touch_create(
|
struct wlr_touch *libinput_touch_create(
|
||||||
struct libinput_device *device);
|
struct libinput_device *device);
|
||||||
void handle_touch_down(struct libinput_event *event,
|
void handle_touch_down(struct libinput_event *event,
|
||||||
struct libinput_device *device);
|
struct libinput_device *device);
|
||||||
|
@ -65,7 +65,7 @@ void handle_touch_motion(struct libinput_event *event,
|
||||||
void handle_touch_cancel(struct libinput_event *event,
|
void handle_touch_cancel(struct libinput_event *event,
|
||||||
struct libinput_device *device);
|
struct libinput_device *device);
|
||||||
|
|
||||||
struct wlr_tablet_tool *wlr_libinput_tablet_tool_create(
|
struct wlr_tablet_tool *libinput_tablet_tool_create(
|
||||||
struct libinput_device *device);
|
struct libinput_device *device);
|
||||||
void handle_tablet_tool_axis(struct libinput_event *event,
|
void handle_tablet_tool_axis(struct libinput_event *event,
|
||||||
struct libinput_device *device);
|
struct libinput_device *device);
|
||||||
|
@ -76,7 +76,7 @@ void handle_tablet_tool_tip(struct libinput_event *event,
|
||||||
void handle_tablet_tool_button(struct libinput_event *event,
|
void handle_tablet_tool_button(struct libinput_event *event,
|
||||||
struct libinput_device *device);
|
struct libinput_device *device);
|
||||||
|
|
||||||
struct wlr_tablet_pad *wlr_libinput_tablet_pad_create(
|
struct wlr_tablet_pad *libinput_tablet_pad_create(
|
||||||
struct libinput_device *device);
|
struct libinput_device *device);
|
||||||
void handle_tablet_pad_button(struct libinput_event *event,
|
void handle_tablet_pad_button(struct libinput_event *event,
|
||||||
struct libinput_device *device);
|
struct libinput_device *device);
|
||||||
|
|
|
@ -74,11 +74,11 @@ struct wlr_wl_pointer {
|
||||||
struct wl_listener output_destroy_listener;
|
struct wl_listener output_destroy_listener;
|
||||||
};
|
};
|
||||||
|
|
||||||
void wlr_wl_registry_poll(struct wlr_wl_backend *backend);
|
void wl_registry_poll(struct wlr_wl_backend *backend);
|
||||||
void wlr_wl_output_update_cursor(struct wlr_wl_backend_output *output);
|
void wl_output_update_cursor(struct wlr_wl_backend_output *output);
|
||||||
struct wlr_wl_backend_output *wlr_wl_output_for_surface(
|
struct wlr_wl_backend_output *wl_output_for_surface(
|
||||||
struct wlr_wl_backend *backend, struct wl_surface *surface);
|
struct wlr_wl_backend *backend, struct wl_surface *surface);
|
||||||
void wlr_wl_output_layout_get_box(struct wlr_wl_backend *backend,
|
void wl_output_layout_get_box(struct wlr_wl_backend *backend,
|
||||||
struct wlr_box *box);
|
struct wlr_box *box);
|
||||||
|
|
||||||
extern const struct wl_seat_listener seat_listener;
|
extern const struct wl_seat_listener seat_listener;
|
||||||
|
|
|
@ -19,4 +19,6 @@ struct wlr_backend *wlr_drm_backend_create(struct wl_display *display,
|
||||||
bool wlr_backend_is_drm(struct wlr_backend *backend);
|
bool wlr_backend_is_drm(struct wlr_backend *backend);
|
||||||
bool wlr_output_is_drm(struct wlr_output *output);
|
bool wlr_output_is_drm(struct wlr_output *output);
|
||||||
|
|
||||||
|
struct wlr_session *wlr_drm_backend_get_session(struct wlr_backend *backend);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -603,7 +603,7 @@ static void wlr_surface_state_destroy(struct wlr_surface_state *state) {
|
||||||
free(state);
|
free(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wlr_subsurface_destroy(struct wlr_subsurface *subsurface) {
|
static void subsurface_destroy(struct wlr_subsurface *subsurface) {
|
||||||
wlr_signal_emit_safe(&subsurface->events.destroy, subsurface);
|
wlr_signal_emit_safe(&subsurface->events.destroy, subsurface);
|
||||||
|
|
||||||
wl_list_remove(&subsurface->surface_destroy.link);
|
wl_list_remove(&subsurface->surface_destroy.link);
|
||||||
|
@ -696,11 +696,11 @@ static void subsurface_resource_destroy(struct wl_resource *resource) {
|
||||||
struct wlr_subsurface *subsurface = subsurface_from_resource(resource);
|
struct wlr_subsurface *subsurface = subsurface_from_resource(resource);
|
||||||
|
|
||||||
if (subsurface) {
|
if (subsurface) {
|
||||||
wlr_subsurface_destroy(subsurface);
|
subsurface_destroy(subsurface);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void subsurface_destroy(struct wl_client *client,
|
static void subsurface_handle_destroy(struct wl_client *client,
|
||||||
struct wl_resource *resource) {
|
struct wl_resource *resource) {
|
||||||
wl_resource_destroy(resource);
|
wl_resource_destroy(resource);
|
||||||
}
|
}
|
||||||
|
@ -802,7 +802,7 @@ static void subsurface_set_desync(struct wl_client *client,
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct wl_subsurface_interface subsurface_implementation = {
|
static const struct wl_subsurface_interface subsurface_implementation = {
|
||||||
.destroy = subsurface_destroy,
|
.destroy = subsurface_handle_destroy,
|
||||||
.set_position = subsurface_set_position,
|
.set_position = subsurface_set_position,
|
||||||
.place_above = subsurface_place_above,
|
.place_above = subsurface_place_above,
|
||||||
.place_below = subsurface_place_below,
|
.place_below = subsurface_place_below,
|
||||||
|
@ -824,7 +824,7 @@ static void subsurface_handle_surface_destroy(struct wl_listener *listener,
|
||||||
void *data) {
|
void *data) {
|
||||||
struct wlr_subsurface *subsurface =
|
struct wlr_subsurface *subsurface =
|
||||||
wl_container_of(listener, subsurface, surface_destroy);
|
wl_container_of(listener, subsurface, surface_destroy);
|
||||||
wlr_subsurface_destroy(subsurface);
|
subsurface_destroy(subsurface);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wlr_surface_make_subsurface(struct wlr_surface *surface,
|
void wlr_surface_make_subsurface(struct wlr_surface *surface,
|
||||||
|
|
|
@ -18,7 +18,8 @@ static const char *verbosity_colors[] = {
|
||||||
[L_DEBUG ] = "\x1B[1;30m",
|
[L_DEBUG ] = "\x1B[1;30m",
|
||||||
};
|
};
|
||||||
|
|
||||||
void wlr_log_stderr(log_importance_t verbosity, const char *fmt, va_list args) {
|
static void log_stderr(log_importance_t verbosity, const char *fmt,
|
||||||
|
va_list args) {
|
||||||
if (verbosity > log_importance) {
|
if (verbosity > log_importance) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -46,7 +47,7 @@ void wlr_log_stderr(log_importance_t verbosity, const char *fmt, va_list args) {
|
||||||
fprintf(stderr, "\n");
|
fprintf(stderr, "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static log_callback_t log_callback = wlr_log_stderr;
|
static log_callback_t log_callback = log_stderr;
|
||||||
|
|
||||||
void wlr_log_init(log_importance_t verbosity, log_callback_t callback) {
|
void wlr_log_init(log_importance_t verbosity, log_callback_t callback) {
|
||||||
if (verbosity < L_LAST) {
|
if (verbosity < L_LAST) {
|
||||||
|
|
37
wlroots.syms
37
wlroots.syms
|
@ -4,43 +4,6 @@ WLROOTS_0_0_0 {
|
||||||
_wlr_log;
|
_wlr_log;
|
||||||
_wlr_vlog;
|
_wlr_vlog;
|
||||||
local:
|
local:
|
||||||
wlr_drm_backend_get_session;
|
|
||||||
wlr_drm_check_features;
|
|
||||||
wlr_drm_connector_cleanup;
|
|
||||||
wlr_drm_connector_start_renderer;
|
|
||||||
wlr_drm_event;
|
|
||||||
wlr_drm_get_connector_props;
|
|
||||||
wlr_drm_get_crtc_props;
|
|
||||||
wlr_drm_get_plane_props;
|
|
||||||
wlr_drm_get_prop_blob;
|
|
||||||
wlr_drm_get_prop;
|
|
||||||
wlr_drm_plane_surfaces_init;
|
|
||||||
wlr_drm_renderer_finish;
|
|
||||||
wlr_drm_renderer_init;
|
|
||||||
wlr_drm_resources_free;
|
|
||||||
wlr_drm_resources_init;
|
|
||||||
wlr_drm_restore_outputs;
|
|
||||||
wlr_drm_scan_connectors;
|
|
||||||
wlr_drm_surface_finish;
|
|
||||||
wlr_drm_surface_get_front;
|
|
||||||
wlr_drm_surface_init;
|
|
||||||
wlr_drm_surface_make_current;
|
|
||||||
wlr_drm_surface_mgpu_copy;
|
|
||||||
wlr_drm_surface_post;
|
|
||||||
wlr_drm_surface_swap_buffers;
|
|
||||||
wlr_libinput_event;
|
|
||||||
wlr_libinput_keyboard_create;
|
|
||||||
wlr_libinput_pointer_create;
|
|
||||||
wlr_libinput_tablet_pad_create;
|
|
||||||
wlr_libinput_tablet_tool_create;
|
|
||||||
wlr_libinput_touch_create;
|
|
||||||
wlr_log_stderr;
|
|
||||||
wlr_signal_emit_safe;
|
wlr_signal_emit_safe;
|
||||||
wlr_subsurface_destroy;
|
|
||||||
wlr_wl_output_for_surface;
|
|
||||||
wlr_wl_output_layout_get_box;
|
|
||||||
wlr_wl_output_move_cursor;
|
|
||||||
wlr_wl_output_update_cursor;
|
|
||||||
wlr_wl_registry_poll;
|
|
||||||
*;
|
*;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue