mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-07 20:06:00 +01:00
parent
4f804d5f96
commit
cfd68af5b6
2 changed files with 11 additions and 10 deletions
|
@ -518,6 +518,14 @@ void CWindow::onMap() {
|
||||||
"CWindow");
|
"CWindow");
|
||||||
|
|
||||||
m_vReportedSize = m_vPendingReportedSize;
|
m_vReportedSize = m_vPendingReportedSize;
|
||||||
|
|
||||||
|
for (const auto& ctrl : g_pHyprRenderer->m_vTearingControllers) {
|
||||||
|
if (ctrl->pWlrHint->surface != m_pWLSurface.wlr())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
m_bTearingHint = ctrl->pWlrHint->current;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CWindow::onBorderAngleAnimEnd(void* ptr) {
|
void CWindow::onBorderAngleAnimEnd(void* ptr) {
|
||||||
|
|
|
@ -233,14 +233,7 @@ void Events::listener_setCursorShape(wl_listener* listener, void* data) {
|
||||||
void Events::listener_newTearingHint(wl_listener* listener, void* data) {
|
void Events::listener_newTearingHint(wl_listener* listener, void* data) {
|
||||||
const auto TCTL = (wlr_tearing_control_v1*)data;
|
const auto TCTL = (wlr_tearing_control_v1*)data;
|
||||||
|
|
||||||
const auto PWINDOW = g_pCompositor->getWindowFromSurface(TCTL->surface);
|
Debug::log(LOG, "New tearing hint at {:x}", (uintptr_t)data);
|
||||||
|
|
||||||
if (!PWINDOW) {
|
|
||||||
Debug::log(ERR, "Tearing hint {} was attached to an unknown surface", (uintptr_t)data);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Debug::log(LOG, "New tearing hint for window {} at {}", PWINDOW, (uintptr_t)data);
|
|
||||||
|
|
||||||
const auto NEWCTRL = g_pHyprRenderer->m_vTearingControllers.emplace_back(std::make_unique<STearingController>()).get();
|
const auto NEWCTRL = g_pHyprRenderer->m_vTearingControllers.emplace_back(std::make_unique<STearingController>()).get();
|
||||||
NEWCTRL->pWlrHint = (wlr_tearing_control_v1*)data;
|
NEWCTRL->pWlrHint = (wlr_tearing_control_v1*)data;
|
||||||
|
@ -248,7 +241,7 @@ void Events::listener_newTearingHint(wl_listener* listener, void* data) {
|
||||||
NEWCTRL->hyprListener_destroy.initCallback(
|
NEWCTRL->hyprListener_destroy.initCallback(
|
||||||
&NEWCTRL->pWlrHint->events.destroy,
|
&NEWCTRL->pWlrHint->events.destroy,
|
||||||
[&](void* owner, void* data) {
|
[&](void* owner, void* data) {
|
||||||
Debug::log(LOG, "Destroyed {} tearing hint", (uintptr_t)((STearingController*)owner)->pWlrHint);
|
Debug::log(LOG, "Destroyed {:x} tearing hint", (uintptr_t)((STearingController*)owner)->pWlrHint);
|
||||||
|
|
||||||
std::erase_if(g_pHyprRenderer->m_vTearingControllers, [&](const auto& other) { return other.get() == owner; });
|
std::erase_if(g_pHyprRenderer->m_vTearingControllers, [&](const auto& other) { return other.get() == owner; });
|
||||||
},
|
},
|
||||||
|
@ -264,7 +257,7 @@ void Events::listener_newTearingHint(wl_listener* listener, void* data) {
|
||||||
if (PWINDOW) {
|
if (PWINDOW) {
|
||||||
PWINDOW->m_bTearingHint = (bool)TEARINGHINT->pWlrHint->current;
|
PWINDOW->m_bTearingHint = (bool)TEARINGHINT->pWlrHint->current;
|
||||||
|
|
||||||
Debug::log(LOG, "Hint {} (window {}) set tearing hint to {}", (uintptr_t)TEARINGHINT->pWlrHint, PWINDOW, (uint32_t)TEARINGHINT->pWlrHint->current);
|
Debug::log(LOG, "Hint {:x} (window {}) set tearing hint to {}", (uintptr_t)TEARINGHINT->pWlrHint, PWINDOW, (uint32_t)TEARINGHINT->pWlrHint->current);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
NEWCTRL, "TearingController");
|
NEWCTRL, "TearingController");
|
||||||
|
|
Loading…
Reference in a new issue