surface: emit unmap before unmapping and releasing the buffers

This commit is contained in:
Vaxry 2024-07-28 23:56:35 +02:00
parent 7df9b01d48
commit a9d87bd666
5 changed files with 5 additions and 6 deletions

View file

@ -73,8 +73,8 @@ CLayerShellResource::CLayerShellResource(SP<CZwlrLayerSurfaceV1> resource_, SP<C
if (!attachedBuffer && mapped) { if (!attachedBuffer && mapped) {
mapped = false; mapped = false;
surface->unmap();
events.unmap.emit(); events.unmap.emit();
surface->unmap();
configured = false; configured = false;
return; return;
} }

View file

@ -365,8 +365,8 @@ CXDGSurfaceResource::CXDGSurfaceResource(SP<CXdgSurface> resource_, SP<CXDGWMBas
if (!surface->current.buffer && mapped) { if (!surface->current.buffer && mapped) {
mapped = false; mapped = false;
surface->unmap();
events.unmap.emit(); events.unmap.emit();
surface->unmap();
return; return;
} }

View file

@ -152,8 +152,8 @@ CWLSurfaceResource::~CWLSurfaceResource() {
void CWLSurfaceResource::destroy() { void CWLSurfaceResource::destroy() {
if (mapped) { if (mapped) {
unmap();
events.unmap.emit(); events.unmap.emit();
unmap();
} }
events.destroy.emit(); events.destroy.emit();
PROTO::compositor->destroyResource(this); PROTO::compositor->destroyResource(this);

View file

@ -87,8 +87,8 @@ CWLSubsurfaceResource::CWLSubsurfaceResource(SP<CWlSubsurface> resource_, SP<CWL
} }
if (!surface->current.buffer && surface->mapped) { if (!surface->current.buffer && surface->mapped) {
surface->unmap();
surface->events.unmap.emit(); surface->events.unmap.emit();
surface->unmap();
return; return;
} }
}); });

View file

@ -114,12 +114,11 @@ void CXWaylandSurface::unmap() {
std::erase(g_pXWayland->pWM->mappedSurfacesStacking, self); std::erase(g_pXWayland->pWM->mappedSurfacesStacking, self);
mapped = false; mapped = false;
events.unmap.emit();
surface->unmap(); surface->unmap();
Debug::log(LOG, "XWayland surface {:x} unmapping", (uintptr_t)this); Debug::log(LOG, "XWayland surface {:x} unmapping", (uintptr_t)this);
events.unmap.emit();
g_pXWayland->pWM->updateClientList(); g_pXWayland->pWM->updateClientList();
} }