mirror of
https://github.com/labwc/labwc.git
synced 2025-10-29 05:40:24 -04:00
parent
7756d5b975
commit
88a67d586c
3 changed files with 15 additions and 11 deletions
|
|
@ -255,6 +255,7 @@ struct server {
|
|||
struct seat seat;
|
||||
struct wlr_scene *scene;
|
||||
struct wlr_scene_output_layout *scene_layout;
|
||||
bool direct_scanout_enabled;
|
||||
|
||||
/* cursor interactive */
|
||||
enum input_mode input_mode;
|
||||
|
|
|
|||
|
|
@ -112,7 +112,6 @@ magnify(struct output *output, struct wlr_buffer *output_buffer, struct wlr_box
|
|||
return;
|
||||
}
|
||||
|
||||
/* Paste the magnified result back into the output buffer */
|
||||
if (!tmp_texture) {
|
||||
tmp_texture = wlr_texture_from_buffer(server->renderer, tmp_buffer);
|
||||
}
|
||||
|
|
@ -124,7 +123,6 @@ magnify(struct output *output, struct wlr_buffer *output_buffer, struct wlr_box
|
|||
}
|
||||
|
||||
/* Extract source region into temporary buffer */
|
||||
|
||||
struct wlr_render_pass *tmp_render_pass = wlr_renderer_begin_buffer_pass(
|
||||
server->renderer, tmp_buffer, NULL);
|
||||
|
||||
|
|
@ -198,6 +196,7 @@ magnify(struct output *output, struct wlr_buffer *output_buffer, struct wlr_box
|
|||
dst_box.y = oy - (height / 2);
|
||||
}
|
||||
|
||||
/* Paste the magnified result back into the output buffer */
|
||||
opts = (struct wlr_render_texture_options) {
|
||||
.texture = tmp_texture,
|
||||
.src_box = src_box,
|
||||
|
|
@ -241,18 +240,21 @@ output_wants_magnification(struct output *output)
|
|||
return output_nearest_to_cursor(output->server) == output;
|
||||
}
|
||||
|
||||
static void
|
||||
enable_magnifier(struct server *server, bool enable)
|
||||
{
|
||||
magnify_on = enable;
|
||||
server->scene->direct_scanout = enable ? false
|
||||
: server->direct_scanout_enabled;
|
||||
}
|
||||
|
||||
/* Toggles magnification on and off */
|
||||
void
|
||||
magnify_toggle(struct server *server)
|
||||
{
|
||||
enable_magnifier(server, !magnify_on);
|
||||
|
||||
struct output *output = output_nearest_to_cursor(server);
|
||||
|
||||
if (magnify_on) {
|
||||
magnify_on = false;
|
||||
} else {
|
||||
magnify_on = true;
|
||||
}
|
||||
|
||||
if (output) {
|
||||
wlr_output_schedule_frame(output->wlr_output);
|
||||
}
|
||||
|
|
@ -268,14 +270,14 @@ magnify_set_scale(struct server *server, enum magnify_dir dir)
|
|||
if (magnify_on) {
|
||||
mag_scale += rc.mag_increment;
|
||||
} else {
|
||||
magnify_on = true;
|
||||
enable_magnifier(server, true);
|
||||
mag_scale = 1.0 + rc.mag_increment;
|
||||
}
|
||||
} else {
|
||||
if (magnify_on && mag_scale > 1.0 + rc.mag_increment) {
|
||||
mag_scale -= rc.mag_increment;
|
||||
} else {
|
||||
magnify_on = false;
|
||||
enable_magnifier(server, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -414,6 +414,7 @@ server_init(struct server *server)
|
|||
wlr_log(WLR_ERROR, "unable to create scene");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
server->direct_scanout_enabled = server->scene->direct_scanout;
|
||||
|
||||
/*
|
||||
* The order in which the scene-trees below are created determines the
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue