mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-22 21:05:58 +01:00
gamma-control: Read ramps using pread
read advances the file description offset, and requires the client to ensure that it is reset appropriately before the next gamma ramp submission. As there is no event to indicate that wlroots finished processing the new gamma ramp, this can result in a race between the client seeking in the file and wlroots reading its content. Use pread with a fixed offset instead. Fixes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3655
This commit is contained in:
parent
b61d5922f1
commit
15f2f6642f
1 changed files with 2 additions and 1 deletions
|
@ -1,3 +1,4 @@
|
||||||
|
#define _POSIX_C_SOURCE 200809L
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -119,7 +120,7 @@ static void gamma_control_handle_set_gamma(struct wl_client *client,
|
||||||
goto error_fd;
|
goto error_fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
ssize_t n_read = read(fd, table, table_size);
|
ssize_t n_read = pread(fd, table, table_size, 0);
|
||||||
if (n_read < 0) {
|
if (n_read < 0) {
|
||||||
wlr_log_errno(WLR_ERROR, "failed to read gamma table");
|
wlr_log_errno(WLR_ERROR, "failed to read gamma table");
|
||||||
gamma_control_send_failed(gamma_control);
|
gamma_control_send_failed(gamma_control);
|
||||||
|
|
Loading…
Reference in a new issue