diff options
Diffstat (limited to 'backend/drm')
-rw-r--r-- | backend/drm/backend.c | 2 | ||||
-rw-r--r-- | backend/drm/drm.c | 6 | ||||
-rw-r--r-- | backend/drm/renderer.c | 2 |
3 files changed, 7 insertions, 3 deletions
diff --git a/backend/drm/backend.c b/backend/drm/backend.c index 47dff227..fec14da9 100644 --- a/backend/drm/backend.c +++ b/backend/drm/backend.c @@ -83,6 +83,8 @@ static void session_signal(struct wl_listener *listener, void *data) { wl_list_for_each(conn, &drm->outputs, link){ if (conn->output.current_mode) { wlr_output_set_mode(&conn->output, conn->output.current_mode); + } else { + wlr_drm_connector_enable(&conn->output, false); } if (!conn->crtc) { diff --git a/backend/drm/drm.c b/backend/drm/drm.c index e60b7e1c..d6388597 100644 --- a/backend/drm/drm.c +++ b/backend/drm/drm.c @@ -282,7 +282,7 @@ void wlr_drm_connector_start_renderer(struct wlr_drm_connector *conn) { } } -static void wlr_drm_connector_enable(struct wlr_output *output, bool enable) { +void wlr_drm_connector_enable(struct wlr_output *output, bool enable) { struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output; if (conn->state != WLR_DRM_CONN_CONNECTED) { return; @@ -296,6 +296,8 @@ static void wlr_drm_connector_enable(struct wlr_output *output, bool enable) { if (enable) { wlr_drm_connector_start_renderer(conn); + } else { + output->current_mode = NULL; } wlr_output_update_enabled(&conn->output, enable); @@ -647,7 +649,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->surf.renderer->wlr_rend, plane->wlr_tex, - &matrix); + &matrix, 1.0f); glFinish(); glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, bo_stride); diff --git a/backend/drm/renderer.c b/backend/drm/renderer.c index f3e570f7..7ee13843 100644 --- a/backend/drm/renderer.c +++ b/backend/drm/renderer.c @@ -239,7 +239,7 @@ struct gbm_bo *wlr_drm_surface_mgpu_copy(struct wlr_drm_surface *dest, glViewport(0, 0, dest->width, dest->height); glClearColor(0.0, 0.0, 0.0, 1.0); glClear(GL_COLOR_BUFFER_BIT); - wlr_render_with_matrix(dest->renderer->wlr_rend, tex, &matrix); + wlr_render_with_matrix(dest->renderer->wlr_rend, tex, &matrix, 1.0f); return wlr_drm_surface_swap_buffers(dest, NULL); } |