mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-22 18:46:00 +01:00
syncobj: wait for deadline instead of available
avoids slow apps from lagging the desktop
This commit is contained in:
parent
10d7219807
commit
cf6a1716ae
1 changed files with 3 additions and 3 deletions
|
@ -58,8 +58,8 @@ CDRMSyncobjSurfaceResource::CDRMSyncobjSurfaceResource(SP<CWpLinuxDrmSyncobjSurf
|
||||||
if (!pending.acquireTimeline)
|
if (!pending.acquireTimeline)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// wait for the acquire timeline to materialize
|
// wait for the buffer to be released by the gpu before sending a commit to avoid lagging the desktop
|
||||||
auto materialized = pending.acquireTimeline->timeline->check(pending.acquirePoint, DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE);
|
auto materialized = pending.acquireTimeline->timeline->check(pending.acquirePoint, DRM_SYNCOBJ_WAIT_FLAGS_WAIT_DEADLINE);
|
||||||
if (!materialized.has_value()) {
|
if (!materialized.has_value()) {
|
||||||
LOGM(ERR, "Failed to check the acquire timeline");
|
LOGM(ERR, "Failed to check the acquire timeline");
|
||||||
resource->noMemory();
|
resource->noMemory();
|
||||||
|
@ -70,7 +70,7 @@ CDRMSyncobjSurfaceResource::CDRMSyncobjSurfaceResource(SP<CWpLinuxDrmSyncobjSurf
|
||||||
return;
|
return;
|
||||||
|
|
||||||
surface->lockPendingState();
|
surface->lockPendingState();
|
||||||
pending.acquireTimeline->timeline->addWaiter([this]() { surface->unlockPendingState(); }, pending.acquirePoint, DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE);
|
pending.acquireTimeline->timeline->addWaiter([this]() { surface->unlockPendingState(); }, pending.acquirePoint, DRM_SYNCOBJ_WAIT_FLAGS_WAIT_DEADLINE);
|
||||||
});
|
});
|
||||||
|
|
||||||
listeners.surfaceCommit = surface->events.roleCommit.registerListener([this](std::any d) {
|
listeners.surfaceCommit = surface->events.roleCommit.registerListener([this](std::any d) {
|
||||||
|
|
Loading…
Reference in a new issue