diff options
Diffstat (limited to 'sway')
-rw-r--r-- | sway/commands.c | 6 | ||||
-rw-r--r-- | sway/config.c | 10 | ||||
-rw-r--r-- | sway/container.c | 2 | ||||
-rw-r--r-- | sway/handlers.c | 2 | ||||
-rw-r--r-- | sway/layout.c | 6 | ||||
-rw-r--r-- | sway/output.c | 7 |
6 files changed, 20 insertions, 13 deletions
diff --git a/sway/commands.c b/sway/commands.c index 89d4337c..053b5792 100644 --- a/sway/commands.c +++ b/sway/commands.c @@ -1706,10 +1706,10 @@ static struct cmd_results *cmd_output(int argc, char **argv) { list_add(config->output_configs, output); } - sway_log(L_DEBUG, "Config stored for output %s (enabled:%d) (%d x %d @ %d, %d) (bg %s %s)", + sway_log(L_DEBUG, "Config stored for output %s (enabled:%d) (%d x %d @ %d, %d scale %d) (bg %s %s)", output->name, output->enabled, output->width, - output->height, output->x, output->y, output->background, - output->background_option); + output->height, output->x, output->y, output->scale, + output->background, output->background_option); if (output->name) { // Try to find the output container and apply configuration now. If diff --git a/sway/config.c b/sway/config.c index 83129524..25566213 100644 --- a/sway/config.c +++ b/sway/config.c @@ -863,12 +863,12 @@ void apply_output_config(struct output_config *oc, swayc_t *output) { output->width = oc->width; output->height = oc->height; - sway_log(L_DEBUG, "Set %s size to %ix%i", oc->name, oc->width, oc->height); + sway_log(L_DEBUG, "Set %s size to %ix%i (%d)", oc->name, oc->width, oc->height, oc->scale); struct wlc_size new_size = { .w = oc->width, .h = oc->height }; - wlc_output_set_resolution(output->handle, &new_size); - } - if (oc && oc->scale != 1) { - wlc_output_set_scale(output->handle, (int32_t)oc->scale); + wlc_output_set_resolution(output->handle, &new_size, (uint32_t)oc->scale); + } else if (oc && oc->scale != 1) { + const struct wlc_size *new_size = wlc_output_get_resolution(output->handle); + wlc_output_set_resolution(output->handle, new_size, (uint32_t)oc->scale); } // Find position for it diff --git a/sway/container.c b/sway/container.c index df9ce724..c922bac3 100644 --- a/sway/container.c +++ b/sway/container.c @@ -103,7 +103,7 @@ static void update_root_geometry() { swayc_t *new_output(wlc_handle handle) { struct wlc_size size; - wlc_output_get_scaled_size(handle, &size); + output_get_scaled_size(handle, &size); const char *name = wlc_output_get_name(handle); // Find current outputs to see if this already exists { diff --git a/sway/handlers.c b/sway/handlers.c index ad035e38..7e958c72 100644 --- a/sway/handlers.c +++ b/sway/handlers.c @@ -57,7 +57,7 @@ static struct background_config *if_background_find_config(struct wl_client *cli static struct wlc_geometry compute_panel_geometry(struct panel_config *config) { struct wlc_size resolution; - wlc_output_get_scaled_size(config->output, &resolution); + output_get_scaled_size(config->output, &resolution); const struct wlc_geometry *old = wlc_view_get_geometry(config->handle); struct wlc_geometry new; diff --git a/sway/layout.c b/sway/layout.c index 2037955e..db9787f3 100644 --- a/sway/layout.c +++ b/sway/layout.c @@ -407,7 +407,7 @@ static void update_border_geometry_floating(swayc_t *c, struct wlc_geometry *geo swayc_t *output = swayc_parent_by_type(c, C_OUTPUT); struct wlc_size res; - wlc_output_get_scaled_size(output->handle, &res); + output_get_scaled_size(output->handle, &res); switch (c->border_type) { case B_NONE: @@ -548,7 +548,7 @@ void update_geometry(swayc_t *container) { swayc_t *output = swayc_parent_by_type(container, C_OUTPUT); struct wlc_size size; - wlc_output_get_scaled_size(output->handle, &size); + output_get_scaled_size(output->handle, &size); if (swayc_is_fullscreen(container)) { geometry.origin.x = 0; @@ -729,7 +729,7 @@ static void arrange_windows_r(swayc_t *container, double width, double height) { case C_OUTPUT: { struct wlc_size resolution; - wlc_output_get_scaled_size(container->handle, &resolution); + output_get_scaled_size(container->handle, &resolution); width = resolution.w; height = resolution.h; // output must have correct size due to e.g. seamless mouse, // but a workspace might be smaller depending on panels. diff --git a/sway/output.c b/sway/output.c index d56a2f30..97b8a4a6 100644 --- a/sway/output.c +++ b/sway/output.c @@ -5,6 +5,13 @@ #include "log.h" #include "list.h" +void output_get_scaled_size(wlc_handle handle, struct wlc_size *size) { + *size = *wlc_output_get_resolution(handle); + uint32_t scale = wlc_output_get_scale(handle); + size->w /= scale; + size->h /= scale; +} + swayc_t *output_by_name(const char* name, const struct wlc_point *abs_pos) { if (strcasecmp(name, "left") == 0) { return swayc_adjacent_output(NULL, MOVE_LEFT, abs_pos, true); |