mirror of
https://github.com/hyprwm/Hyprland
synced 2026-05-05 07:38:23 +02:00
renderer: send one more frame on new_renderer
send one more frame to clients on new_renderer when we arent rendering at frame.
This commit is contained in:
parent
1146490857
commit
21bf47b7b3
3 changed files with 7 additions and 3 deletions
|
|
@ -31,6 +31,10 @@ void CMonitorFrameScheduler::onSyncFired() {
|
|||
|
||||
Debug::log(TRACE, "CMonitorFrameScheduler: {} -> onSyncFired, missed.", m_monitor->m_name);
|
||||
|
||||
// let clients know its a good time to render yet another frame
|
||||
if (!m_monitor->isMirror())
|
||||
g_pHyprRenderer->sendFrameEventsToMonitor(m_monitor.lock(), Time::steadyNow());
|
||||
|
||||
// we are out. The frame is taking too long to render. Begin rendering immediately, but don't commit yet.
|
||||
m_pendingThird = true;
|
||||
m_renderAtFrame = false; // block frame rendering, we already scheduled
|
||||
|
|
@ -51,7 +55,7 @@ void CMonitorFrameScheduler::onSyncFired() {
|
|||
|
||||
void CMonitorFrameScheduler::onPresented(const Time::steady_tp& when) {
|
||||
if (!m_monitor->isMirror())
|
||||
g_pHyprRenderer->sendFrameEventsMonitor(m_monitor.lock(), when);
|
||||
g_pHyprRenderer->sendFrameEventsToMonitor(m_monitor.lock(), when);
|
||||
|
||||
if (!newSchedulingEnabled())
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -1631,7 +1631,7 @@ void CHyprRenderer::renderWorkspace(PHLMONITOR pMonitor, PHLWORKSPACE pWorkspace
|
|||
renderAllClientsForWorkspace(pMonitor, pWorkspace, now, translate, scale);
|
||||
}
|
||||
|
||||
void CHyprRenderer::sendFrameEventsMonitor(PHLMONITOR pMonitor, const Time::steady_tp& when) {
|
||||
void CHyprRenderer::sendFrameEventsToMonitor(PHLMONITOR pMonitor, const Time::steady_tp& when) {
|
||||
auto sendFrame = [](const auto& w, const auto& when) {
|
||||
w->m_wlSurface->resource()->breadthfirst([when](SP<CWLSurfaceResource> r, const Vector2D& offset, void* d) { r->frame(when); }, nullptr);
|
||||
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ class CHyprRenderer {
|
|||
void renderSessionLockSurface(WP<SSessionLockSurface>, PHLMONITOR, const Time::steady_tp&);
|
||||
void renderDragIcon(PHLMONITOR, const Time::steady_tp&);
|
||||
void renderIMEPopup(CInputPopup*, PHLMONITOR, const Time::steady_tp&);
|
||||
void sendFrameEventsMonitor(PHLMONITOR pMonitor, const Time::steady_tp& now); // sends frame displayed events but doesn't actually render anything
|
||||
void sendFrameEventsToMonitor(PHLMONITOR pMonitor, const Time::steady_tp& now); // sends frame displayed events but doesn't actually render anything
|
||||
void renderSessionLockPrimer(PHLMONITOR pMonitor);
|
||||
void renderSessionLockMissing(PHLMONITOR pMonitor);
|
||||
void renderBackground(PHLMONITOR pMonitor);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue