mirror of
https://github.com/hyprwm/xdg-desktop-portal-hyprland.git
synced 2024-11-24 23:25:58 +01:00
2f32d17448
Dequeuing a new buffer imidiately creates a problem when the buffer is destroid while renegotiation of a valid modifier because we can end up using a buffer which was freed while waiting for the buffer_done event. Then xdpw will segfault when requesting a copy with a nonexisting buffer. To fix this we can just dequeue a buffer right before we need it. This makes the fallback via on_process obsolete since we dequeue the buffer at the lates possible time.
18 lines
642 B
C
18 lines
642 B
C
#ifndef PIPEWIRE_SCREENCAST_H
|
|
#define PIPEWIRE_SCREENCAST_H
|
|
|
|
#include "screencast_common.h"
|
|
|
|
#define XDPW_PWR_BUFFERS 2
|
|
#define XDPW_PWR_BUFFERS_MIN 2
|
|
#define XDPW_PWR_ALIGN 16
|
|
|
|
void xdpw_pwr_dequeue_buffer(struct xdpw_screencast_instance *cast);
|
|
void xdpw_pwr_enqueue_buffer(struct xdpw_screencast_instance *cast);
|
|
void pwr_update_stream_param(struct xdpw_screencast_instance *cast);
|
|
void xdpw_pwr_stream_create(struct xdpw_screencast_instance *cast);
|
|
void xdpw_pwr_stream_destroy(struct xdpw_screencast_instance *cast);
|
|
int xdpw_pwr_context_create(struct xdpw_state *state);
|
|
void xdpw_pwr_context_destroy(struct xdpw_state *state);
|
|
|
|
#endif
|