summaryrefslogtreecommitdiff
path: root/src/protocols/SinglePixel.cpp
diff options
context:
space:
mode:
authorTom Englund <tomenglund26@gmail.com>2025-10-08 22:25:55 +0200
committerGitHub <noreply@github.com>2025-10-08 22:25:55 +0200
commit82759d4095dc95a0d10aefe87072385dce9a4bf1 (patch)
treec61cc4ab708a76d1850902186c0b50ff16e6a5c5 /src/protocols/SinglePixel.cpp
parent0dc45b54f3df45483df1c44fdc188381ac8fddc4 (diff)
buffer: move texture creation to commit time (#11964)
* buffer: move texture creation to commit time move creating texture away from buffer attach into commitstate in an attempt to postpone gpu work until its really needed. best case scenario gpu clocks have ramped up before because we are actively doing things causing surface states and a commit to happend meaning less visible lag. * buffer: simplify texture creation make createTexture return a shared ptr directly, remove not needed member variables as m_success and m_texture.
Diffstat (limited to 'src/protocols/SinglePixel.cpp')
-rw-r--r--src/protocols/SinglePixel.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/protocols/SinglePixel.cpp b/src/protocols/SinglePixel.cpp
index 6ca48a35..9abde68a 100644
--- a/src/protocols/SinglePixel.cpp
+++ b/src/protocols/SinglePixel.cpp
@@ -12,16 +12,9 @@ CSinglePixelBuffer::CSinglePixelBuffer(uint32_t id, wl_client* client, CHyprColo
m_opaque = col_.a >= 1.F;
- m_texture = makeShared<CTexture>(DRM_FORMAT_ARGB8888, rc<uint8_t*>(&m_color), 4, Vector2D{1, 1});
-
m_resource = CWLBufferResource::create(makeShared<CWlBuffer>(client, 1, id));
- m_success = m_texture->m_texID;
-
size = {1, 1};
-
- if (!m_success)
- Debug::log(ERR, "Failed creating a single pixel texture: null texture id");
}
CSinglePixelBuffer::~CSinglePixelBuffer() {
@@ -57,6 +50,17 @@ void CSinglePixelBuffer::endDataPtr() {
;
}
+SP<CTexture> CSinglePixelBuffer::createTexture() {
+ auto tex = makeShared<CTexture>(DRM_FORMAT_ARGB8888, rc<uint8_t*>(&m_color), 4, Vector2D{1, 1});
+
+ if (!tex->m_texID) {
+ Debug::log(ERR, "Failed creating a single pixel texture: null texture id");
+ return nullptr;
+ }
+
+ return tex;
+}
+
bool CSinglePixelBuffer::good() {
return m_resource->good();
}