Sway 1.10.1 Rebase (#382)
This commit is contained in:
parent
03a0796973
commit
50d4cf45ab
6 changed files with 24 additions and 13 deletions
|
@ -11,7 +11,7 @@ project(
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
original_version = '1.10.0'
|
original_version = '1.10.1'
|
||||||
|
|
||||||
add_project_arguments(
|
add_project_arguments(
|
||||||
[
|
[
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <wlr/config.h>
|
#include <wlr/config.h>
|
||||||
|
#include <wlr/render/allocator.h>
|
||||||
#include <wlr/types/wlr_cursor.h>
|
#include <wlr/types/wlr_cursor.h>
|
||||||
#include <wlr/types/wlr_output_layout.h>
|
#include <wlr/types/wlr_output_layout.h>
|
||||||
#include <wlr/types/wlr_output.h>
|
#include <wlr/types/wlr_output.h>
|
||||||
|
@ -773,7 +774,7 @@ static bool search_render_format(struct search_context *ctx, size_t output_idx)
|
||||||
}
|
}
|
||||||
|
|
||||||
const struct wlr_drm_format_set *primary_formats =
|
const struct wlr_drm_format_set *primary_formats =
|
||||||
wlr_output_get_primary_formats(wlr_output, WLR_BUFFER_CAP_DMABUF);
|
wlr_output_get_primary_formats(wlr_output, server.allocator->buffer_caps);
|
||||||
enum render_bit_depth needed_bits = RENDER_BIT_DEPTH_8;
|
enum render_bit_depth needed_bits = RENDER_BIT_DEPTH_8;
|
||||||
if (cfg->config && cfg->config->render_bit_depth != RENDER_BIT_DEPTH_DEFAULT) {
|
if (cfg->config && cfg->config->render_bit_depth != RENDER_BIT_DEPTH_DEFAULT) {
|
||||||
needed_bits = cfg->config->render_bit_depth;
|
needed_bits = cfg->config->render_bit_depth;
|
||||||
|
@ -783,7 +784,8 @@ static bool search_render_format(struct search_context *ctx, size_t output_idx)
|
||||||
if (needed_bits < format_bits) {
|
if (needed_bits < format_bits) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (!wlr_drm_format_set_get(primary_formats, fmts[idx])) {
|
// If primary_formats is NULL, all formats are supported
|
||||||
|
if (primary_formats && !wlr_drm_format_set_get(primary_formats, fmts[idx])) {
|
||||||
// This is not a supported format for this output
|
// This is not a supported format for this output
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -1016,6 +1018,7 @@ void free_output_config(struct output_config *oc) {
|
||||||
free(oc->name);
|
free(oc->name);
|
||||||
free(oc->background);
|
free(oc->background);
|
||||||
free(oc->background_option);
|
free(oc->background_option);
|
||||||
|
free(oc->background_fallback);
|
||||||
wlr_color_transform_unref(oc->color_transform);
|
wlr_color_transform_unref(oc->color_transform);
|
||||||
free(oc);
|
free(oc);
|
||||||
}
|
}
|
||||||
|
|
|
@ -330,6 +330,7 @@ static void handle_node_destroy(struct wl_listener *listener, void *data) {
|
||||||
wl_list_remove(&layer->unmap.link);
|
wl_list_remove(&layer->unmap.link);
|
||||||
wl_list_remove(&layer->surface_commit.link);
|
wl_list_remove(&layer->surface_commit.link);
|
||||||
wl_list_remove(&layer->node_destroy.link);
|
wl_list_remove(&layer->node_destroy.link);
|
||||||
|
wl_list_remove(&layer->new_popup.link);
|
||||||
wl_list_remove(&layer->output_destroy.link);
|
wl_list_remove(&layer->output_destroy.link);
|
||||||
|
|
||||||
layer->layer_surface->data = NULL;
|
layer->layer_surface->data = NULL;
|
||||||
|
|
|
@ -110,9 +110,9 @@ They are expected to be used with *bindsym* or at runtime through *swaymsg*(1).
|
||||||
*border* none|normal|csd|pixel [<n>]
|
*border* none|normal|csd|pixel [<n>]
|
||||||
Set border style for focused window. _normal_ includes a border of
|
Set border style for focused window. _normal_ includes a border of
|
||||||
thickness _n_ and a title bar. _pixel_ is a border without title bar _n_
|
thickness _n_ and a title bar. _pixel_ is a border without title bar _n_
|
||||||
pixels thick. Default is _normal_ with border thickness 2. _csd_ is short
|
pixels thick. The title bar always shows in stacking or tabbed layouts.
|
||||||
for client-side-decorations, which allows the client to draw its own
|
_csd_ is short for client-side-decorations, which allows the client to draw
|
||||||
decorations.
|
its own decorations. Default is _normal_ with border thickness 2.
|
||||||
|
|
||||||
*border* toggle
|
*border* toggle
|
||||||
Cycles through the available border styles.
|
Cycles through the available border styles.
|
||||||
|
|
|
@ -29,6 +29,7 @@ struct render_context {
|
||||||
cairo_font_options_t *textaa_sharp;
|
cairo_font_options_t *textaa_sharp;
|
||||||
cairo_font_options_t *textaa_safe;
|
cairo_font_options_t *textaa_safe;
|
||||||
uint32_t background_color;
|
uint32_t background_color;
|
||||||
|
bool has_transparency;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void choose_text_aa_mode(struct render_context *ctx, uint32_t fontcolor) {
|
static void choose_text_aa_mode(struct render_context *ctx, uint32_t fontcolor) {
|
||||||
|
@ -265,6 +266,7 @@ static uint32_t render_status_block(struct render_context *ctx,
|
||||||
|
|
||||||
uint32_t bg_color = block->urgent
|
uint32_t bg_color = block->urgent
|
||||||
? config->colors.urgent_workspace.background : block->background;
|
? config->colors.urgent_workspace.background : block->background;
|
||||||
|
ctx->has_transparency |= (bg_color & 0xFF) != 0xFF;
|
||||||
if (bg_color) {
|
if (bg_color) {
|
||||||
render_sharp_rectangle(cairo, bg_color, x_pos, y_pos,
|
render_sharp_rectangle(cairo, bg_color, x_pos, y_pos,
|
||||||
block_width, render_height);
|
block_width, render_height);
|
||||||
|
@ -574,6 +576,7 @@ static uint32_t render_binding_mode_indicator(struct render_context *ctx,
|
||||||
cairo_set_operator(cairo, CAIRO_OPERATOR_SOURCE);
|
cairo_set_operator(cairo, CAIRO_OPERATOR_SOURCE);
|
||||||
cairo_set_source_u32(cairo, config->colors.binding_mode.background);
|
cairo_set_source_u32(cairo, config->colors.binding_mode.background);
|
||||||
ctx->background_color = config->colors.binding_mode.background;
|
ctx->background_color = config->colors.binding_mode.background;
|
||||||
|
ctx->has_transparency |= (config->colors.binding_mode.background & 0xFF) != 0xFF;
|
||||||
cairo_rectangle(cairo, x, 0, width, height);
|
cairo_rectangle(cairo, x, 0, width, height);
|
||||||
cairo_fill(cairo);
|
cairo_fill(cairo);
|
||||||
|
|
||||||
|
@ -653,6 +656,7 @@ static uint32_t render_workspace_button(struct render_context *ctx,
|
||||||
cairo_set_operator(cairo, CAIRO_OPERATOR_SOURCE);
|
cairo_set_operator(cairo, CAIRO_OPERATOR_SOURCE);
|
||||||
cairo_set_source_u32(cairo, box_colors.background);
|
cairo_set_source_u32(cairo, box_colors.background);
|
||||||
ctx->background_color = box_colors.background;
|
ctx->background_color = box_colors.background;
|
||||||
|
ctx->has_transparency |= (box_colors.background & 0xFF) != 0xFF;
|
||||||
cairo_rectangle(cairo, *x, 0, width, height);
|
cairo_rectangle(cairo, *x, 0, width, height);
|
||||||
cairo_fill(cairo);
|
cairo_fill(cairo);
|
||||||
|
|
||||||
|
@ -760,10 +764,12 @@ void render_frame(struct swaybar_output *output) {
|
||||||
background_color = output->bar->config->colors.background;
|
background_color = output->bar->config->colors.background;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct render_context ctx = { 0 };
|
struct render_context ctx = {
|
||||||
ctx.output = output;
|
.output = output,
|
||||||
// initial background color used for deciding the best way to antialias text
|
// initial background color used for deciding the best way to antialias text
|
||||||
ctx.background_color = background_color;
|
.background_color = background_color,
|
||||||
|
.has_transparency = (background_color & 0xFF) != 0xFF,
|
||||||
|
};
|
||||||
|
|
||||||
cairo_surface_t *recorder = cairo_recording_surface_create(
|
cairo_surface_t *recorder = cairo_recording_surface_create(
|
||||||
CAIRO_CONTENT_COLOR_ALPHA, NULL);
|
CAIRO_CONTENT_COLOR_ALPHA, NULL);
|
||||||
|
@ -834,8 +840,7 @@ void render_frame(struct swaybar_output *output) {
|
||||||
wl_surface_damage(output->surface, 0, 0,
|
wl_surface_damage(output->surface, 0, 0,
|
||||||
output->width, output->height);
|
output->width, output->height);
|
||||||
|
|
||||||
uint32_t bg_alpha = background_color & 0xFF;
|
if (!ctx.has_transparency) {
|
||||||
if (bg_alpha == 0xFF) {
|
|
||||||
struct wl_region *region =
|
struct wl_region *region =
|
||||||
wl_compositor_create_region(output->bar->compositor);
|
wl_compositor_create_region(output->bar->compositor);
|
||||||
wl_region_add(region, 0, 0, INT32_MAX, INT32_MAX);
|
wl_region_add(region, 0, 0, INT32_MAX, INT32_MAX);
|
||||||
|
|
|
@ -324,7 +324,9 @@ static void output_scale(void *data, struct wl_output *output,
|
||||||
swaynag_output->scale = factor;
|
swaynag_output->scale = factor;
|
||||||
if (swaynag_output->swaynag->output == swaynag_output) {
|
if (swaynag_output->swaynag->output == swaynag_output) {
|
||||||
swaynag_output->swaynag->scale = swaynag_output->scale;
|
swaynag_output->swaynag->scale = swaynag_output->scale;
|
||||||
update_all_cursors(swaynag_output->swaynag);
|
if (!swaynag_output->swaynag->cursor_shape_manager) {
|
||||||
|
update_all_cursors(swaynag_output->swaynag);
|
||||||
|
}
|
||||||
render_frame(swaynag_output->swaynag);
|
render_frame(swaynag_output->swaynag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue