mirror of
https://cagebreak.project-repo.co/cagebreak.git
synced 2026-08-21 13:04:18 +02:00
Fix gamma control
This commit is contained in:
parent
5db2dbfd67
commit
0aaf2d070b
4 changed files with 32 additions and 5 deletions
|
|
@ -280,7 +280,6 @@ main(int argc, char *argv[]) {
|
|||
struct wlr_viewporter *viewporter = NULL;
|
||||
struct wlr_presentation *presentation = NULL;
|
||||
struct wlr_xdg_output_manager_v1 *output_manager = NULL;
|
||||
struct wlr_gamma_control_manager_v1 *gamma_control_manager = NULL;
|
||||
struct wlr_xdg_shell *xdg_shell = NULL;
|
||||
wl_list_init(&server.input_config);
|
||||
wl_list_init(&server.output_config);
|
||||
|
|
@ -566,13 +565,17 @@ main(int argc, char *argv[]) {
|
|||
goto end;
|
||||
}
|
||||
|
||||
gamma_control_manager =
|
||||
server.gamma_control =
|
||||
wlr_gamma_control_manager_v1_create(server.wl_display);
|
||||
if(!gamma_control_manager) {
|
||||
if(!server.gamma_control) {
|
||||
wlr_log(WLR_ERROR, "Unable to create the gamma control manager");
|
||||
ret = 1;
|
||||
goto end;
|
||||
}
|
||||
server.gamma_control_set_gamma.notify =
|
||||
handle_output_gamma_control_set_gamma;
|
||||
wl_signal_add(&server.gamma_control->events.set_gamma,
|
||||
&server.gamma_control_set_gamma);
|
||||
|
||||
#if CG_HAS_XWAYLAND
|
||||
server.xwayland = wlr_xwayland_create(server.wl_display, compositor, true);
|
||||
|
|
|
|||
23
output.c
23
output.c
|
|
@ -18,6 +18,7 @@
|
|||
#include <wlr/types/wlr_compositor.h>
|
||||
#include <wlr/types/wlr_cursor.h>
|
||||
#include <wlr/types/wlr_data_device.h>
|
||||
#include <wlr/types/wlr_gamma_control_v1.h>
|
||||
#include <wlr/types/wlr_output.h>
|
||||
#include <wlr/types/wlr_output_layout.h>
|
||||
#include <wlr/types/wlr_scene.h>
|
||||
|
|
@ -187,6 +188,27 @@ handle_output_destroy(struct wl_listener *listener, void *data) {
|
|||
output_destroy(output);
|
||||
}
|
||||
|
||||
void
|
||||
handle_output_gamma_control_set_gamma(struct wl_listener *listener,
|
||||
void *data) {
|
||||
struct cg_server *server =
|
||||
wl_container_of(listener, server, gamma_control_set_gamma);
|
||||
const struct wlr_gamma_control_manager_v1_set_gamma_event *event = data;
|
||||
|
||||
struct wlr_gamma_control_v1 *gamma_control =
|
||||
wlr_gamma_control_manager_v1_get_control(server->gamma_control,
|
||||
event->output);
|
||||
|
||||
struct wlr_output_state pending = {0};
|
||||
wlr_gamma_control_v1_apply(gamma_control, &pending);
|
||||
if(!wlr_output_test_state(event->output, &pending)) {
|
||||
wlr_gamma_control_v1_send_failed_and_destroy(gamma_control);
|
||||
} else {
|
||||
wlr_output_commit_state(event->output, &pending);
|
||||
wlr_output_schedule_frame(event->output);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
handle_output_frame(struct wl_listener *listener, void *data) {
|
||||
struct cg_output *output = wl_container_of(listener, output, frame);
|
||||
|
|
@ -621,7 +643,6 @@ handle_new_output(struct wl_listener *listener, void *data) {
|
|||
|
||||
if(!reinit) {
|
||||
output->server = server;
|
||||
output->last_scanned_out_view = NULL;
|
||||
output->name = strdup(wlr_output->name);
|
||||
|
||||
struct cg_output_priorities *it;
|
||||
|
|
|
|||
3
output.h
3
output.h
|
|
@ -32,7 +32,6 @@ struct cg_output {
|
|||
struct wlr_box layout_box;
|
||||
int curr_workspace;
|
||||
int priority;
|
||||
struct cg_view *last_scanned_out_view;
|
||||
enum output_role role;
|
||||
bool destroyed;
|
||||
char *name;
|
||||
|
|
@ -76,4 +75,6 @@ void
|
|||
output_make_workspace_fullscreen(struct cg_output *output, int ws);
|
||||
int
|
||||
output_get_num(const struct cg_output *output);
|
||||
void
|
||||
handle_output_gamma_control_set_gamma(struct wl_listener *listener, void *data);
|
||||
#endif
|
||||
|
|
|
|||
2
server.h
2
server.h
|
|
@ -29,6 +29,8 @@ struct cg_server {
|
|||
struct wlr_idle_notifier_v1 *idle;
|
||||
struct wlr_idle_inhibit_manager_v1 *idle_inhibit_v1;
|
||||
struct wl_listener new_idle_inhibitor_v1;
|
||||
struct wlr_gamma_control_manager_v1 *gamma_control;
|
||||
struct wl_listener gamma_control_set_gamma;
|
||||
struct wl_list inhibitors;
|
||||
|
||||
struct wlr_output_layout *output_layout;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue