mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2025-11-08 13:29:45 -05:00
Merge branch 'master' into heghe/wl_list
This commit is contained in:
commit
16f35ecbea
41 changed files with 263 additions and 157 deletions
|
|
@ -11,7 +11,7 @@
|
|||
#include <wlr/interfaces/wlr_output.h>
|
||||
#include <wlr/types/wlr_list.h>
|
||||
#include <wlr/util/log.h>
|
||||
#include <wlr/egl.h>
|
||||
#include <wlr/render/egl.h>
|
||||
#include "backend/drm/drm.h"
|
||||
|
||||
static bool wlr_drm_backend_start(struct wlr_backend *backend) {
|
||||
|
|
|
|||
|
|
@ -177,9 +177,6 @@ void wlr_drm_resources_free(struct wlr_drm_backend *drm) {
|
|||
if (plane->wlr_tex) {
|
||||
wlr_texture_destroy(plane->wlr_tex);
|
||||
}
|
||||
if (plane->wlr_rend) {
|
||||
wlr_renderer_destroy(plane->wlr_rend);
|
||||
}
|
||||
}
|
||||
|
||||
free(drm->crtcs);
|
||||
|
|
@ -193,7 +190,7 @@ static void wlr_drm_connector_make_current(struct wlr_output *output) {
|
|||
|
||||
static void wlr_drm_connector_swap_buffers(struct wlr_output *output) {
|
||||
struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
|
||||
struct wlr_drm_backend *drm = conn->drm;
|
||||
struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend;
|
||||
|
||||
struct wlr_drm_crtc *crtc = conn->crtc;
|
||||
struct wlr_drm_plane *plane = crtc->primary;
|
||||
|
|
@ -216,7 +213,8 @@ static void wlr_drm_connector_swap_buffers(struct wlr_output *output) {
|
|||
static void wlr_drm_connector_set_gamma(struct wlr_output *output,
|
||||
uint16_t size, uint16_t *r, uint16_t *g, uint16_t *b) {
|
||||
struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
|
||||
drmModeCrtcSetGamma(conn->drm->fd, conn->crtc->id, size, r, g, b);
|
||||
struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend;
|
||||
drmModeCrtcSetGamma(drm->fd, conn->crtc->id, size, r, g, b);
|
||||
}
|
||||
|
||||
static uint16_t wlr_drm_connector_get_gamma_size(struct wlr_output *output) {
|
||||
|
|
@ -230,7 +228,7 @@ void wlr_drm_connector_start_renderer(struct wlr_drm_connector *conn) {
|
|||
return;
|
||||
}
|
||||
|
||||
struct wlr_drm_backend *drm = conn->drm;
|
||||
struct wlr_drm_backend *drm = (struct wlr_drm_backend *)conn->output.backend;
|
||||
struct wlr_drm_crtc *crtc = conn->crtc;
|
||||
struct wlr_drm_plane *plane = crtc->primary;
|
||||
|
||||
|
|
@ -253,7 +251,7 @@ static void wlr_drm_connector_enable(struct wlr_output *output, bool enable) {
|
|||
return;
|
||||
}
|
||||
|
||||
struct wlr_drm_backend *drm = conn->drm;
|
||||
struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend;
|
||||
drm->iface->conn_enable(drm, conn, enable);
|
||||
|
||||
if (enable) {
|
||||
|
|
@ -414,7 +412,7 @@ error_conn:
|
|||
static bool wlr_drm_connector_set_mode(struct wlr_output *output,
|
||||
struct wlr_output_mode *mode) {
|
||||
struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
|
||||
struct wlr_drm_backend *drm = conn->drm;
|
||||
struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend;
|
||||
|
||||
wlr_log(L_INFO, "Modesetting '%s' with '%ux%u@%u mHz'", conn->output.name,
|
||||
mode->width, mode->height, mode->refresh);
|
||||
|
|
@ -479,7 +477,7 @@ static bool wlr_drm_connector_set_cursor(struct wlr_output *output,
|
|||
const uint8_t *buf, int32_t stride, uint32_t width, uint32_t height,
|
||||
int32_t hotspot_x, int32_t hotspot_y, bool update_pixels) {
|
||||
struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
|
||||
struct wlr_drm_backend *drm = conn->drm;
|
||||
struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend;
|
||||
struct wlr_drm_renderer *renderer = &drm->renderer;
|
||||
|
||||
struct wlr_drm_crtc *crtc = conn->crtc;
|
||||
|
|
@ -532,12 +530,7 @@ static bool wlr_drm_connector_set_cursor(struct wlr_output *output,
|
|||
|
||||
// TODO the image needs to be rotated depending on the output rotation
|
||||
|
||||
plane->wlr_rend = wlr_gles2_renderer_create(&drm->backend);
|
||||
if (!plane->wlr_rend) {
|
||||
return false;
|
||||
}
|
||||
|
||||
plane->wlr_tex = wlr_render_texture_create(plane->wlr_rend);
|
||||
plane->wlr_tex = wlr_render_texture_create(plane->surf.renderer->wlr_rend);
|
||||
if (!plane->wlr_tex) {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -602,7 +595,7 @@ static bool wlr_drm_connector_set_cursor(struct wlr_output *output,
|
|||
|
||||
float matrix[16];
|
||||
wlr_texture_get_matrix(plane->wlr_tex, &matrix, &plane->matrix, 0, 0);
|
||||
wlr_render_with_matrix(plane->wlr_rend, plane->wlr_tex, &matrix);
|
||||
wlr_render_with_matrix(plane->surf.renderer->wlr_rend, plane->wlr_tex, &matrix);
|
||||
|
||||
glFinish();
|
||||
glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, bo_stride);
|
||||
|
|
@ -619,7 +612,7 @@ static bool wlr_drm_connector_set_cursor(struct wlr_output *output,
|
|||
static bool wlr_drm_connector_move_cursor(struct wlr_output *output,
|
||||
int x, int y) {
|
||||
struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
|
||||
struct wlr_drm_backend *drm = conn->drm;
|
||||
struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend;
|
||||
|
||||
int width, height, tmp;
|
||||
wlr_output_effective_resolution(output, &width, &height);
|
||||
|
|
@ -720,14 +713,13 @@ void wlr_drm_scan_connectors(struct wlr_drm_backend *drm) {
|
|||
drmModeFreeConnector(drm_conn);
|
||||
continue;
|
||||
}
|
||||
wlr_output_init(&wlr_conn->output, &output_impl);
|
||||
wlr_output_init(&wlr_conn->output, &drm->backend, &output_impl);
|
||||
|
||||
struct wl_event_loop *ev = wl_display_get_event_loop(drm->display);
|
||||
wlr_conn->retry_pageflip = wl_event_loop_add_timer(ev, retry_pageflip,
|
||||
wlr_conn);
|
||||
|
||||
|
||||
wlr_conn->drm = drm;
|
||||
wlr_conn->state = WLR_DRM_CONN_DISCONNECTED;
|
||||
wlr_conn->id = drm_conn->connector_id;
|
||||
|
||||
|
|
@ -822,7 +814,7 @@ void wlr_drm_scan_connectors(struct wlr_drm_backend *drm) {
|
|||
static void page_flip_handler(int fd, unsigned seq,
|
||||
unsigned tv_sec, unsigned tv_usec, void *user) {
|
||||
struct wlr_drm_connector *conn = user;
|
||||
struct wlr_drm_backend *drm = conn->drm;
|
||||
struct wlr_drm_backend *drm = (struct wlr_drm_backend *)conn->output.backend;
|
||||
|
||||
conn->pageflip_pending = false;
|
||||
if (conn->state != WLR_DRM_CONN_CONNECTED) {
|
||||
|
|
@ -894,7 +886,7 @@ void wlr_drm_connector_cleanup(struct wlr_drm_connector *conn) {
|
|||
return;
|
||||
}
|
||||
|
||||
struct wlr_drm_backend *drm = conn->drm;
|
||||
struct wlr_drm_backend *drm = (struct wlr_drm_backend *)conn->output.backend;
|
||||
|
||||
switch (conn->state) {
|
||||
case WLR_DRM_CONN_CONNECTED:
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@
|
|||
#include <EGL/eglext.h>
|
||||
#include <wayland-util.h>
|
||||
|
||||
#include <wlr/egl.h>
|
||||
#include <wlr/util/log.h>
|
||||
#include <wlr/render/egl.h>
|
||||
#include <wlr/render/matrix.h>
|
||||
#include <wlr/render/gles2.h>
|
||||
#include <wlr/render.h>
|
||||
|
|
|
|||
|
|
@ -120,11 +120,6 @@ void wlr_multi_backend_add(struct wlr_backend *_multi,
|
|||
sub->output_add.notify = output_add_reemit;
|
||||
sub->output_remove.notify = output_remove_reemit;
|
||||
|
||||
wl_list_init(&sub->input_add.link);
|
||||
wl_list_init(&sub->input_remove.link);
|
||||
wl_list_init(&sub->output_add.link);
|
||||
wl_list_init(&sub->output_remove.link);
|
||||
|
||||
wl_signal_add(&backend->events.input_add, &sub->input_add);
|
||||
wl_signal_add(&backend->events.input_remove, &sub->input_remove);
|
||||
wl_signal_add(&backend->events.output_add, &sub->output_add);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
#include <EGL/egl.h>
|
||||
#include <EGL/eglext.h>
|
||||
#include <wayland-server.h>
|
||||
#include <wlr/egl.h>
|
||||
#include <wlr/render/egl.h>
|
||||
#include <wlr/backend/interface.h>
|
||||
#include <wlr/interfaces/wlr_output.h>
|
||||
#include <wlr/interfaces/wlr_input_device.h>
|
||||
|
|
|
|||
|
|
@ -241,7 +241,7 @@ struct wlr_output *wlr_wl_output_create(struct wlr_backend *_backend) {
|
|||
wlr_log(L_ERROR, "Failed to allocate wlr_wl_backend_output");
|
||||
return NULL;
|
||||
}
|
||||
wlr_output_init(&output->wlr_output, &output_impl);
|
||||
wlr_output_init(&output->wlr_output, &backend->backend, &output_impl);
|
||||
struct wlr_output *wlr_output = &output->wlr_output;
|
||||
|
||||
wlr_output->width = 640;
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
#endif
|
||||
#include <wlr/backend/interface.h>
|
||||
#include <wlr/backend/x11.h>
|
||||
#include <wlr/egl.h>
|
||||
#include <wlr/render/egl.h>
|
||||
#include <wlr/interfaces/wlr_output.h>
|
||||
#include <wlr/interfaces/wlr_input_device.h>
|
||||
#include <wlr/interfaces/wlr_keyboard.h>
|
||||
|
|
@ -264,7 +264,7 @@ static bool wlr_x11_backend_start(struct wlr_backend *backend) {
|
|||
|
||||
output->x11 = x11;
|
||||
|
||||
wlr_output_init(&output->wlr_output, &output_impl);
|
||||
wlr_output_init(&output->wlr_output, &x11->backend, &output_impl);
|
||||
snprintf(output->wlr_output.name, sizeof(output->wlr_output.name), "X11-1");
|
||||
|
||||
output->win = xcb_generate_id(x11->xcb_conn);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue