mirror of
https://github.com/hyprwm/Hyprland.git
synced 2025-10-16 06:55:58 +00:00
internal: introduce new types to avoid unsigned int rollover and signed int overflow (#7216)
* framebuffer: avoid gluint overflow GLuint was being initialized to -1 and rolling over to unsigned int max, its defined behaviour but very unnecessery. add a bool and use it for checking if allocated or not. * opengl: avoid gluint rollover -1 rolls over to unsigned int max, use 0xFF instead. * core: big uint64_t to int type conversion there were a few uint64_t to int implicit conversions overflowing int and causing UB, make all monitor/workspaces/windows use the new typedefs. also fix the various related 64 to 32 implicit conversions going around found with -Wshorten-64-to-32
This commit is contained in:
@@ -12,9 +12,10 @@ bool CFramebuffer::alloc(int w, int h, uint32_t drmFormat) {
|
||||
uint32_t glFormat = FormatUtils::drmFormatToGL(drmFormat);
|
||||
uint32_t glType = FormatUtils::glFormatToType(glFormat);
|
||||
|
||||
if (m_iFb == (uint32_t)-1) {
|
||||
if (!m_iFbAllocated) {
|
||||
firstAlloc = true;
|
||||
glGenFramebuffers(1, &m_iFb);
|
||||
m_iFbAllocated = true;
|
||||
}
|
||||
|
||||
if (m_cTex->m_iTexID == 0) {
|
||||
@@ -88,12 +89,12 @@ void CFramebuffer::bind() {
|
||||
}
|
||||
|
||||
void CFramebuffer::release() {
|
||||
if (m_iFb != (uint32_t)-1 && m_iFb)
|
||||
if (m_iFbAllocated)
|
||||
glDeleteFramebuffers(1, &m_iFb);
|
||||
|
||||
m_cTex->destroyTexture();
|
||||
m_iFb = -1;
|
||||
m_vSize = Vector2D();
|
||||
m_iFbAllocated = false;
|
||||
m_vSize = Vector2D();
|
||||
}
|
||||
|
||||
CFramebuffer::~CFramebuffer() {
|
||||
@@ -101,5 +102,5 @@ CFramebuffer::~CFramebuffer() {
|
||||
}
|
||||
|
||||
bool CFramebuffer::isAllocated() {
|
||||
return m_iFb != (GLuint)-1;
|
||||
return m_iFbAllocated;
|
||||
}
|
Reference in New Issue
Block a user