41 lines
1.9 KiB
Diff
41 lines
1.9 KiB
Diff
--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
|
|
+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
|
|
@@ -42,7 +42,7 @@ const char kRequestInterfaceName[] = "org.freedesktop.portal.Request";
|
|
const char kScreenCastInterfaceName[] = "org.freedesktop.portal.ScreenCast";
|
|
|
|
|
|
-static void BaseCapturerPipeWire::SyncDmaBuf(int fd, uint64_t start_or_end) {
|
|
+void BaseCapturerPipeWire::SyncDmaBuf(int fd, uint64_t start_or_end) {
|
|
struct dma_buf_sync sync = { 0 };
|
|
|
|
sync.flags = start_or_end | DMA_BUF_SYNC_READ;
|
|
@@ -386,21 +386,23 @@ void BaseCapturerPipeWire::HandleBuffer(pw_buffer* buffer) {
|
|
map = nullptr;
|
|
src = nullptr;
|
|
} else if (spaBuffer->datas[0].type == pw_core_type_->data.MemFd) {
|
|
- map = mmap(nullptr, spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset,
|
|
- PROT_READ, MAP_PRIVATE, spaBuffer->datas[0].fd, 0);
|
|
+ map = static_cast<uint8_t*>(
|
|
+ mmap(nullptr, spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset,
|
|
+ PROT_READ, MAP_PRIVATE, spaBuffer->datas[0].fd, 0));
|
|
src = SPA_MEMBER(map, spaBuffer->datas[0].mapoffset, uint8_t);
|
|
} else if (spaBuffer->datas[0].type == pw_core_type_->data.DmaBuf) {
|
|
int fd;
|
|
fd = spaBuffer->datas[0].fd;
|
|
|
|
- map = mmap (nullptr, spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset,
|
|
- PROT_READ, MAP_PRIVATE, fd, 0);
|
|
+ map = static_cast<uint8_t*>(
|
|
+ mmap (nullptr, spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset,
|
|
+ PROT_READ, MAP_PRIVATE, fd, 0));
|
|
SyncDmaBuf(fd, DMA_BUF_SYNC_START);
|
|
|
|
src = SPA_MEMBER (map, spaBuffer->datas[0].mapoffset, uint8_t);
|
|
} else if (spaBuffer->datas[0].type == pw_core_type_->data.MemPtr) {
|
|
map = nullptr;
|
|
- src = spaBuffer->datas[0].data;
|
|
+ src = static_cast<uint8_t*>(spaBuffer->datas[0].data);
|
|
} else {
|
|
return;
|
|
}
|