feat: advertise alpha-modifier-v1 (passive surface alpha)
This commit is contained in:
parent
33526c7a4e
commit
8bdaa970cc
4 changed files with 28 additions and 1 deletions
|
|
@ -502,6 +502,14 @@ compositor (sound, visual flash, or nothing); kick logs each ring as
|
||||||
`[bell] ring` at `KICK_LOG=1` and otherwise renders nothing, keeping
|
`[bell] ring` at `KICK_LOG=1` and otherwise renders nothing, keeping
|
||||||
the quiet-by-default contract.
|
the quiet-by-default contract.
|
||||||
|
|
||||||
|
## Alpha modifier (`alpha-modifier-v1`)
|
||||||
|
|
||||||
|
Kick advertises `wp_alpha_modifier_v1`, so clients can multiply their
|
||||||
|
surface's alpha (fades, translucent video) without repainting.
|
||||||
|
wlroots applies the multiplier when rendering, so like color
|
||||||
|
representation this is a passive correctness handshake rather than
|
||||||
|
visible compositor work.
|
||||||
|
|
||||||
## Logging (`KICK_LOG`)
|
## Logging (`KICK_LOG`)
|
||||||
|
|
||||||
Quiet by default: a plain launch prints nothing to the launching terminal
|
Quiet by default: a plain launch prints nothing to the launching terminal
|
||||||
|
|
|
||||||
8
kick.c
8
kick.c
|
|
@ -75,6 +75,7 @@
|
||||||
#include <wlr/render/swapchain.h>
|
#include <wlr/render/swapchain.h>
|
||||||
#include <wlr/render/wlr_renderer.h>
|
#include <wlr/render/wlr_renderer.h>
|
||||||
#include <wlr/render/wlr_texture.h>
|
#include <wlr/render/wlr_texture.h>
|
||||||
|
#include <wlr/types/wlr_alpha_modifier_v1.h>
|
||||||
#include <wlr/types/wlr_buffer.h>
|
#include <wlr/types/wlr_buffer.h>
|
||||||
#include <wlr/types/wlr_color_management_v1.h>
|
#include <wlr/types/wlr_color_management_v1.h>
|
||||||
#include <wlr/types/wlr_color_representation_v1.h>
|
#include <wlr/types/wlr_color_representation_v1.h>
|
||||||
|
|
@ -405,6 +406,10 @@ struct kick_server {
|
||||||
internally, we only query the type for the debug log. */
|
internally, we only query the type for the debug log. */
|
||||||
struct wlr_content_type_manager_v1 *content_type_mgr;
|
struct wlr_content_type_manager_v1 *content_type_mgr;
|
||||||
struct wlr_single_pixel_buffer_manager_v1 *single_pixel_mgr;
|
struct wlr_single_pixel_buffer_manager_v1 *single_pixel_mgr;
|
||||||
|
/* Alpha modifier (wp_alpha_modifier_v1): a surface multiplies its own
|
||||||
|
alpha (fades, translucent video). Fully passive: wlroots applies
|
||||||
|
the multiplier when rendering, so advertising is the whole job. */
|
||||||
|
struct wlr_alpha_modifier_v1 *alpha_modifier_mgr;
|
||||||
/* Primary selection (zwp_primary_selection_v1). Clients request the
|
/* Primary selection (zwp_primary_selection_v1). Clients request the
|
||||||
selection on their seat device; the request handler below is what
|
selection on their seat device; the request handler below is what
|
||||||
actually installs it on the seat, mirroring the clipboard path. */
|
actually installs it on the seat, mirroring the clipboard path. */
|
||||||
|
|
@ -11875,6 +11880,9 @@ int main(int argc, char *argv[]) {
|
||||||
wlr_content_type_manager_v1_create(server.wl_display, 1);
|
wlr_content_type_manager_v1_create(server.wl_display, 1);
|
||||||
server.single_pixel_mgr =
|
server.single_pixel_mgr =
|
||||||
wlr_single_pixel_buffer_manager_v1_create(server.wl_display);
|
wlr_single_pixel_buffer_manager_v1_create(server.wl_display);
|
||||||
|
/* Alpha modifier: one passive global (see the field comment). */
|
||||||
|
server.alpha_modifier_mgr =
|
||||||
|
wlr_alpha_modifier_v1_create(server.wl_display);
|
||||||
|
|
||||||
/* Let nested clients pick their cursor shape (cursor-shape-v1); the
|
/* Let nested clients pick their cursor shape (cursor-shape-v1); the
|
||||||
manager is passive, so we handle request_set_shape ourselves below:
|
manager is passive, so we handle request_set_shape ourselves below:
|
||||||
|
|
|
||||||
10
meson.build
10
meson.build
|
|
@ -311,6 +311,14 @@ protocols = {
|
||||||
wl_protocols_dir / 'staging/single-pixel-buffer/single-pixel-buffer-v1.xml',
|
wl_protocols_dir / 'staging/single-pixel-buffer/single-pixel-buffer-v1.xml',
|
||||||
'single-pixel-buffer-v1',
|
'single-pixel-buffer-v1',
|
||||||
],
|
],
|
||||||
|
# Alpha modifier (a surface multiplies its own alpha): staging
|
||||||
|
# protocol from the system wayland-protocols. Only client stubs are
|
||||||
|
# needed for wltest; the server side is wlroots'
|
||||||
|
# wlr_alpha_modifier_v1.
|
||||||
|
'alpha-modifier': [
|
||||||
|
wl_protocols_dir / 'staging/alpha-modifier/alpha-modifier-v1.xml',
|
||||||
|
'alpha-modifier-v1',
|
||||||
|
],
|
||||||
# Viewporter (stable): only the client stub is needed (the server side
|
# Viewporter (stable): only the client stub is needed (the server side
|
||||||
# is wlroots' wlr_viewporter_create). wltest uses it to scale a 1x1
|
# is wlroots' wlr_viewporter_create). wltest uses it to scale a 1x1
|
||||||
# single-pixel buffer up to the window size.
|
# single-pixel buffer up to the window size.
|
||||||
|
|
@ -436,6 +444,7 @@ executable('wltest',
|
||||||
code_by_name['input-method'],
|
code_by_name['input-method'],
|
||||||
code_by_name['content-type'],
|
code_by_name['content-type'],
|
||||||
code_by_name['single-pixel'],
|
code_by_name['single-pixel'],
|
||||||
|
code_by_name['alpha-modifier'],
|
||||||
code_by_name['viewporter'],
|
code_by_name['viewporter'],
|
||||||
code_by_name['gamma-control'],
|
code_by_name['gamma-control'],
|
||||||
code_by_name['xdg-dialog'],
|
code_by_name['xdg-dialog'],
|
||||||
|
|
@ -464,6 +473,7 @@ executable('wltest',
|
||||||
client_headers['input-method'],
|
client_headers['input-method'],
|
||||||
client_headers['content-type'],
|
client_headers['content-type'],
|
||||||
client_headers['single-pixel'],
|
client_headers['single-pixel'],
|
||||||
|
client_headers['alpha-modifier'],
|
||||||
client_headers['viewporter'],
|
client_headers['viewporter'],
|
||||||
client_headers['gamma-control'],
|
client_headers['gamma-control'],
|
||||||
client_headers['xdg-dialog'],
|
client_headers['xdg-dialog'],
|
||||||
|
|
|
||||||
|
|
@ -1360,7 +1360,8 @@ def test_standalone_headless_protocol_globals(globals_session, tmp_path):
|
||||||
"wp_presentation", "zxdg_output_manager_v1",
|
"wp_presentation", "zxdg_output_manager_v1",
|
||||||
"wp_viewporter", "wl_fixes",
|
"wp_viewporter", "wl_fixes",
|
||||||
"xdg_toplevel_tag_manager_v1",
|
"xdg_toplevel_tag_manager_v1",
|
||||||
"wp_color_representation_manager_v1"):
|
"wp_color_representation_manager_v1",
|
||||||
|
"wp_alpha_modifier_v1"):
|
||||||
assert want in names, \
|
assert want in names, \
|
||||||
f"missing global {want}; advertised: {sorted(names)}"
|
f"missing global {want}; advertised: {sorted(names)}"
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue