buffer: handle the case where only MemPtr is selected

When we need to allocate buffers with shared memory but only MemPtr is
allowed, make sure we change this to MemFd.
This commit is contained in:
Wim Taymans 2021-11-29 11:23:32 +01:00
parent a0bf0e0686
commit 11b8a2aad4

View file

@ -318,10 +318,12 @@ int pw_buffers_negotiate(struct pw_context *context, uint32_t flags,
minsize = 8192;
max_buffers = 2;
}
if (types == SPA_ID_INVALID &&
SPA_FLAG_IS_SET(flags, PW_BUFFERS_FLAG_SHARED_MEM))
types = 1<<SPA_DATA_MemFd;
if (SPA_FLAG_IS_SET(flags, PW_BUFFERS_FLAG_SHARED_MEM)) {
if (types != SPA_ID_INVALID)
SPA_FLAG_CLEAR(types, 1<<SPA_DATA_MemPtr);
if (types == 0 || types == SPA_ID_INVALID)
types = 1<<SPA_DATA_MemFd;
}
if (SPA_FLAG_IS_SET(flags, PW_BUFFERS_FLAG_NO_MEM))
minsize = 0;