Fix background extensions
Thanks @Cloudef, it works great
This commit is contained in:
parent
65b8a5c3ce
commit
4a1584be53
|
@ -2,10 +2,11 @@
|
||||||
#define _SWAY_EXTENSIONS_H
|
#define _SWAY_EXTENSIONS_H
|
||||||
|
|
||||||
#include "list.h"
|
#include "list.h"
|
||||||
|
#include "wlc/wlc-wayland.h"
|
||||||
|
|
||||||
struct background_config {
|
struct background_config {
|
||||||
wlc_handle output;
|
wlc_handle output;
|
||||||
wlc_handle surface;
|
wlc_resource surface;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct desktop_shell_state {
|
struct desktop_shell_state {
|
||||||
|
|
|
@ -7,16 +7,15 @@
|
||||||
struct desktop_shell_state desktop_shell;
|
struct desktop_shell_state desktop_shell;
|
||||||
|
|
||||||
static void set_background(struct wl_client *client, struct wl_resource *resource,
|
static void set_background(struct wl_client *client, struct wl_resource *resource,
|
||||||
struct wl_resource *_output, struct wl_resource *_surface) {
|
struct wl_resource *_output, struct wl_resource *surface) {
|
||||||
wlc_handle output = wlc_handle_from_wl_output_resource(_output);
|
wlc_handle output = wlc_handle_from_wl_output_resource(_output);
|
||||||
wlc_handle surface = wlc_handle_from_wl_surface_resource(_surface);
|
if (!output) {
|
||||||
sway_log(L_DEBUG, "Setting surface %d as background for output %d", (int)surface, (int)output);
|
|
||||||
if (!output || !surface) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
sway_log(L_DEBUG, "Setting surface %p as background for output %d", surface, (int)output);
|
||||||
struct background_config *config = malloc(sizeof(struct background_config));
|
struct background_config *config = malloc(sizeof(struct background_config));
|
||||||
config->output = output;
|
config->output = output;
|
||||||
config->surface = surface;
|
config->surface = wlc_resource_from_wl_surface_resource(surface);
|
||||||
list_add(desktop_shell.backgrounds, config);
|
list_add(desktop_shell.backgrounds, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,6 @@ static void handle_output_pre_render(wlc_handle output) {
|
||||||
for (i = 0; i < desktop_shell.backgrounds->length; ++i) {
|
for (i = 0; i < desktop_shell.backgrounds->length; ++i) {
|
||||||
struct background_config *config = desktop_shell.backgrounds->items[i];
|
struct background_config *config = desktop_shell.backgrounds->items[i];
|
||||||
if (config->output == output) {
|
if (config->output == output) {
|
||||||
sway_log(L_DEBUG, "Rendering background surface %d", (int)config->surface);
|
|
||||||
wlc_surface_render(config->surface, &(struct wlc_geometry){ wlc_origin_zero, *wlc_output_get_resolution(output) });
|
wlc_surface_render(config->surface, &(struct wlc_geometry){ wlc_origin_zero, *wlc_output_get_resolution(output) });
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue