Revert "apply patch"

This reverts commit 828d07a4c1a80813fbc40eb3e95674240933cc80.
This commit is contained in:
Samuel Cobb 2024-07-25 14:57:00 +01:00
parent 51722ed593
commit cd309778a9
2 changed files with 26 additions and 1 deletions

View File

@ -114,7 +114,7 @@ namespace Aquamarine {
void removeIdleEvent(Hyprutils::Memory::CSharedPointer<std::function<void(void)>> pfn);
// utils
int reopenDRMNode(int drmFD, bool allowRenderNode = false);
int reopenDRMNode(int drmFD, bool allowRenderNode = true);
struct {
Hyprutils::Signal::CSignal newOutput;

View File

@ -271,6 +271,31 @@ void Aquamarine::CBackend::dispatchIdle() {
// Yoinked from wlroots, render/allocator/allocator.c
// Ref-counting reasons, see https://gitlab.freedesktop.org/mesa/drm/-/merge_requests/110
int Aquamarine::CBackend::reopenDRMNode(int drmFD, bool allowRenderNode) {
if (drmIsMaster(drmFD)) {
// Only recent kernels support empty leases
uint32_t lesseeID = 0;
int leaseFD = drmModeCreateLease(drmFD, nullptr, 0, O_CLOEXEC, &lesseeID);
log(AQ_LOG_TRACE, std::format("lesseeID: {}, leaseFD: {}", lesseeID, leaseFD));
if (leaseFD >= 0) {
log(AQ_LOG_TRACE, std::format("leaseFD Passed: {}", leaseFD));
char* name = nullptr;
if (allowRenderNode)
name = drmGetRenderDeviceNameFromFd(leaseFD);
if(name) {
log(AQ_LOG_TRACE, std::format("Render device has name inside drmIsMaster: {}", name));
}
free(name);
return leaseFD;
} else if (leaseFD != -EINVAL && leaseFD != -EOPNOTSUPP) {
log(AQ_LOG_ERROR, "reopenDRMNode: drmModeCreateLease failed");
return -1;
}
log(AQ_LOG_DEBUG, "reopenDRMNode: drmModeCreateLease failed, falling back to open");
}
char* name = nullptr;
if (allowRenderNode)
name = drmGetRenderDeviceNameFromFd(drmFD);