@@ -28,6 +28,7 @@ std::string CScreencopyFrame::getResourceId(SP<COutput> pOutput) {
2828}
2929
3030CScreencopyFrame::CScreencopyFrame (SP<COutput> pOutput) : m_outputRef(pOutput) {
31+ m_asset = makeAtomicShared<SPreloadedAsset>();
3132 captureOutput ();
3233
3334 static const auto SCMODE = g_pConfigManager->getValue <Hyprlang::INT>(" general:screencopy_mode" );
@@ -201,7 +202,7 @@ bool CSCDMAFrame::onBufferDone() {
201202 return true ;
202203}
203204
204- bool CSCDMAFrame::onBufferReady (SPreloadedAsset& asset) {
205+ bool CSCDMAFrame::onBufferReady (ASP< SPreloadedAsset> asset) {
205206 static constexpr struct {
206207 EGLAttrib fd;
207208 EGLAttrib offset;
@@ -255,19 +256,19 @@ bool CSCDMAFrame::onBufferReady(SPreloadedAsset& asset) {
255256 return false ;
256257 }
257258
258- asset. texture .allocate ();
259- asset. texture .m_vSize = {m_w, m_h};
260- glBindTexture (GL_TEXTURE_2D, asset. texture .m_iTexID );
259+ asset-> texture .allocate ();
260+ asset-> texture .m_vSize = {m_w, m_h};
261+ glBindTexture (GL_TEXTURE_2D, asset-> texture .m_iTexID );
261262 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
262263 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
263264 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
264265 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
265266 glEGLImageTargetTexture2DOES (GL_TEXTURE_2D, m_image);
266267 glBindTexture (GL_TEXTURE_2D, 0 );
267268
268- Debug::log (LOG, " Got dma frame with size {}" , asset. texture .m_vSize );
269+ Debug::log (LOG, " Got dma frame with size {}" , asset-> texture .m_vSize );
269270
270- asset. ready = true ;
271+ asset-> ready = true ;
271272
272273 return true ;
273274}
@@ -459,14 +460,14 @@ void CSCSHMFrame::convertBuffer() {
459460 }
460461}
461462
462- bool CSCSHMFrame::onBufferReady (SPreloadedAsset& asset) {
463+ bool CSCSHMFrame::onBufferReady (ASP< SPreloadedAsset> asset) {
463464 convertBuffer ();
464465
465- asset. texture .allocate ();
466- asset. texture .m_vSize .x = m_w;
467- asset. texture .m_vSize .y = m_h;
466+ asset-> texture .allocate ();
467+ asset-> texture .m_vSize .x = m_w;
468+ asset-> texture .m_vSize .y = m_h;
468469
469- glBindTexture (GL_TEXTURE_2D, asset. texture .m_iTexID );
470+ glBindTexture (GL_TEXTURE_2D, asset-> texture .m_iTexID );
470471
471472 void * buffer = m_convBuffer ? m_convBuffer : m_shmData;
472473
@@ -477,9 +478,9 @@ bool CSCSHMFrame::onBufferReady(SPreloadedAsset& asset) {
477478 glTexImage2D (GL_TEXTURE_2D, 0 , GL_RGBA, m_w, m_h, 0 , GL_RGBA, GL_UNSIGNED_BYTE, buffer);
478479 glBindTexture (GL_TEXTURE_2D, 0 );
479480
480- Debug::log (LOG, " [sc] [shm] Got screenshot with size {}" , asset. texture .m_vSize );
481+ Debug::log (LOG, " [sc] [shm] Got screenshot with size {}" , asset-> texture .m_vSize );
481482
482- asset. ready = true ;
483+ asset-> ready = true ;
483484
484485 return true ;
485486}
0 commit comments