protocols: refactor class member vars (types) (#10261)
Some checks are pending
Build Hyprland / Build Hyprland (Arch) (push) Waiting to run
Build Hyprland / Build Hyprland with Meson (Arch) (push) Waiting to run
Build Hyprland / Build Hyprland without precompiled headers (Arch) (push) Waiting to run
Build Hyprland / Build Hyprland in pure Wayland (Arch) (push) Waiting to run
Build Hyprland / Code Style (Arch) (push) Waiting to run
Nix (CI) / update-inputs (push) Waiting to run
Nix (CI) / build (push) Waiting to run
Security Checks / Flawfinder Checks (push) Waiting to run

This commit is contained in:
davc0n 2025-05-03 18:54:50 +02:00 committed by GitHub
parent 3465efcdc1
commit 46ac115bd1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 147 additions and 147 deletions

View file

@ -1379,9 +1379,9 @@ bool CMonitor::attemptDirectScanout() {
if (!params.success || !PSURFACE->m_current.texture->m_pEglImage /* dmabuf */) if (!params.success || !PSURFACE->m_current.texture->m_pEglImage /* dmabuf */)
return false; return false;
Debug::log(TRACE, "attemptDirectScanout: surface {:x} passed, will attempt, buffer {}", (uintptr_t)PSURFACE.get(), (uintptr_t)PSURFACE->m_current.buffer.buffer.get()); Debug::log(TRACE, "attemptDirectScanout: surface {:x} passed, will attempt, buffer {}", (uintptr_t)PSURFACE.get(), (uintptr_t)PSURFACE->m_current.buffer.m_buffer.get());
auto PBUFFER = PSURFACE->m_current.buffer.buffer; auto PBUFFER = PSURFACE->m_current.buffer.m_buffer;
if (PBUFFER == m_output->state->state().buffer) { if (PBUFFER == m_output->state->state().buffer) {
PSURFACE->presentFeedback(Time::steadyNow(), m_self.lock()); PSURFACE->presentFeedback(Time::steadyNow(), m_self.lock());
@ -1447,7 +1447,7 @@ bool CMonitor::attemptDirectScanout() {
m_scanoutNeedsCursorUpdate = false; m_scanoutNeedsCursorUpdate = false;
if (!PBUFFER->lockedByBackend || PBUFFER->hlEvents.backendRelease) if (!PBUFFER->lockedByBackend || PBUFFER->m_hlEvents.backendRelease)
return true; return true;
// lock buffer while DRM/KMS is using it, then release it when page flip happens since DRM/KMS should be done by then // lock buffer while DRM/KMS is using it, then release it when page flip happens since DRM/KMS should be done by then

View file

@ -559,7 +559,7 @@ void CSeatManager::setCurrentSelection(SP<IDataSource> source) {
m_selection.currentSelection = source; m_selection.currentSelection = source;
if (source) { if (source) {
m_selection.destroySelection = source->events.destroy.registerListener([this](std::any d) { setCurrentSelection(nullptr); }); m_selection.destroySelection = source->m_events.destroy.registerListener([this](std::any d) { setCurrentSelection(nullptr); });
PROTO::data->setSelection(source); PROTO::data->setSelection(source);
PROTO::dataWlr->setSelection(source, false); PROTO::dataWlr->setSelection(source, false);
} }
@ -584,7 +584,7 @@ void CSeatManager::setCurrentPrimarySelection(SP<IDataSource> source) {
m_selection.currentPrimarySelection = source; m_selection.currentPrimarySelection = source;
if (source) { if (source) {
m_selection.destroyPrimarySelection = source->events.destroy.registerListener([this](std::any d) { setCurrentPrimarySelection(nullptr); }); m_selection.destroyPrimarySelection = source->m_events.destroy.registerListener([this](std::any d) { setCurrentPrimarySelection(nullptr); });
PROTO::primarySelection->setSelection(source); PROTO::primarySelection->setSelection(source);
PROTO::dataWlr->setSelection(source, true); PROTO::dataWlr->setSelection(source, true);
} }

View file

@ -49,11 +49,11 @@ CWLRDataSource::CWLRDataSource(SP<CZwlrDataControlSourceV1> resource_, SP<CWLRDa
resource->setData(this); resource->setData(this);
resource->setDestroy([this](CZwlrDataControlSourceV1* r) { resource->setDestroy([this](CZwlrDataControlSourceV1* r) {
events.destroy.emit(); m_events.destroy.emit();
PROTO::dataWlr->destroyResource(this); PROTO::dataWlr->destroyResource(this);
}); });
resource->setOnDestroy([this](CZwlrDataControlSourceV1* r) { resource->setOnDestroy([this](CZwlrDataControlSourceV1* r) {
events.destroy.emit(); m_events.destroy.emit();
PROTO::dataWlr->destroyResource(this); PROTO::dataWlr->destroyResource(this);
}); });
@ -61,7 +61,7 @@ CWLRDataSource::CWLRDataSource(SP<CZwlrDataControlSourceV1> resource_, SP<CWLRDa
} }
CWLRDataSource::~CWLRDataSource() { CWLRDataSource::~CWLRDataSource() {
events.destroy.emit(); m_events.destroy.emit();
} }
SP<CWLRDataSource> CWLRDataSource::fromResource(wl_resource* res) { SP<CWLRDataSource> CWLRDataSource::fromResource(wl_resource* res) {

View file

@ -99,20 +99,20 @@ CDMABUFFormatTable::CDMABUFFormatTable(SDMABUFTranche _rendererTranche, std::vec
CLinuxDMABuffer::CLinuxDMABuffer(uint32_t id, wl_client* client, Aquamarine::SDMABUFAttrs attrs) { CLinuxDMABuffer::CLinuxDMABuffer(uint32_t id, wl_client* client, Aquamarine::SDMABUFAttrs attrs) {
buffer = makeShared<CDMABuffer>(id, client, attrs); buffer = makeShared<CDMABuffer>(id, client, attrs);
buffer->resource->buffer = buffer; buffer->m_resource->m_buffer = buffer;
listeners.bufferResourceDestroy = buffer->events.destroy.registerListener([this](std::any d) { listeners.bufferResourceDestroy = buffer->events.destroy.registerListener([this](std::any d) {
listeners.bufferResourceDestroy.reset(); listeners.bufferResourceDestroy.reset();
PROTO::linuxDma->destroyResource(this); PROTO::linuxDma->destroyResource(this);
}); });
if (!buffer->success) if (!buffer->m_success)
LOGM(ERR, "Possibly compositor bug: buffer failed to create"); LOGM(ERR, "Possibly compositor bug: buffer failed to create");
} }
CLinuxDMABuffer::~CLinuxDMABuffer() { CLinuxDMABuffer::~CLinuxDMABuffer() {
if (buffer && buffer->resource) if (buffer && buffer->m_resource)
buffer->resource->sendRelease(); buffer->m_resource->sendRelease();
buffer.reset(); buffer.reset();
listeners.bufferResourceDestroy.reset(); listeners.bufferResourceDestroy.reset();
@ -219,14 +219,14 @@ void CLinuxDMABUFParamsResource::create(uint32_t id) {
auto buf = PROTO::linuxDma->m_vBuffers.emplace_back(makeShared<CLinuxDMABuffer>(id, resource->client(), *attrs)); auto buf = PROTO::linuxDma->m_vBuffers.emplace_back(makeShared<CLinuxDMABuffer>(id, resource->client(), *attrs));
if UNLIKELY (!buf->good() || !buf->buffer->success) { if UNLIKELY (!buf->good() || !buf->buffer->m_success) {
resource->sendFailed(); resource->sendFailed();
PROTO::linuxDma->m_vBuffers.pop_back(); PROTO::linuxDma->m_vBuffers.pop_back();
return; return;
} }
if (!id) if (!id)
resource->sendCreated(PROTO::linuxDma->m_vBuffers.back()->buffer->resource->getResource()); resource->sendCreated(PROTO::linuxDma->m_vBuffers.back()->buffer->m_resource->getResource());
createdBuffer = buf; createdBuffer = buf;
} }

View file

@ -12,20 +12,20 @@ CMesaDRMBufferResource::CMesaDRMBufferResource(uint32_t id, wl_client* client, A
} }
buffer = makeShared<CDMABuffer>(id, client, attrs_); buffer = makeShared<CDMABuffer>(id, client, attrs_);
buffer->resource->buffer = buffer; buffer->m_resource->m_buffer = buffer;
listeners.bufferResourceDestroy = buffer->events.destroy.registerListener([this](std::any d) { listeners.bufferResourceDestroy = buffer->events.destroy.registerListener([this](std::any d) {
listeners.bufferResourceDestroy.reset(); listeners.bufferResourceDestroy.reset();
PROTO::mesaDRM->destroyResource(this); PROTO::mesaDRM->destroyResource(this);
}); });
if (!buffer->success) if (!buffer->m_success)
LOGM(ERR, "Possibly compositor bug: buffer failed to create"); LOGM(ERR, "Possibly compositor bug: buffer failed to create");
} }
CMesaDRMBufferResource::~CMesaDRMBufferResource() { CMesaDRMBufferResource::~CMesaDRMBufferResource() {
if (buffer && buffer->resource) if (buffer && buffer->m_resource)
buffer->resource->sendRelease(); buffer->m_resource->sendRelease();
buffer.reset(); buffer.reset();
listeners.bufferResourceDestroy.reset(); listeners.bufferResourceDestroy.reset();
} }
@ -94,7 +94,7 @@ CMesaDRMResource::CMesaDRMResource(SP<CWlDrm> resource_) : resource(resource_) {
} }
// append instance so that buffer knows its owner // append instance so that buffer knows its owner
RESOURCE->buffer->resource->buffer = RESOURCE->buffer; RESOURCE->buffer->m_resource->m_buffer = RESOURCE->buffer;
}); });
resource->sendDevice(PROTO::mesaDRM->nodeName.c_str()); resource->sendDevice(PROTO::mesaDRM->nodeName.c_str());

View file

@ -50,11 +50,11 @@ CPrimarySelectionSource::CPrimarySelectionSource(SP<CZwpPrimarySelectionSourceV1
resource->setData(this); resource->setData(this);
resource->setDestroy([this](CZwpPrimarySelectionSourceV1* r) { resource->setDestroy([this](CZwpPrimarySelectionSourceV1* r) {
events.destroy.emit(); m_events.destroy.emit();
PROTO::primarySelection->destroyResource(this); PROTO::primarySelection->destroyResource(this);
}); });
resource->setOnDestroy([this](CZwpPrimarySelectionSourceV1* r) { resource->setOnDestroy([this](CZwpPrimarySelectionSourceV1* r) {
events.destroy.emit(); m_events.destroy.emit();
PROTO::primarySelection->destroyResource(this); PROTO::primarySelection->destroyResource(this);
}); });
@ -62,7 +62,7 @@ CPrimarySelectionSource::CPrimarySelectionSource(SP<CZwpPrimarySelectionSourceV1
} }
CPrimarySelectionSource::~CPrimarySelectionSource() { CPrimarySelectionSource::~CPrimarySelectionSource() {
events.destroy.emit(); m_events.destroy.emit();
} }
SP<CPrimarySelectionSource> CPrimarySelectionSource::fromResource(wl_resource* res) { SP<CPrimarySelectionSource> CPrimarySelectionSource::fromResource(wl_resource* res) {

View file

@ -100,7 +100,7 @@ void CScreencopyFrame::copy(CZwlrScreencopyFrameV1* pFrame, wl_resource* buffer_
return; return;
} }
if UNLIKELY (PBUFFER->buffer->size != box.size()) { if UNLIKELY (PBUFFER->m_buffer->size != box.size()) {
LOGM(ERR, "Invalid dimensions in {:x}", (uintptr_t)this); LOGM(ERR, "Invalid dimensions in {:x}", (uintptr_t)this);
resource->error(ZWLR_SCREENCOPY_FRAME_V1_ERROR_INVALID_BUFFER, "invalid buffer dimensions"); resource->error(ZWLR_SCREENCOPY_FRAME_V1_ERROR_INVALID_BUFFER, "invalid buffer dimensions");
PROTO::screencopy->destroyResource(this); PROTO::screencopy->destroyResource(this);
@ -114,7 +114,7 @@ void CScreencopyFrame::copy(CZwlrScreencopyFrameV1* pFrame, wl_resource* buffer_
return; return;
} }
if (auto attrs = PBUFFER->buffer->dmabuf(); attrs.success) { if (auto attrs = PBUFFER->m_buffer->dmabuf(); attrs.success) {
bufferDMA = true; bufferDMA = true;
if (attrs.format != dmabufFormat) { if (attrs.format != dmabufFormat) {
@ -123,7 +123,7 @@ void CScreencopyFrame::copy(CZwlrScreencopyFrameV1* pFrame, wl_resource* buffer_
PROTO::screencopy->destroyResource(this); PROTO::screencopy->destroyResource(this);
return; return;
} }
} else if (auto attrs = PBUFFER->buffer->shm(); attrs.success) { } else if (auto attrs = PBUFFER->m_buffer->shm(); attrs.success) {
if (attrs.format != shmFormat) { if (attrs.format != shmFormat) {
LOGM(ERR, "Invalid buffer shm format in {:x}", (uintptr_t)pFrame); LOGM(ERR, "Invalid buffer shm format in {:x}", (uintptr_t)pFrame);
resource->error(ZWLR_SCREENCOPY_FRAME_V1_ERROR_INVALID_BUFFER, "invalid buffer format"); resource->error(ZWLR_SCREENCOPY_FRAME_V1_ERROR_INVALID_BUFFER, "invalid buffer format");
@ -142,7 +142,7 @@ void CScreencopyFrame::copy(CZwlrScreencopyFrameV1* pFrame, wl_resource* buffer_
return; return;
} }
buffer = CHLBufferReference(PBUFFER->buffer.lock()); buffer = CHLBufferReference(PBUFFER->m_buffer.lock());
PROTO::screencopy->m_vFramesAwaitingWrite.emplace_back(self); PROTO::screencopy->m_vFramesAwaitingWrite.emplace_back(self);
@ -193,7 +193,7 @@ void CScreencopyFrame::copyDmabuf(std::function<void(bool)> callback) {
CRegion fakeDamage = {0, 0, INT16_MAX, INT16_MAX}; CRegion fakeDamage = {0, 0, INT16_MAX, INT16_MAX};
if (!g_pHyprRenderer->beginRender(pMonitor.lock(), fakeDamage, RENDER_MODE_TO_BUFFER, buffer.buffer, nullptr, true)) { if (!g_pHyprRenderer->beginRender(pMonitor.lock(), fakeDamage, RENDER_MODE_TO_BUFFER, buffer.m_buffer, nullptr, true)) {
LOGM(ERR, "Can't copy: failed to begin rendering to dma frame"); LOGM(ERR, "Can't copy: failed to begin rendering to dma frame");
callback(false); callback(false);
return; return;

View file

@ -10,13 +10,13 @@ CSinglePixelBuffer::CSinglePixelBuffer(uint32_t id, wl_client* client, CHyprColo
g_pHyprRenderer->makeEGLCurrent(); g_pHyprRenderer->makeEGLCurrent();
opaque = col_.a >= 1.F; m_opaque = col_.a >= 1.F;
texture = makeShared<CTexture>(DRM_FORMAT_ARGB8888, (uint8_t*)&color, 4, Vector2D{1, 1}); m_texture = makeShared<CTexture>(DRM_FORMAT_ARGB8888, (uint8_t*)&color, 4, Vector2D{1, 1});
resource = CWLBufferResource::create(makeShared<CWlBuffer>(client, 1, id)); m_resource = CWLBufferResource::create(makeShared<CWlBuffer>(client, 1, id));
success = texture->m_iTexID; success = m_texture->m_iTexID;
size = {1, 1}; size = {1, 1};
@ -25,8 +25,8 @@ CSinglePixelBuffer::CSinglePixelBuffer(uint32_t id, wl_client* client, CHyprColo
} }
CSinglePixelBuffer::~CSinglePixelBuffer() { CSinglePixelBuffer::~CSinglePixelBuffer() {
if (resource) if (m_resource)
resource->sendRelease(); m_resource->sendRelease();
} }
Aquamarine::eBufferCapability CSinglePixelBuffer::caps() { Aquamarine::eBufferCapability CSinglePixelBuffer::caps() {
@ -58,7 +58,7 @@ void CSinglePixelBuffer::endDataPtr() {
} }
bool CSinglePixelBuffer::good() { bool CSinglePixelBuffer::good() {
return resource->good(); return m_resource->good();
} }
CSinglePixelBufferResource::CSinglePixelBufferResource(uint32_t id, wl_client* client, CHyprColor color) { CSinglePixelBufferResource::CSinglePixelBufferResource(uint32_t id, wl_client* client, CHyprColor color) {
@ -67,7 +67,7 @@ CSinglePixelBufferResource::CSinglePixelBufferResource(uint32_t id, wl_client* c
if UNLIKELY (!buffer->good()) if UNLIKELY (!buffer->good())
return; return;
buffer->resource->buffer = buffer; buffer->m_resource->m_buffer = buffer;
listeners.bufferResourceDestroy = buffer->events.destroy.registerListener([this](std::any d) { listeners.bufferResourceDestroy = buffer->events.destroy.registerListener([this](std::any d) {
listeners.bufferResourceDestroy.reset(); listeners.bufferResourceDestroy.reset();

View file

@ -155,7 +155,7 @@ void CToplevelExportFrame::copy(CHyprlandToplevelExportFrameV1* pFrame, wl_resou
return; return;
} }
if UNLIKELY (PBUFFER->buffer->size != box.size()) { if UNLIKELY (PBUFFER->m_buffer->size != box.size()) {
resource->error(HYPRLAND_TOPLEVEL_EXPORT_FRAME_V1_ERROR_INVALID_BUFFER, "invalid buffer dimensions"); resource->error(HYPRLAND_TOPLEVEL_EXPORT_FRAME_V1_ERROR_INVALID_BUFFER, "invalid buffer dimensions");
PROTO::toplevelExport->destroyResource(this); PROTO::toplevelExport->destroyResource(this);
return; return;
@ -167,7 +167,7 @@ void CToplevelExportFrame::copy(CHyprlandToplevelExportFrameV1* pFrame, wl_resou
return; return;
} }
if (auto attrs = PBUFFER->buffer->dmabuf(); attrs.success) { if (auto attrs = PBUFFER->m_buffer->dmabuf(); attrs.success) {
bufferDMA = true; bufferDMA = true;
if (attrs.format != dmabufFormat) { if (attrs.format != dmabufFormat) {
@ -175,7 +175,7 @@ void CToplevelExportFrame::copy(CHyprlandToplevelExportFrameV1* pFrame, wl_resou
PROTO::toplevelExport->destroyResource(this); PROTO::toplevelExport->destroyResource(this);
return; return;
} }
} else if (auto attrs = PBUFFER->buffer->shm(); attrs.success) { } else if (auto attrs = PBUFFER->m_buffer->shm(); attrs.success) {
if (attrs.format != shmFormat) { if (attrs.format != shmFormat) {
resource->error(HYPRLAND_TOPLEVEL_EXPORT_FRAME_V1_ERROR_INVALID_BUFFER, "invalid buffer format"); resource->error(HYPRLAND_TOPLEVEL_EXPORT_FRAME_V1_ERROR_INVALID_BUFFER, "invalid buffer format");
PROTO::toplevelExport->destroyResource(this); PROTO::toplevelExport->destroyResource(this);
@ -191,7 +191,7 @@ void CToplevelExportFrame::copy(CHyprlandToplevelExportFrameV1* pFrame, wl_resou
return; return;
} }
buffer = CHLBufferReference(PBUFFER->buffer.lock()); buffer = CHLBufferReference(PBUFFER->m_buffer.lock());
m_ignoreDamage = ignoreDamage; m_ignoreDamage = ignoreDamage;
@ -340,7 +340,7 @@ bool CToplevelExportFrame::copyDmabuf(const Time::steady_tp& now) {
g_pPointerManager->damageCursor(PMONITOR->m_self.lock()); g_pPointerManager->damageCursor(PMONITOR->m_self.lock());
} }
if (!g_pHyprRenderer->beginRender(PMONITOR, fakeDamage, RENDER_MODE_TO_BUFFER, buffer.buffer)) if (!g_pHyprRenderer->beginRender(PMONITOR, fakeDamage, RENDER_MODE_TO_BUFFER, buffer.m_buffer))
return false; return false;
g_pHyprOpenGL->clear(CHyprColor(0, 0, 0, 1.0)); g_pHyprOpenGL->clear(CHyprColor(0, 0, 0, 1.0));

View file

@ -82,11 +82,11 @@ CWLSurfaceResource::CWLSurfaceResource(SP<CWlSurface> resource_) : m_resource(re
auto buf = buffer ? CWLBufferResource::fromResource(buffer) : nullptr; auto buf = buffer ? CWLBufferResource::fromResource(buffer) : nullptr;
if (buf && buf->buffer) { if (buf && buf->m_buffer) {
m_pending.buffer = CHLBufferReference(buf->buffer.lock()); m_pending.buffer = CHLBufferReference(buf->m_buffer.lock());
m_pending.texture = buf->buffer->texture; m_pending.texture = buf->m_buffer->m_texture;
m_pending.size = buf->buffer->size; m_pending.size = buf->m_buffer->size;
m_pending.bufferSize = buf->buffer->size; m_pending.bufferSize = buf->m_buffer->size;
} else { } else {
m_pending.buffer = {}; m_pending.buffer = {};
m_pending.texture.reset(); m_pending.texture.reset();
@ -157,7 +157,7 @@ CWLSurfaceResource::CWLSurfaceResource(SP<CWlSurface> resource_) : m_resource(re
whenReadable(); whenReadable();
} else if (state->buffer->type() == Aquamarine::BUFFER_TYPE_DMABUF && state->buffer->dmabuf().success) { } else if (state->buffer->type() == Aquamarine::BUFFER_TYPE_DMABUF && state->buffer->dmabuf().success) {
// async buffer and is dmabuf, then we can wait on implicit fences // async buffer and is dmabuf, then we can wait on implicit fences
auto syncFd = dynamic_cast<CDMABuffer*>(state->buffer.buffer.get())->exportSyncFile(); auto syncFd = dynamic_cast<CDMABuffer*>(state->buffer.m_buffer.get())->exportSyncFile();
if (syncFd.isValid()) if (syncFd.isValid())
g_pEventLoopManager->doOnReadable(std::move(syncFd), whenReadable); g_pEventLoopManager->doOnReadable(std::move(syncFd), whenReadable);

View file

@ -134,12 +134,12 @@ CWLDataSourceResource::CWLDataSourceResource(SP<CWlDataSource> resource_, SP<CWL
m_resource->setData(this); m_resource->setData(this);
m_resource->setDestroy([this](CWlDataSource* r) { m_resource->setDestroy([this](CWlDataSource* r) {
events.destroy.emit(); m_events.destroy.emit();
PROTO::data->onDestroyDataSource(m_self); PROTO::data->onDestroyDataSource(m_self);
PROTO::data->destroyResource(this); PROTO::data->destroyResource(this);
}); });
m_resource->setOnDestroy([this](CWlDataSource* r) { m_resource->setOnDestroy([this](CWlDataSource* r) {
events.destroy.emit(); m_events.destroy.emit();
PROTO::data->onDestroyDataSource(m_self); PROTO::data->onDestroyDataSource(m_self);
PROTO::data->destroyResource(this); PROTO::data->destroyResource(this);
}); });
@ -152,7 +152,7 @@ CWLDataSourceResource::CWLDataSourceResource(SP<CWlDataSource> resource_, SP<CWL
} }
CWLDataSourceResource::~CWLDataSourceResource() { CWLDataSourceResource::~CWLDataSourceResource() {
events.destroy.emit(); m_events.destroy.emit();
PROTO::data->onDestroyDataSource(m_self); PROTO::data->onDestroyDataSource(m_self);
} }

View file

@ -20,9 +20,9 @@ CWLSHMBuffer::CWLSHMBuffer(SP<CWLSHMPoolResource> pool_, uint32_t id, int32_t of
m_stride = stride_; m_stride = stride_;
m_fmt = fmt_; m_fmt = fmt_;
m_offset = offset_; m_offset = offset_;
opaque = NFormatUtils::isFormatOpaque(NFormatUtils::shmToDRM(fmt_)); m_opaque = NFormatUtils::isFormatOpaque(NFormatUtils::shmToDRM(fmt_));
resource = CWLBufferResource::create(makeShared<CWlBuffer>(pool_->m_resource->client(), 1, id)); m_resource = CWLBufferResource::create(makeShared<CWlBuffer>(pool_->m_resource->client(), 1, id));
m_listeners.bufferResourceDestroy = events.destroy.registerListener([this](std::any d) { m_listeners.bufferResourceDestroy = events.destroy.registerListener([this](std::any d) {
m_listeners.bufferResourceDestroy.reset(); m_listeners.bufferResourceDestroy.reset();
@ -31,8 +31,8 @@ CWLSHMBuffer::CWLSHMBuffer(SP<CWLSHMPoolResource> pool_, uint32_t id, int32_t of
} }
CWLSHMBuffer::~CWLSHMBuffer() { CWLSHMBuffer::~CWLSHMBuffer() {
if (resource) if (m_resource)
resource->sendRelease(); m_resource->sendRelease();
} }
Aquamarine::eBufferCapability CWLSHMBuffer::caps() { Aquamarine::eBufferCapability CWLSHMBuffer::caps() {
@ -156,7 +156,7 @@ CWLSHMPoolResource::CWLSHMPoolResource(SP<CWlShmPool> resource_, CFileDescriptor
} }
// append instance so that buffer knows its owner // append instance so that buffer knows its owner
RESOURCE->resource->buffer = RESOURCE; RESOURCE->m_resource->m_buffer = RESOURCE;
}); });
if UNLIKELY (m_pool->m_data == MAP_FAILED) if UNLIKELY (m_pool->m_data == MAP_FAILED)

View file

@ -1,104 +1,104 @@
#include "Buffer.hpp" #include "Buffer.hpp"
IHLBuffer::~IHLBuffer() { IHLBuffer::~IHLBuffer() {
if (locked() && resource) if (locked() && m_resource)
sendRelease(); sendRelease();
} }
void IHLBuffer::sendRelease() { void IHLBuffer::sendRelease() {
resource->sendRelease(); m_resource->sendRelease();
syncReleasers.clear(); m_syncReleasers.clear();
} }
void IHLBuffer::lock() { void IHLBuffer::lock() {
nLocks++; m_locks++;
} }
void IHLBuffer::unlock() { void IHLBuffer::unlock() {
nLocks--; m_locks--;
ASSERT(nLocks >= 0); ASSERT(m_locks >= 0);
if (nLocks == 0) if (m_locks == 0)
sendRelease(); sendRelease();
} }
bool IHLBuffer::locked() { bool IHLBuffer::locked() {
return nLocks > 0; return m_locks > 0;
} }
void IHLBuffer::onBackendRelease(const std::function<void()>& fn) { void IHLBuffer::onBackendRelease(const std::function<void()>& fn) {
if (hlEvents.backendRelease) { if (m_hlEvents.backendRelease) {
hlEvents.backendRelease->emit(nullptr); m_hlEvents.backendRelease->emit(nullptr);
Debug::log(LOG, "backendRelease emitted early"); Debug::log(LOG, "backendRelease emitted early");
} }
hlEvents.backendRelease = events.backendRelease.registerListener([this, fn](std::any) { m_hlEvents.backendRelease = events.backendRelease.registerListener([this, fn](std::any) {
fn(); fn();
hlEvents.backendRelease.reset(); m_hlEvents.backendRelease.reset();
}); });
} }
void IHLBuffer::addReleasePoint(CDRMSyncPointState& point) { void IHLBuffer::addReleasePoint(CDRMSyncPointState& point) {
ASSERT(locked()); ASSERT(locked());
if (point) if (point)
syncReleasers.emplace_back(point.createSyncRelease()); m_syncReleasers.emplace_back(point.createSyncRelease());
} }
CHLBufferReference::CHLBufferReference() : buffer(nullptr) { CHLBufferReference::CHLBufferReference() : m_buffer(nullptr) {
; ;
} }
CHLBufferReference::CHLBufferReference(const CHLBufferReference& other) : buffer(other.buffer) { CHLBufferReference::CHLBufferReference(const CHLBufferReference& other) : m_buffer(other.m_buffer) {
if (buffer) if (m_buffer)
buffer->lock(); m_buffer->lock();
} }
CHLBufferReference::CHLBufferReference(SP<IHLBuffer> buffer_) : buffer(buffer_) { CHLBufferReference::CHLBufferReference(SP<IHLBuffer> buffer_) : m_buffer(buffer_) {
if (buffer) if (m_buffer)
buffer->lock(); m_buffer->lock();
} }
CHLBufferReference::~CHLBufferReference() { CHLBufferReference::~CHLBufferReference() {
if (buffer) if (m_buffer)
buffer->unlock(); m_buffer->unlock();
} }
CHLBufferReference& CHLBufferReference::operator=(const CHLBufferReference& other) { CHLBufferReference& CHLBufferReference::operator=(const CHLBufferReference& other) {
if (other.buffer) if (other.m_buffer)
other.buffer->lock(); other.m_buffer->lock();
if (buffer) if (m_buffer)
buffer->unlock(); m_buffer->unlock();
buffer = other.buffer; m_buffer = other.m_buffer;
return *this; return *this;
} }
bool CHLBufferReference::operator==(const CHLBufferReference& other) const { bool CHLBufferReference::operator==(const CHLBufferReference& other) const {
return buffer == other.buffer; return m_buffer == other.m_buffer;
} }
bool CHLBufferReference::operator==(const SP<IHLBuffer>& other) const { bool CHLBufferReference::operator==(const SP<IHLBuffer>& other) const {
return buffer == other; return m_buffer == other;
} }
bool CHLBufferReference::operator==(const SP<Aquamarine::IBuffer>& other) const { bool CHLBufferReference::operator==(const SP<Aquamarine::IBuffer>& other) const {
return buffer == other; return m_buffer == other;
} }
SP<IHLBuffer> CHLBufferReference::operator->() const { SP<IHLBuffer> CHLBufferReference::operator->() const {
return buffer; return m_buffer;
} }
CHLBufferReference::operator bool() const { CHLBufferReference::operator bool() const {
return buffer; return m_buffer;
} }
void CHLBufferReference::drop() { void CHLBufferReference::drop() {
if (!buffer) if (!m_buffer)
return; return;
buffer->nLocks--; m_buffer->m_locks--;
ASSERT(buffer->nLocks >= 0); ASSERT(m_buffer->m_locks >= 0);
buffer = nullptr; m_buffer = nullptr;
} }

View file

@ -26,18 +26,18 @@ class IHLBuffer : public Aquamarine::IBuffer {
void onBackendRelease(const std::function<void()>& fn); void onBackendRelease(const std::function<void()>& fn);
void addReleasePoint(CDRMSyncPointState& point); void addReleasePoint(CDRMSyncPointState& point);
SP<CTexture> texture; SP<CTexture> m_texture;
bool opaque = false; bool m_opaque = false;
SP<CWLBufferResource> resource; SP<CWLBufferResource> m_resource;
std::vector<UP<CSyncReleaser>> syncReleasers; std::vector<UP<CSyncReleaser>> m_syncReleasers;
struct { struct {
CHyprSignalListener backendRelease; CHyprSignalListener backendRelease;
CHyprSignalListener backendRelease2; // for explicit ds CHyprSignalListener backendRelease2; // for explicit ds
} hlEvents; } m_hlEvents;
private: private:
int nLocks = 0; int m_locks = 0;
friend class CHLBufferReference; friend class CHLBufferReference;
}; };
@ -60,5 +60,5 @@ class CHLBufferReference {
// unlock and drop the buffer without sending release // unlock and drop the buffer without sending release
void drop(); void drop();
SP<IHLBuffer> buffer; SP<IHLBuffer> m_buffer;
}; };

View file

@ -12,40 +12,40 @@
using namespace Hyprutils::OS; using namespace Hyprutils::OS;
CDMABuffer::CDMABuffer(uint32_t id, wl_client* client, Aquamarine::SDMABUFAttrs const& attrs_) : attrs(attrs_) { CDMABuffer::CDMABuffer(uint32_t id, wl_client* client, Aquamarine::SDMABUFAttrs const& attrs_) : m_attrs(attrs_) {
g_pHyprRenderer->makeEGLCurrent(); g_pHyprRenderer->makeEGLCurrent();
listeners.resourceDestroy = events.destroy.registerListener([this](std::any d) { m_listeners.resourceDestroy = events.destroy.registerListener([this](std::any d) {
closeFDs(); closeFDs();
listeners.resourceDestroy.reset(); m_listeners.resourceDestroy.reset();
}); });
size = attrs.size; size = m_attrs.size;
resource = CWLBufferResource::create(makeShared<CWlBuffer>(client, 1, id)); m_resource = CWLBufferResource::create(makeShared<CWlBuffer>(client, 1, id));
auto eglImage = g_pHyprOpenGL->createEGLImage(attrs); auto eglImage = g_pHyprOpenGL->createEGLImage(m_attrs);
if UNLIKELY (!eglImage) { if UNLIKELY (!eglImage) {
Debug::log(ERR, "CDMABuffer: failed to import EGLImage, retrying as implicit"); Debug::log(ERR, "CDMABuffer: failed to import EGLImage, retrying as implicit");
attrs.modifier = DRM_FORMAT_MOD_INVALID; m_attrs.modifier = DRM_FORMAT_MOD_INVALID;
eglImage = g_pHyprOpenGL->createEGLImage(attrs); eglImage = g_pHyprOpenGL->createEGLImage(m_attrs);
if UNLIKELY (!eglImage) { if UNLIKELY (!eglImage) {
Debug::log(ERR, "CDMABuffer: failed to import EGLImage"); Debug::log(ERR, "CDMABuffer: failed to import EGLImage");
return; return;
} }
} }
texture = makeShared<CTexture>(attrs, eglImage); // texture takes ownership of the eglImage m_texture = makeShared<CTexture>(m_attrs, eglImage); // texture takes ownership of the eglImage
opaque = NFormatUtils::isFormatOpaque(attrs.format); m_opaque = NFormatUtils::isFormatOpaque(m_attrs.format);
success = texture->m_iTexID; m_success = m_texture->m_iTexID;
if UNLIKELY (!success) if UNLIKELY (!m_success)
Debug::log(ERR, "Failed to create a dmabuf: texture is null"); Debug::log(ERR, "Failed to create a dmabuf: texture is null");
} }
CDMABuffer::~CDMABuffer() { CDMABuffer::~CDMABuffer() {
if (resource) if (m_resource)
resource->sendRelease(); m_resource->sendRelease();
closeFDs(); closeFDs();
} }
@ -67,7 +67,7 @@ bool CDMABuffer::isSynchronous() {
} }
Aquamarine::SDMABUFAttrs CDMABuffer::dmabuf() { Aquamarine::SDMABUFAttrs CDMABuffer::dmabuf() {
return attrs; return m_attrs;
} }
std::tuple<uint8_t*, uint32_t, size_t> CDMABuffer::beginDataPtr(uint32_t flags) { std::tuple<uint8_t*, uint32_t, size_t> CDMABuffer::beginDataPtr(uint32_t flags) {
@ -80,17 +80,17 @@ void CDMABuffer::endDataPtr() {
} }
bool CDMABuffer::good() { bool CDMABuffer::good() {
return success; return m_success;
} }
void CDMABuffer::closeFDs() { void CDMABuffer::closeFDs() {
for (int i = 0; i < attrs.planes; ++i) { for (int i = 0; i < m_attrs.planes; ++i) {
if (attrs.fds[i] == -1) if (m_attrs.fds[i] == -1)
continue; continue;
close(attrs.fds[i]); close(m_attrs.fds[i]);
attrs.fds[i] = -1; m_attrs.fds[i] = -1;
} }
attrs.planes = 0; m_attrs.planes = 0;
} }
static int doIoctl(int fd, unsigned long request, void* arg) { static int doIoctl(int fd, unsigned long request, void* arg) {
@ -111,8 +111,8 @@ CFileDescriptor CDMABuffer::exportSyncFile() {
#if !defined(__linux__) #if !defined(__linux__)
return {}; return {};
#else #else
std::vector<CFileDescriptor> syncFds(attrs.fds.size()); std::vector<CFileDescriptor> syncFds(m_attrs.fds.size());
for (const auto& fd : attrs.fds) { for (const auto& fd : m_attrs.fds) {
if (fd == -1) if (fd == -1)
continue; continue;

View file

@ -19,12 +19,12 @@ class CDMABuffer : public IHLBuffer {
void closeFDs(); void closeFDs();
Hyprutils::OS::CFileDescriptor exportSyncFile(); Hyprutils::OS::CFileDescriptor exportSyncFile();
bool success = false; bool m_success = false;
private: private:
Aquamarine::SDMABUFAttrs attrs; Aquamarine::SDMABUFAttrs m_attrs;
struct { struct {
CHyprSignalListener resourceDestroy; CHyprSignalListener resourceDestroy;
} listeners; } m_listeners;
}; };

View file

@ -9,11 +9,11 @@ bool IDataSource::dndDone() {
} }
bool IDataSource::used() { bool IDataSource::used() {
return wasUsed; return m_wasUsed;
} }
void IDataSource::markUsed() { void IDataSource::markUsed() {
wasUsed = true; m_wasUsed = true;
} }
eDataSourceType IDataSource::type() { eDataSourceType IDataSource::type() {

View file

@ -42,10 +42,10 @@ class IDataSource {
struct { struct {
CSignal destroy; CSignal destroy;
} events; } m_events;
private: private:
bool wasUsed = false; bool m_wasUsed = false;
}; };
class IDataOffer { class IDataOffer {

View file

@ -5,43 +5,43 @@
#include "../../helpers/sync/SyncTimeline.hpp" #include "../../helpers/sync/SyncTimeline.hpp"
#include <xf86drm.h> #include <xf86drm.h>
CWLBufferResource::CWLBufferResource(WP<CWlBuffer> resource_) : resource(resource_.lock()) { CWLBufferResource::CWLBufferResource(WP<CWlBuffer> resource_) : m_resource(resource_.lock()) {
if UNLIKELY (!good()) if UNLIKELY (!good())
return; return;
resource->setOnDestroy([this](CWlBuffer* r) { m_resource->setOnDestroy([this](CWlBuffer* r) {
if (buffer.expired()) if (m_buffer.expired())
return; return;
buffer->events.destroy.emit(); m_buffer->events.destroy.emit();
}); });
resource->setDestroy([this](CWlBuffer* r) { m_resource->setDestroy([this](CWlBuffer* r) {
if (buffer.expired()) if (m_buffer.expired())
return; return;
buffer->events.destroy.emit(); m_buffer->events.destroy.emit();
}); });
resource->setData(this); m_resource->setData(this);
} }
bool CWLBufferResource::good() { bool CWLBufferResource::good() {
return resource->resource(); return m_resource->resource();
} }
void CWLBufferResource::sendRelease() { void CWLBufferResource::sendRelease() {
resource->sendRelease(); m_resource->sendRelease();
} }
wl_resource* CWLBufferResource::getResource() { wl_resource* CWLBufferResource::getResource() {
return resource->resource(); return m_resource->resource();
} }
SP<CWLBufferResource> CWLBufferResource::fromResource(wl_resource* res) { SP<CWLBufferResource> CWLBufferResource::fromResource(wl_resource* res) {
auto data = (CWLBufferResource*)(((CWlBuffer*)wl_resource_get_user_data(res))->data()); auto data = (CWLBufferResource*)(((CWlBuffer*)wl_resource_get_user_data(res))->data());
return data ? data->self.lock() : nullptr; return data ? data->m_self.lock() : nullptr;
} }
SP<CWLBufferResource> CWLBufferResource::create(WP<CWlBuffer> resource) { SP<CWLBufferResource> CWLBufferResource::create(WP<CWlBuffer> resource) {
auto p = SP<CWLBufferResource>(new CWLBufferResource(resource)); auto p = SP<CWLBufferResource>(new CWLBufferResource(resource));
p->self = p; p->m_self = p;
return p; return p;
} }

View file

@ -18,14 +18,14 @@ class CWLBufferResource {
void sendRelease(); void sendRelease();
wl_resource* getResource(); wl_resource* getResource();
WP<IHLBuffer> buffer; WP<IHLBuffer> m_buffer;
WP<CWLBufferResource> self; WP<CWLBufferResource> m_self;
private: private:
CWLBufferResource(WP<CWlBuffer> resource_); CWLBufferResource(WP<CWlBuffer> resource_);
SP<CWlBuffer> resource; SP<CWlBuffer> m_resource;
friend class IHLBuffer; friend class IHLBuffer;
}; };

View file

@ -2290,13 +2290,13 @@ void CHyprRenderer::endRender(const std::function<void()>& renderingDoneCallback
UP<CEGLSync> eglSync = CEGLSync::create(); UP<CEGLSync> eglSync = CEGLSync::create();
if (eglSync && eglSync->isValid()) { if (eglSync && eglSync->isValid()) {
for (auto const& buf : usedAsyncBuffers) { for (auto const& buf : usedAsyncBuffers) {
for (const auto& releaser : buf->syncReleasers) { for (const auto& releaser : buf->m_syncReleasers) {
releaser->addSyncFileFd(eglSync->fd()); releaser->addSyncFileFd(eglSync->fd());
} }
} }
// release buffer refs with release points now, since syncReleaser handles actual buffer release based on EGLSync // release buffer refs with release points now, since syncReleaser handles actual buffer release based on EGLSync
std::erase_if(usedAsyncBuffers, [](const auto& buf) { return !buf->syncReleasers.empty(); }); std::erase_if(usedAsyncBuffers, [](const auto& buf) { return !buf->m_syncReleasers.empty(); });
// release buffer refs without release points when EGLSync sync_file/fence is signalled // release buffer refs without release points when EGLSync sync_file/fence is signalled
g_pEventLoopManager->doOnReadable(eglSync->fd().duplicate(), [renderingDoneCallback, prevbfs = std::move(usedAsyncBuffers)]() mutable { g_pEventLoopManager->doOnReadable(eglSync->fd().duplicate(), [renderingDoneCallback, prevbfs = std::move(usedAsyncBuffers)]() mutable {