summaryrefslogtreecommitdiff
path: root/src/render
diff options
context:
space:
mode:
authorvaxerski <vaxry@vaxry.net>2023-06-11 21:52:13 +0200
committervaxerski <vaxry@vaxry.net>2023-06-11 21:52:13 +0200
commit6beb79f27b84c36b8b9ef5476d861a94a9071009 (patch)
tree54860720b2a564141c1127cb53746a423b5fcda7 /src/render
parent64ce06a3536898ddae7146e8f649361ce081c8d6 (diff)
xwayland: add force_zero_scaling
Diffstat (limited to 'src/render')
-rw-r--r--src/render/Renderer.cpp4
-rw-r--r--src/render/Renderer.hpp8
2 files changed, 6 insertions, 6 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 939b5783..ce8cb0ff 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -1355,7 +1355,7 @@ void CHyprRenderer::arrangeLayersForMonitor(const int& monitor) {
PMONITOR->vecReservedBottomRight.x, PMONITOR->vecReservedBottomRight.y);
}
-void CHyprRenderer::damageSurface(wlr_surface* pSurface, double x, double y) {
+void CHyprRenderer::damageSurface(wlr_surface* pSurface, double x, double y, double scale) {
if (!pSurface)
return; // wut?
@@ -1365,6 +1365,8 @@ void CHyprRenderer::damageSurface(wlr_surface* pSurface, double x, double y) {
pixman_region32_t damageBox;
pixman_region32_init(&damageBox);
wlr_surface_get_effective_damage(pSurface, &damageBox);
+ if (scale != 1.0)
+ wlr_region_scale(&damageBox, &damageBox, scale);
// schedule frame events
if (!wl_list_empty(&pSurface->current.frame_callback_list)) {
diff --git a/src/render/Renderer.hpp b/src/render/Renderer.hpp
index 3e73287c..9301d46b 100644
--- a/src/render/Renderer.hpp
+++ b/src/render/Renderer.hpp
@@ -11,16 +11,14 @@
struct SMonitorRule;
// TODO: add fuller damage tracking for updating only parts of a window
-enum DAMAGETRACKINGMODES
-{
+enum DAMAGETRACKINGMODES {
DAMAGE_TRACKING_INVALID = -1,
DAMAGE_TRACKING_NONE = 0,
DAMAGE_TRACKING_MONITOR,
DAMAGE_TRACKING_FULL
};
-enum eRenderPassMode
-{
+enum eRenderPassMode {
RENDER_PASS_ALL = 0,
RENDER_PASS_MAIN,
RENDER_PASS_POPUP
@@ -35,7 +33,7 @@ class CHyprRenderer {
void renderMonitor(CMonitor* pMonitor);
void outputMgrApplyTest(wlr_output_configuration_v1*, bool);
void arrangeLayersForMonitor(const int&);
- void damageSurface(wlr_surface*, double, double);
+ void damageSurface(wlr_surface*, double, double, double scale = 1.0);
void damageWindow(CWindow*);
void damageBox(wlr_box*);
void damageBox(const int& x, const int& y, const int& w, const int& h);