all: chase hyprland (#334)
Some checks failed
Nix / build (push) Has been cancelled

Co-authored-by: Zebra2711 <zebra2711@users.noreply.github.com>
This commit is contained in:
Zebra2711 2025-05-06 08:57:20 +07:00 committed by GitHub
parent fcf1c2ae6f
commit eab6921631
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 50 additions and 50 deletions

View file

@ -7,7 +7,7 @@ CBorderPPPassElement::CBorderPPPassElement(const CBorderPPPassElement::SBorderPP
} }
void CBorderPPPassElement::draw(const CRegion& damage) { void CBorderPPPassElement::draw(const CRegion& damage) {
data.deco->drawPass(g_pHyprOpenGL->m_RenderData.pMonitor.lock(), data.a); data.deco->drawPass(g_pHyprOpenGL->m_renderData.pMonitor.lock(), data.a);
} }
bool CBorderPPPassElement::needsLiveBlur() { bool CBorderPPPassElement::needsLiveBlur() {

View file

@ -8,8 +8,8 @@
#include "globals.hpp" #include "globals.hpp"
CBordersPlusPlus::CBordersPlusPlus(PHLWINDOW pWindow) : IHyprWindowDecoration(pWindow), m_pWindow(pWindow) { CBordersPlusPlus::CBordersPlusPlus(PHLWINDOW pWindow) : IHyprWindowDecoration(pWindow), m_pWindow(pWindow) {
m_vLastWindowPos = pWindow->m_realPosition->value(); m_lastWindowPos = pWindow->m_realPosition->value();
m_vLastWindowSize = pWindow->m_realSize->value(); m_lastWindowSize = pWindow->m_realSize->value();
} }
CBordersPlusPlus::~CBordersPlusPlus() { CBordersPlusPlus::~CBordersPlusPlus() {
@ -73,7 +73,7 @@ void CBordersPlusPlus::draw(PHLMONITOR pMonitor, const float& a) {
CBorderPPPassElement::SBorderPPData data; CBorderPPPassElement::SBorderPPData data;
data.deco = this; data.deco = this;
g_pHyprRenderer->m_sRenderPass.add(makeShared<CBorderPPPassElement>(data)); g_pHyprRenderer->m_renderPass.add(makeShared<CBorderPPPassElement>(data));
} }
void CBordersPlusPlus::drawPass(PHLMONITOR pMonitor, const float& a) { void CBordersPlusPlus::drawPass(PHLMONITOR pMonitor, const float& a) {
@ -143,7 +143,7 @@ void CBordersPlusPlus::drawPass(PHLMONITOR pMonitor, const float& a) {
m_seExtents = {{fullThickness, fullThickness}, {fullThickness, fullThickness}}; m_seExtents = {{fullThickness, fullThickness}, {fullThickness, fullThickness}};
m_bLastRelativeBox = CBox{0, 0, m_vLastWindowSize.x, m_vLastWindowSize.y}.addExtents(m_seExtents); m_bLastRelativeBox = CBox{0, 0, m_lastWindowSize.x, m_lastWindowSize.y}.addExtents(m_seExtents);
if (fullThickness != m_fLastThickness) { if (fullThickness != m_fLastThickness) {
m_fLastThickness = fullThickness; m_fLastThickness = fullThickness;
@ -156,13 +156,13 @@ eDecorationType CBordersPlusPlus::getDecorationType() {
} }
void CBordersPlusPlus::updateWindow(PHLWINDOW pWindow) { void CBordersPlusPlus::updateWindow(PHLWINDOW pWindow) {
m_vLastWindowPos = pWindow->m_realPosition->value(); m_lastWindowPos = pWindow->m_realPosition->value();
m_vLastWindowSize = pWindow->m_realSize->value(); m_lastWindowSize = pWindow->m_realSize->value();
damageEntire(); damageEntire();
} }
void CBordersPlusPlus::damageEntire() { void CBordersPlusPlus::damageEntire() {
CBox dm = m_bLastRelativeBox.copy().translate(m_vLastWindowPos).expand(2); CBox dm = m_bLastRelativeBox.copy().translate(m_lastWindowPos).expand(2);
g_pHyprRenderer->damageBox(dm); g_pHyprRenderer->damageBox(dm);
} }

View file

@ -37,8 +37,8 @@ class CBordersPlusPlus : public IHyprWindowDecoration {
CBox m_bLastRelativeBox; CBox m_bLastRelativeBox;
CBox m_bAssignedGeometry; CBox m_bAssignedGeometry;
Vector2D m_vLastWindowPos; Vector2D m_lastWindowPos;
Vector2D m_vLastWindowSize; Vector2D m_lastWindowSize;
double m_fLastThickness = 0; double m_fLastThickness = 0;

View file

@ -60,5 +60,5 @@ APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) {
} }
APICALL EXPORT void PLUGIN_EXIT() { APICALL EXPORT void PLUGIN_EXIT() {
g_pHyprRenderer->m_sRenderPass.removeAllOfType("CBorderPPPassElement"); g_pHyprRenderer->m_renderPass.removeAllOfType("CBorderPPPassElement");
} }

View file

@ -7,7 +7,7 @@ CBarPassElement::CBarPassElement(const CBarPassElement::SBarData& data_) : data(
} }
void CBarPassElement::draw(const CRegion& damage) { void CBarPassElement::draw(const CRegion& damage) {
data.deco->renderPass(g_pHyprOpenGL->m_RenderData.pMonitor.lock(), data.a); data.deco->renderPass(g_pHyprOpenGL->m_renderData.pMonitor.lock(), data.a);
} }
bool CBarPassElement::needsLiveBlur() { bool CBarPassElement::needsLiveBlur() {
@ -24,7 +24,7 @@ bool CBarPassElement::needsLiveBlur() {
std::optional<CBox> CBarPassElement::boundingBox() { std::optional<CBox> CBarPassElement::boundingBox() {
// Temporary fix: expand the bar bb a bit, otherwise occlusion gets too aggressive. // Temporary fix: expand the bar bb a bit, otherwise occlusion gets too aggressive.
return data.deco->assignedBoxGlobal().translate(-g_pHyprOpenGL->m_RenderData.pMonitor->m_position).expand(10); return data.deco->assignedBoxGlobal().translate(-g_pHyprOpenGL->m_renderData.pMonitor->m_position).expand(10);
} }
bool CBarPassElement::needsPrecomputeBlur() { bool CBarPassElement::needsPrecomputeBlur() {

View file

@ -269,7 +269,7 @@ void CHyprBar::renderText(SP<CTexture> out, const std::string& text, const CHypr
// copy the data to an OpenGL texture we have // copy the data to an OpenGL texture we have
const auto DATA = cairo_image_surface_get_data(CAIROSURFACE); const auto DATA = cairo_image_surface_get_data(CAIROSURFACE);
out->allocate(); out->allocate();
glBindTexture(GL_TEXTURE_2D, out->m_iTexID); glBindTexture(GL_TEXTURE_2D, out->m_texID);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
@ -358,7 +358,7 @@ void CHyprBar::renderBarTitle(const Vector2D& bufferSize, const float scale) {
// copy the data to an OpenGL texture we have // copy the data to an OpenGL texture we have
const auto DATA = cairo_image_surface_get_data(CAIROSURFACE); const auto DATA = cairo_image_surface_get_data(CAIROSURFACE);
m_pTextTex->allocate(); m_pTextTex->allocate();
glBindTexture(GL_TEXTURE_2D, m_pTextTex->m_iTexID); glBindTexture(GL_TEXTURE_2D, m_pTextTex->m_texID);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
@ -426,7 +426,7 @@ void CHyprBar::renderBarButtons(const Vector2D& bufferSize, const float scale) {
// copy the data to an OpenGL texture we have // copy the data to an OpenGL texture we have
const auto DATA = cairo_image_surface_get_data(CAIROSURFACE); const auto DATA = cairo_image_surface_get_data(CAIROSURFACE);
m_pButtonsTex->allocate(); m_pButtonsTex->allocate();
glBindTexture(GL_TEXTURE_2D, m_pButtonsTex->m_iTexID); glBindTexture(GL_TEXTURE_2D, m_pButtonsTex->m_texID);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
@ -467,7 +467,7 @@ void CHyprBar::renderBarButtonsText(CBox* barBox, const float scale, const float
bool hovering = VECINRECT(COORDS, currentPos.x, currentPos.y, currentPos.x + button.size + **PBARBUTTONPADDING, currentPos.y + button.size); bool hovering = VECINRECT(COORDS, currentPos.x, currentPos.y, currentPos.x + button.size + **PBARBUTTONPADDING, currentPos.y + button.size);
noScaleOffset += **PBARBUTTONPADDING + button.size; noScaleOffset += **PBARBUTTONPADDING + button.size;
if (button.iconTex->m_iTexID == 0 /* icon is not rendered */ && !button.icon.empty()) { if (button.iconTex->m_texID == 0 /* icon is not rendered */ && !button.icon.empty()) {
// render icon // render icon
const Vector2D BUFSIZE = {scaledButtonSize, scaledButtonSize}; const Vector2D BUFSIZE = {scaledButtonSize, scaledButtonSize};
auto fgcol = button.userfg ? button.fgcol : (button.bgcol.r + button.bgcol.g + button.bgcol.b < 1) ? CHyprColor(0xFFFFFFFF) : CHyprColor(0xFF000000); auto fgcol = button.userfg ? button.fgcol : (button.bgcol.r + button.bgcol.g + button.bgcol.b < 1) ? CHyprColor(0xFFFFFFFF) : CHyprColor(0xFF000000);
@ -475,7 +475,7 @@ void CHyprBar::renderBarButtonsText(CBox* barBox, const float scale, const float
renderText(button.iconTex, button.icon, fgcol, BUFSIZE, scale, button.size * 0.62); renderText(button.iconTex, button.icon, fgcol, BUFSIZE, scale, button.size * 0.62);
} }
if (button.iconTex->m_iTexID == 0) if (button.iconTex->m_texID == 0)
continue; continue;
CBox pos = {barBox->x + (BUTTONSRIGHT ? barBox->width - offset - scaledButtonSize : offset), barBox->y + (barBox->height - scaledButtonSize) / 2.0, scaledButtonSize, CBox pos = {barBox->x + (BUTTONSRIGHT ? barBox->width - offset - scaledButtonSize : offset), barBox->y + (barBox->height - scaledButtonSize) / 2.0, scaledButtonSize,
@ -504,7 +504,7 @@ void CHyprBar::draw(PHLMONITOR pMonitor, const float& a) {
return; return;
auto data = CBarPassElement::SBarData{this, a}; auto data = CBarPassElement::SBarData{this, a};
g_pHyprRenderer->m_sRenderPass.add(makeShared<CBarPassElement>(data)); g_pHyprRenderer->m_renderPass.add(makeShared<CBarPassElement>(data));
} }
void CHyprBar::renderPass(PHLMONITOR pMonitor, const float& a) { void CHyprBar::renderPass(PHLMONITOR pMonitor, const float& a) {
@ -589,7 +589,7 @@ void CHyprBar::renderPass(PHLMONITOR pMonitor, const float& a) {
g_pHyprOpenGL->renderRect(titleBarBox, color, scaledRounding, m_pWindow->roundingPower()); g_pHyprOpenGL->renderRect(titleBarBox, color, scaledRounding, m_pWindow->roundingPower());
// render title // render title
if (**PENABLETITLE && (m_szLastTitle != PWINDOW->m_title || m_bWindowSizeChanged || m_pTextTex->m_iTexID == 0 || m_bTitleColorChanged)) { if (**PENABLETITLE && (m_szLastTitle != PWINDOW->m_title || m_bWindowSizeChanged || m_pTextTex->m_texID == 0 || m_bTitleColorChanged)) {
m_szLastTitle = PWINDOW->m_title; m_szLastTitle = PWINDOW->m_title;
renderBarTitle(BARBUF, pMonitor->m_scale); renderBarTitle(BARBUF, pMonitor->m_scale);
} }

View file

@ -164,5 +164,5 @@ APICALL EXPORT void PLUGIN_EXIT() {
for (auto& m : g_pCompositor->m_monitors) for (auto& m : g_pCompositor->m_monitors)
m->m_scheduledRecalc = true; m->m_scheduledRecalc = true;
g_pHyprRenderer->m_sRenderPass.removeAllOfType("CBarPassElement"); g_pHyprRenderer->m_renderPass.removeAllOfType("CBarPassElement");
} }

View file

@ -230,5 +230,5 @@ APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) {
} }
APICALL EXPORT void PLUGIN_EXIT() { APICALL EXPORT void PLUGIN_EXIT() {
g_pHyprRenderer->m_sRenderPass.removeAllOfType("COverviewPassElement"); g_pHyprRenderer->m_renderPass.removeAllOfType("COverviewPassElement");
} }

View file

@ -149,7 +149,7 @@ COverview::COverview(PHLWORKSPACE startedOn_, bool swipe_) : startedOn(startedOn
image.box = {(i % SIDE_LENGTH) * tileRenderSize.x + (i % SIDE_LENGTH) * GAP_WIDTH, (i / SIDE_LENGTH) * tileRenderSize.y + (i / SIDE_LENGTH) * GAP_WIDTH, tileRenderSize.x, image.box = {(i % SIDE_LENGTH) * tileRenderSize.x + (i % SIDE_LENGTH) * GAP_WIDTH, (i / SIDE_LENGTH) * tileRenderSize.y + (i / SIDE_LENGTH) * GAP_WIDTH, tileRenderSize.x,
tileRenderSize.y}; tileRenderSize.y};
g_pHyprOpenGL->m_RenderData.blockScreenShader = true; g_pHyprOpenGL->m_renderData.blockScreenShader = true;
g_pHyprRenderer->endRender(); g_pHyprRenderer->endRender();
} }
@ -238,7 +238,7 @@ void COverview::redrawID(int id, bool forcelowres) {
auto& image = images[id]; auto& image = images[id];
if (image.fb.m_vSize != monbox.size()) { if (image.fb.m_size != monbox.size()) {
image.fb.release(); image.fb.release();
image.fb.alloc(monbox.w, monbox.h, pMonitor->m_output->state->state().drmFormat); image.fb.alloc(monbox.w, monbox.h, pMonitor->m_output->state->state().drmFormat);
} }
@ -274,7 +274,7 @@ void COverview::redrawID(int id, bool forcelowres) {
} else } else
g_pHyprRenderer->renderWorkspace(pMonitor.lock(), PWORKSPACE, Time::steadyNow(), monbox); g_pHyprRenderer->renderWorkspace(pMonitor.lock(), PWORKSPACE, Time::steadyNow(), monbox);
g_pHyprOpenGL->m_RenderData.blockScreenShader = true; g_pHyprOpenGL->m_renderData.blockScreenShader = true;
g_pHyprRenderer->endRender(); g_pHyprRenderer->endRender();
pMonitor->m_activeSpecialWorkspace = openSpecial; pMonitor->m_activeSpecialWorkspace = openSpecial;
@ -381,7 +381,7 @@ void COverview::onWorkspaceChange() {
} }
void COverview::render() { void COverview::render() {
g_pHyprRenderer->m_sRenderPass.add(makeShared<COverviewPassElement>()); g_pHyprRenderer->m_renderPass.add(makeShared<COverviewPassElement>());
} }
void COverview::fullRender() { void COverview::fullRender() {

View file

@ -7,7 +7,7 @@ CTrailPassElement::CTrailPassElement(const CTrailPassElement::STrailData& data_)
} }
void CTrailPassElement::draw(const CRegion& damage) { void CTrailPassElement::draw(const CRegion& damage) {
data.deco->renderPass(g_pHyprOpenGL->m_RenderData.pMonitor.lock(), data.a); data.deco->renderPass(g_pHyprOpenGL->m_renderData.pMonitor.lock(), data.a);
} }
bool CTrailPassElement::needsLiveBlur() { bool CTrailPassElement::needsLiveBlur() {

View file

@ -76,7 +76,7 @@ GLuint CreateProgram(const std::string& vert, const std::string& frag) {
int onTick(void* data) { int onTick(void* data) {
EMIT_HOOK_EVENT("trailTick", nullptr); EMIT_HOOK_EVENT("trailTick", nullptr);
const int TIMEOUT = g_pHyprRenderer->m_pMostHzMonitor ? 1000.0 / g_pHyprRenderer->m_pMostHzMonitor->m_refreshRate : 16; const int TIMEOUT = g_pHyprRenderer->m_mostHzMonitor ? 1000.0 / g_pHyprRenderer->m_mostHzMonitor->m_refreshRate : 16;
wl_event_source_timer_update(g_pGlobalState->tick, TIMEOUT); wl_event_source_timer_update(g_pGlobalState->tick, TIMEOUT);
return 0; return 0;
@ -137,5 +137,5 @@ APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) {
APICALL EXPORT void PLUGIN_EXIT() { APICALL EXPORT void PLUGIN_EXIT() {
wl_event_source_remove(g_pGlobalState->tick); wl_event_source_remove(g_pGlobalState->tick);
g_pHyprRenderer->m_sRenderPass.removeAllOfType("CTrailPassElement"); g_pHyprRenderer->m_renderPass.removeAllOfType("CTrailPassElement");
} }

View file

@ -32,8 +32,8 @@ void CTrail::onTick() {
} }
CTrail::CTrail(PHLWINDOW pWindow) : IHyprWindowDecoration(pWindow), m_pWindow(pWindow) { CTrail::CTrail(PHLWINDOW pWindow) : IHyprWindowDecoration(pWindow), m_pWindow(pWindow) {
m_vLastWindowPos = pWindow->m_realPosition->value(); m_lastWindowPos = pWindow->m_realPosition->value();
m_vLastWindowSize = pWindow->m_realSize->value(); m_lastWindowSize = pWindow->m_realSize->value();
pTickCb = HyprlandAPI::registerCallbackDynamic(PHANDLE, "trailTick", [this](void* self, SCallbackInfo& info, std::any data) { this->onTick(); }); pTickCb = HyprlandAPI::registerCallbackDynamic(PHANDLE, "trailTick", [this](void* self, SCallbackInfo& info, std::any data) { this->onTick(); });
} }
@ -90,7 +90,7 @@ void CTrail::draw(PHLMONITOR pMonitor, const float& a) {
return; return;
auto data = CTrailPassElement::STrailData{this, a}; auto data = CTrailPassElement::STrailData{this, a};
g_pHyprRenderer->m_sRenderPass.add(makeShared<CTrailPassElement>(data)); g_pHyprRenderer->m_renderPass.add(makeShared<CTrailPassElement>(data));
} }
void CTrail::renderPass(PHLMONITOR pMonitor, const float& a) { void CTrail::renderPass(PHLMONITOR pMonitor, const float& a) {
@ -126,10 +126,10 @@ void CTrail::renderPass(PHLMONITOR pMonitor, const float& a) {
glStencilFunc(GL_NOTEQUAL, 1, -1); glStencilFunc(GL_NOTEQUAL, 1, -1);
glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
CBox monbox = {0, 0, g_pHyprOpenGL->m_RenderData.pMonitor->m_transformedSize.x, g_pHyprOpenGL->m_RenderData.pMonitor->m_transformedSize.y}; CBox monbox = {0, 0, g_pHyprOpenGL->m_renderData.pMonitor->m_transformedSize.x, g_pHyprOpenGL->m_renderData.pMonitor->m_transformedSize.y};
Mat3x3 matrix = g_pHyprOpenGL->m_RenderData.monitorProjection.projectBox(monbox, wlTransformToHyprutils(invertTransform(WL_OUTPUT_TRANSFORM_NORMAL)), monbox.rot); Mat3x3 matrix = g_pHyprOpenGL->m_renderData.monitorProjection.projectBox(monbox, wlTransformToHyprutils(invertTransform(WL_OUTPUT_TRANSFORM_NORMAL)), monbox.rot);
Mat3x3 glMatrix = g_pHyprOpenGL->m_RenderData.projection.copy().multiply(matrix); Mat3x3 glMatrix = g_pHyprOpenGL->m_renderData.projection.copy().multiply(matrix);
g_pHyprOpenGL->blend(true); g_pHyprOpenGL->blend(true);
@ -254,17 +254,17 @@ void CTrail::renderPass(PHLMONITOR pMonitor, const float& a) {
glUniform4f(g_pGlobalState->trailShader.color, COLOR.r, COLOR.g, COLOR.b, COLOR.a); glUniform4f(g_pGlobalState->trailShader.color, COLOR.r, COLOR.g, COLOR.b, COLOR.a);
CBox transformedBox = monbox; CBox transformedBox = monbox;
transformedBox.transform(wlTransformToHyprutils(invertTransform(g_pHyprOpenGL->m_RenderData.pMonitor->m_transform)), g_pHyprOpenGL->m_RenderData.pMonitor->m_transformedSize.x, transformedBox.transform(wlTransformToHyprutils(invertTransform(g_pHyprOpenGL->m_renderData.pMonitor->m_transform)), g_pHyprOpenGL->m_renderData.pMonitor->m_transformedSize.x,
g_pHyprOpenGL->m_RenderData.pMonitor->m_transformedSize.y); g_pHyprOpenGL->m_renderData.pMonitor->m_transformedSize.y);
glVertexAttribPointer(g_pGlobalState->trailShader.posAttrib, 2, GL_FLOAT, GL_FALSE, 0, (float*)points.data()); glVertexAttribPointer(g_pGlobalState->trailShader.posAttrib, 2, GL_FLOAT, GL_FALSE, 0, (float*)points.data());
glEnableVertexAttribArray(g_pGlobalState->trailShader.posAttrib); glEnableVertexAttribArray(g_pGlobalState->trailShader.posAttrib);
if (g_pHyprOpenGL->m_RenderData.clipBox.width != 0 && g_pHyprOpenGL->m_RenderData.clipBox.height != 0) { if (g_pHyprOpenGL->m_renderData.clipBox.width != 0 && g_pHyprOpenGL->m_renderData.clipBox.height != 0) {
CRegion damageClip{g_pHyprOpenGL->m_RenderData.clipBox.x, g_pHyprOpenGL->m_RenderData.clipBox.y, g_pHyprOpenGL->m_RenderData.clipBox.width, CRegion damageClip{g_pHyprOpenGL->m_renderData.clipBox.x, g_pHyprOpenGL->m_renderData.clipBox.y, g_pHyprOpenGL->m_renderData.clipBox.width,
g_pHyprOpenGL->m_RenderData.clipBox.height}; g_pHyprOpenGL->m_renderData.clipBox.height};
damageClip.intersect(g_pHyprOpenGL->m_RenderData.damage); damageClip.intersect(g_pHyprOpenGL->m_renderData.damage);
if (!damageClip.empty()) { if (!damageClip.empty()) {
for (auto& RECT : damageClip.getRects()) { for (auto& RECT : damageClip.getRects()) {
@ -273,7 +273,7 @@ void CTrail::renderPass(PHLMONITOR pMonitor, const float& a) {
} }
} }
} else { } else {
for (auto& RECT : g_pHyprOpenGL->m_RenderData.damage.getRects()) { for (auto& RECT : g_pHyprOpenGL->m_renderData.damage.getRects()) {
g_pHyprOpenGL->scissor(&RECT); g_pHyprOpenGL->scissor(&RECT);
glDrawArrays(GL_TRIANGLE_STRIP, 0, points.size()); glDrawArrays(GL_TRIANGLE_STRIP, 0, points.size());
} }
@ -329,14 +329,14 @@ void CTrail::updateWindow(PHLWINDOW pWindow) {
const auto WORKSPACEOFFSET = PWORKSPACE && !pWindow->m_pinned ? PWORKSPACE->m_renderOffset->value() : Vector2D(); const auto WORKSPACEOFFSET = PWORKSPACE && !pWindow->m_pinned ? PWORKSPACE->m_renderOffset->value() : Vector2D();
m_vLastWindowPos = pWindow->m_realPosition->value() + WORKSPACEOFFSET; m_lastWindowPos = pWindow->m_realPosition->value() + WORKSPACEOFFSET;
m_vLastWindowSize = pWindow->m_realSize->value(); m_lastWindowSize = pWindow->m_realSize->value();
damageEntire(); damageEntire();
} }
void CTrail::damageEntire() { void CTrail::damageEntire() {
CBox dm = {(int)(m_vLastWindowPos.x - m_seExtents.topLeft.x), (int)(m_vLastWindowPos.y - m_seExtents.topLeft.y), CBox dm = {(int)(m_lastWindowPos.x - m_seExtents.topLeft.x), (int)(m_lastWindowPos.y - m_seExtents.topLeft.y),
(int)(m_vLastWindowSize.x + m_seExtents.topLeft.x + m_seExtents.bottomRight.x), (int)m_seExtents.topLeft.y}; (int)(m_lastWindowSize.x + m_seExtents.topLeft.x + m_seExtents.bottomRight.x), (int)m_seExtents.topLeft.y};
g_pHyprRenderer->damageBox(dm); g_pHyprRenderer->damageBox(dm);
} }

View file

@ -58,8 +58,8 @@ class CTrail : public IHyprWindowDecoration {
PHLWINDOWREF m_pWindow; PHLWINDOWREF m_pWindow;
Vector2D m_vLastWindowPos; Vector2D m_lastWindowPos;
Vector2D m_vLastWindowSize; Vector2D m_lastWindowSize;
CBox m_bLastBox = {0}; CBox m_bLastBox = {0};
bool m_bNeedsDamage = false; bool m_bNeedsDamage = false;

View file

@ -76,13 +76,13 @@ void onRenderStage(eRenderStage stage) {
for (auto& bg : bgWindows) { for (auto& bg : bgWindows) {
const auto bgw = bg.lock(); const auto bgw = bg.lock();
if (bgw->m_monitor != g_pHyprOpenGL->m_RenderData.pMonitor) if (bgw->m_monitor != g_pHyprOpenGL->m_renderData.pMonitor)
continue; continue;
// cant use setHidden cuz that sends suspended and shit too that would be laggy // cant use setHidden cuz that sends suspended and shit too that would be laggy
bgw->m_hidden = false; bgw->m_hidden = false;
g_pHyprRenderer->renderWindow(bgw, g_pHyprOpenGL->m_RenderData.pMonitor.lock(), Time::steadyNow(), false, RENDER_PASS_ALL, false, true); g_pHyprRenderer->renderWindow(bgw, g_pHyprOpenGL->m_renderData.pMonitor.lock(), Time::steadyNow(), false, RENDER_PASS_ALL, false, true);
bgw->m_hidden = true; bgw->m_hidden = true;
} }