screen-share: Avoid bit-shifting large values
Found while running with b_sanitize=undefined, which yields: runtime error: shift exponent 909199186 is too large for 32-bit type 'int' Converts the shm_formats to a boolean and checks for the correct pixel format it directly, instead of trying to gather them all in an array and then later on to do the check. Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
This commit is contained in:
parent
08ee337e4d
commit
af18a0c4c9
@ -60,7 +60,7 @@ struct shared_output {
|
|||||||
struct wl_registry *registry;
|
struct wl_registry *registry;
|
||||||
struct wl_compositor *compositor;
|
struct wl_compositor *compositor;
|
||||||
struct wl_shm *shm;
|
struct wl_shm *shm;
|
||||||
uint32_t shm_formats;
|
bool shm_formats_has_xrgb;
|
||||||
struct zwp_fullscreen_shell_v1 *fshell;
|
struct zwp_fullscreen_shell_v1 *fshell;
|
||||||
struct wl_output *output;
|
struct wl_output *output;
|
||||||
struct wl_surface *surface;
|
struct wl_surface *surface;
|
||||||
@ -701,7 +701,8 @@ shm_handle_format(void *data, struct wl_shm *wl_shm, uint32_t format)
|
|||||||
{
|
{
|
||||||
struct shared_output *so = data;
|
struct shared_output *so = data;
|
||||||
|
|
||||||
so->parent.shm_formats |= (1 << format);
|
if (format == WL_SHM_FORMAT_XRGB8888)
|
||||||
|
so->parent.shm_formats_has_xrgb = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct wl_shm_listener shm_listener = {
|
struct wl_shm_listener shm_listener = {
|
||||||
@ -967,7 +968,7 @@ shared_output_create(struct weston_output *output, int parent_fd)
|
|||||||
|
|
||||||
/* Get SHM formats */
|
/* Get SHM formats */
|
||||||
wl_display_roundtrip(so->parent.display);
|
wl_display_roundtrip(so->parent.display);
|
||||||
if (!(so->parent.shm_formats & (1 << WL_SHM_FORMAT_XRGB8888))) {
|
if (!so->parent.shm_formats_has_xrgb) {
|
||||||
weston_log("Screen share failed: "
|
weston_log("Screen share failed: "
|
||||||
"WL_SHM_FORMAT_XRGB8888 not available\n");
|
"WL_SHM_FORMAT_XRGB8888 not available\n");
|
||||||
goto err_display;
|
goto err_display;
|
||||||
|
Loading…
Reference in New Issue
Block a user