WIP SDL3 compatibility

This commit is contained in:
Cameron Gutman
2025-01-31 01:13:17 -06:00
parent 5290305944
commit 231a67946d
34 changed files with 772 additions and 497 deletions
+9 -9
View File
@@ -55,7 +55,7 @@ int getSdlFdEntryIndex(bool unused)
// Returns true if the final SDL FD was removed
bool removeSdlFd(int fd)
{
SDL_AtomicLock(&g_FdTableLock);
SDL_LockSpinlock(&g_FdTableLock);
if (g_SdlDrmMasterFdCount != 0) {
// Clear the entry for this fd from the table
for (int i = 0; i < MAX_SDL_FD_COUNT; i++) {
@@ -67,11 +67,11 @@ bool removeSdlFd(int fd)
}
if (g_SdlDrmMasterFdCount == 0) {
SDL_AtomicUnlock(&g_FdTableLock);
SDL_UnlockSpinlock(&g_FdTableLock);
return true;
}
}
SDL_AtomicUnlock(&g_FdTableLock);
SDL_UnlockSpinlock(&g_FdTableLock);
return false;
}
@@ -82,12 +82,12 @@ int takeMasterFromSdlFd()
// Since all SDL FDs are actually dups of each other
// we can take master from any one of them.
SDL_AtomicLock(&g_FdTableLock);
SDL_LockSpinlock(&g_FdTableLock);
int fdIndex = getSdlFdEntryIndex(false);
if (fdIndex != -1) {
fd = g_SdlDrmMasterFds[fdIndex];
}
SDL_AtomicUnlock(&g_FdTableLock);
SDL_UnlockSpinlock(&g_FdTableLock);
if (fd >= 0 && drmDropMaster(fd) == 0) {
return fd;
@@ -126,12 +126,12 @@ int openHook(const char *funcname, const char *pathname, int flags, va_list va)
int allocatedFdIndex;
// It is our device. Time to do the magic!
SDL_AtomicLock(&g_FdTableLock);
SDL_LockSpinlock(&g_FdTableLock);
// Get a free index for us to put the new entry
freeFdIndex = getSdlFdEntryIndex(true);
if (freeFdIndex < 0) {
SDL_AtomicUnlock(&g_FdTableLock);
SDL_UnlockSpinlock(&g_FdTableLock);
SDL_assert(freeFdIndex >= 0);
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
"No unused SDL FD table entries!");
@@ -151,7 +151,7 @@ int openHook(const char *funcname, const char *pathname, int flags, va_list va)
else {
// Drop master on Qt's FD so we can pick it up for SDL.
if (drmDropMaster(g_QtDrmMasterFd) < 0) {
SDL_AtomicUnlock(&g_FdTableLock);
SDL_UnlockSpinlock(&g_FdTableLock);
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
"Failed to drop master on Qt DRM FD: %d",
errno);
@@ -182,7 +182,7 @@ int openHook(const char *funcname, const char *pathname, int flags, va_list va)
g_SdlDrmMasterFdCount++;
}
SDL_AtomicUnlock(&g_FdTableLock);
SDL_UnlockSpinlock(&g_FdTableLock);
}
}
}