compositor: dont send around int max values
we know the buffersize use it instead of int max values that can potentially cause math issues and slowdowns. minor improvement to glmark2 aswell.
This commit is contained in:
parent
83c453cb82
commit
ceec1943ff
1 changed files with 12 additions and 7 deletions
|
|
@ -96,7 +96,7 @@ CWLSurfaceResource::CWLSurfaceResource(SP<CWlSurface> resource_) : m_resource(re
|
|||
|
||||
if (m_pending.bufferSize != m_current.bufferSize) {
|
||||
m_pending.updated.bits.damage = true;
|
||||
m_pending.bufferDamage = CBox{{}, {INT32_MAX, INT32_MAX}};
|
||||
m_pending.bufferDamage = CBox{{}, m_pending.bufferSize};
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -175,7 +175,12 @@ CWLSurfaceResource::CWLSurfaceResource(SP<CWlSurface> resource_) : m_resource(re
|
|||
});
|
||||
m_resource->setDamageBuffer([this](CWlSurface* r, int32_t x, int32_t y, int32_t w, int32_t h) {
|
||||
m_pending.updated.bits.damage = true;
|
||||
m_pending.bufferDamage.add(CBox{x, y, w, h});
|
||||
const auto damageSize = Vector2D(w, h);
|
||||
|
||||
if (damageSize > m_pending.bufferSize)
|
||||
m_pending.bufferDamage.add(CBox{{x, y}, m_pending.bufferSize});
|
||||
else
|
||||
m_pending.bufferDamage.add(CBox{{x, y}, damageSize});
|
||||
});
|
||||
|
||||
m_resource->setSetBufferScale([this](CWlSurface* r, int32_t scale) {
|
||||
|
|
@ -186,7 +191,7 @@ CWLSurfaceResource::CWLSurfaceResource(SP<CWlSurface> resource_) : m_resource(re
|
|||
m_pending.updated.bits.damage = true;
|
||||
|
||||
m_pending.scale = scale;
|
||||
m_pending.bufferDamage = CBox{{}, {INT32_MAX, INT32_MAX}};
|
||||
m_pending.bufferDamage = CBox{{}, m_pending.bufferSize};
|
||||
});
|
||||
|
||||
m_resource->setSetBufferTransform([this](CWlSurface* r, uint32_t tr) {
|
||||
|
|
@ -197,14 +202,14 @@ CWLSurfaceResource::CWLSurfaceResource(SP<CWlSurface> resource_) : m_resource(re
|
|||
m_pending.updated.bits.damage = true;
|
||||
|
||||
m_pending.transform = (wl_output_transform)tr;
|
||||
m_pending.bufferDamage = CBox{{}, {INT32_MAX, INT32_MAX}};
|
||||
m_pending.bufferDamage = CBox{{}, m_pending.bufferSize};
|
||||
});
|
||||
|
||||
m_resource->setSetInputRegion([this](CWlSurface* r, wl_resource* region) {
|
||||
m_pending.updated.bits.input = true;
|
||||
|
||||
if (!region) {
|
||||
m_pending.input = CBox{{}, {INT32_MAX, INT32_MAX}};
|
||||
m_pending.input = CBox{{}, m_pending.bufferSize};
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -437,8 +442,8 @@ void CWLSurfaceResource::map() {
|
|||
|
||||
frame(Time::steadyNow());
|
||||
|
||||
m_current.bufferDamage = CBox{{}, {INT32_MAX, INT32_MAX}};
|
||||
m_pending.bufferDamage = CBox{{}, {INT32_MAX, INT32_MAX}};
|
||||
m_current.bufferDamage = CBox{{}, m_current.bufferSize};
|
||||
m_pending.bufferDamage = CBox{{}, m_pending.bufferSize};
|
||||
}
|
||||
|
||||
void CWLSurfaceResource::unmap() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue