disable buffer readability checks on intel (#11515)
* dmabuf: disable buffer read check on intel readability checks directly on buffer fds on some intel laptops is broken, see https://gitlab.freedesktop.org/drm/intel/-/issues/9415 * sync: use rvalue ref in addwaiter doonreadable use rvalue reference in addwaiter and doonreadable, because we store the function in the SReadableWaiter a lot of the time, move it into place there when that happends or let it go out of scope after function call.
This commit is contained in:
parent
d9cf1cb78e
commit
ced38b1b0f
10 changed files with 27 additions and 13 deletions
|
|
@ -193,13 +193,13 @@ void CEventLoopManager::doLater(const std::function<void()>& fn) {
|
|||
&m_idle);
|
||||
}
|
||||
|
||||
void CEventLoopManager::doOnReadable(CFileDescriptor fd, const std::function<void()>& fn) {
|
||||
void CEventLoopManager::doOnReadable(CFileDescriptor fd, std::function<void()>&& fn) {
|
||||
if (!fd.isValid() || fd.isReadable()) {
|
||||
fn();
|
||||
return;
|
||||
}
|
||||
|
||||
auto& waiter = m_readableWaiters.emplace_back(makeUnique<SReadableWaiter>(nullptr, std::move(fd), fn));
|
||||
auto& waiter = m_readableWaiters.emplace_back(makeUnique<SReadableWaiter>(nullptr, std::move(fd), std::move(fn)));
|
||||
waiter->source = wl_event_loop_add_fd(g_pEventLoopManager->m_wayland.loop, waiter->fd.get(), WL_EVENT_READABLE, ::handleWaiterFD, waiter.get());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ class CEventLoopManager {
|
|||
|
||||
// schedule function to when fd is readable (WL_EVENT_READABLE / POLLIN),
|
||||
// takes ownership of fd
|
||||
void doOnReadable(Hyprutils::OS::CFileDescriptor fd, const std::function<void()>& fn);
|
||||
void doOnReadable(Hyprutils::OS::CFileDescriptor fd, std::function<void()>&& fn);
|
||||
void onFdReadable(SReadableWaiter* waiter);
|
||||
|
||||
private:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue