mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-23 01:25:58 +01:00
Mirrors: minor fixes
This commit is contained in:
parent
fb45f8f2f9
commit
1ead6c46f4
2 changed files with 11 additions and 4 deletions
|
@ -407,7 +407,7 @@ void CMonitor::setMirror(const std::string& mirrorOf) {
|
||||||
|
|
||||||
wlr_output_layout_remove(g_pCompositor->m_sWLROutputLayout, output);
|
wlr_output_layout_remove(g_pCompositor->m_sWLROutputLayout, output);
|
||||||
|
|
||||||
vecPosition = Vector2D(-1337420, -1337420);
|
vecPosition = PMIRRORMON->vecPosition;
|
||||||
|
|
||||||
pMirrorOf = PMIRRORMON;
|
pMirrorOf = PMIRRORMON;
|
||||||
|
|
||||||
|
|
|
@ -659,7 +659,7 @@ void countSubsurfacesIter(wlr_surface* pSurface, int x, int y, void* data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CHyprRenderer::attemptDirectScanout(CMonitor* pMonitor) {
|
bool CHyprRenderer::attemptDirectScanout(CMonitor* pMonitor) {
|
||||||
if (!pMonitor->mirrors.empty())
|
if (!pMonitor->mirrors.empty() || pMonitor->isMirror())
|
||||||
return false; // do not DS if this monitor is being mirrored. Will break the functionality.
|
return false; // do not DS if this monitor is being mirrored. Will break the functionality.
|
||||||
|
|
||||||
const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(pMonitor->activeWorkspace);
|
const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(pMonitor->activeWorkspace);
|
||||||
|
@ -1118,13 +1118,19 @@ void CHyprRenderer::damageMirrorsWith(CMonitor* pMonitor, pixman_region32_t* pRe
|
||||||
for (auto& mirror : pMonitor->mirrors) {
|
for (auto& mirror : pMonitor->mirrors) {
|
||||||
Vector2D scale = {mirror->vecSize.x / pMonitor->vecSize.x, mirror->vecSize.y / pMonitor->vecSize.y};
|
Vector2D scale = {mirror->vecSize.x / pMonitor->vecSize.x, mirror->vecSize.y / pMonitor->vecSize.y};
|
||||||
|
|
||||||
|
Debug::log(LOG, "mirrors: dmw %s for %s [%.2f, %.2f]", pMonitor->output->name, mirror->output->name, scale.x, scale.y);
|
||||||
|
|
||||||
pixman_region32_t rg;
|
pixman_region32_t rg;
|
||||||
pixman_region32_init(&rg);
|
pixman_region32_init(&rg);
|
||||||
pixman_region32_copy(&rg, pRegion);
|
pixman_region32_copy(&rg, pRegion);
|
||||||
wlr_region_scale_xy(&rg, &rg, scale.x, scale.y);
|
wlr_region_scale_xy(&rg, &rg, scale.x, scale.y);
|
||||||
pMonitor->addDamage(&rg);
|
pMonitor->addDamage(&rg);
|
||||||
pixman_region32_fini(&rg);
|
pixman_region32_fini(&rg);
|
||||||
|
|
||||||
|
g_pCompositor->scheduleFrameForMonitor(mirror);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Debug::log(LOG, "mirrors: dmw %s", pMonitor->output->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHyprRenderer::renderDragIcon(CMonitor* pMonitor, timespec* time) {
|
void CHyprRenderer::renderDragIcon(CMonitor* pMonitor, timespec* time) {
|
||||||
|
@ -1463,6 +1469,7 @@ bool CHyprRenderer::applyMonitorRule(CMonitor* pMonitor, SMonitorRule* pMonitorR
|
||||||
g_pHyprOpenGL->destroyMonitorResources(pMonitor);
|
g_pHyprOpenGL->destroyMonitorResources(pMonitor);
|
||||||
|
|
||||||
// updato wlroots
|
// updato wlroots
|
||||||
|
if (!pMonitor->isMirror())
|
||||||
wlr_output_layout_add(g_pCompositor->m_sWLROutputLayout, pMonitor->output, (int)pMonitor->vecPosition.x, (int)pMonitor->vecPosition.y);
|
wlr_output_layout_add(g_pCompositor->m_sWLROutputLayout, pMonitor->output, (int)pMonitor->vecPosition.x, (int)pMonitor->vecPosition.y);
|
||||||
|
|
||||||
// updato us
|
// updato us
|
||||||
|
|
Loading…
Reference in a new issue