mirror of
https://github.com/labwc/labwc.git
synced 2025-10-29 05:40:24 -04:00
ssd: work around the translucent titlebar in pixman renderer
Due to wlroots/pixman bug, the widened 1px buffer for the gradient titlebar become translucent with WLR_RENDERER=pixman and WLR_SCALE_FILTER_BILINEAR filter mode. This patch works around this problem by using WLR_SCALE_FILTER_NEAREST filter mode if pixman renderer is used.
This commit is contained in:
parent
aedf279656
commit
d12751c781
1 changed files with 18 additions and 2 deletions
|
|
@ -3,6 +3,7 @@
|
||||||
#define _POSIX_C_SOURCE 200809L
|
#define _POSIX_C_SOURCE 200809L
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <wlr/render/pixman.h>
|
||||||
#include "buffer.h"
|
#include "buffer.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "common/mem.h"
|
#include "common/mem.h"
|
||||||
|
|
@ -57,8 +58,23 @@ ssd_titlebar_create(struct ssd *ssd)
|
||||||
wl_list_init(&subtree->parts);
|
wl_list_init(&subtree->parts);
|
||||||
|
|
||||||
/* Background */
|
/* Background */
|
||||||
add_scene_buffer(&subtree->parts, LAB_SSD_PART_TITLEBAR, parent,
|
struct wlr_scene_buffer *bg_scene_buffer =
|
||||||
titlebar_fill, corner_width, 0);
|
wlr_scene_buffer_create(parent, titlebar_fill);
|
||||||
|
/*
|
||||||
|
* Work around the wlroots/pixman bug that widened 1px buffer
|
||||||
|
* becomes translucent when bilinear filtering is used.
|
||||||
|
* TODO: remove once https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3990
|
||||||
|
* is solved
|
||||||
|
*/
|
||||||
|
if (wlr_renderer_is_pixman(view->server->renderer)) {
|
||||||
|
wlr_scene_buffer_set_filter_mode(
|
||||||
|
bg_scene_buffer, WLR_SCALE_FILTER_NEAREST);
|
||||||
|
}
|
||||||
|
struct ssd_part *bg_part =
|
||||||
|
add_scene_part(&subtree->parts, LAB_SSD_PART_TITLEBAR);
|
||||||
|
bg_part->node = &bg_scene_buffer->node;
|
||||||
|
wlr_scene_node_set_position(bg_part->node, corner_width, 0);
|
||||||
|
|
||||||
add_scene_buffer(&subtree->parts, LAB_SSD_PART_TITLEBAR_CORNER_LEFT, parent,
|
add_scene_buffer(&subtree->parts, LAB_SSD_PART_TITLEBAR_CORNER_LEFT, parent,
|
||||||
corner_top_left, -rc.theme->border_width, -rc.theme->border_width);
|
corner_top_left, -rc.theme->border_width, -rc.theme->border_width);
|
||||||
add_scene_buffer(&subtree->parts, LAB_SSD_PART_TITLEBAR_CORNER_RIGHT, parent,
|
add_scene_buffer(&subtree->parts, LAB_SSD_PART_TITLEBAR_CORNER_RIGHT, parent,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue