From d7bf4cbe3450070addf5ecf60ca29c3e613bf3eb Mon Sep 17 00:00:00 2001 From: yanansong Date: Thu, 23 Nov 2023 10:55:32 +0800 Subject: [PATCH 1/2] fix native surfacebuffer fd leak --- display_server/frameworks/surface/src/native_window.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/display_server/frameworks/surface/src/native_window.cpp b/display_server/frameworks/surface/src/native_window.cpp index f50228f..976a235 100644 --- a/display_server/frameworks/surface/src/native_window.cpp +++ b/display_server/frameworks/surface/src/native_window.cpp @@ -128,7 +128,7 @@ int32_t NativeWindowFlushBuffer(OHNativeWindow *window, OHNativeWindowBuffer *bu OHOS::sptr acquireFence = new OHOS::SyncFence(fenceFd); window->surface->FlushBuffer(buffer->sfbuffer, acquireFence, config); - + buffer->sfbuffer = nullptr; return OHOS::GSERROR_OK; } -- Gitee From 2d16d55657478bac4ed56a9abb3bebe5c776052e Mon Sep 17 00:00:00 2001 From: yanansong Date: Thu, 23 Nov 2023 07:10:04 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=E5=9C=A8flush=E6=97=B6=E5=88=A0=E9=99=A4OH?= =?UTF-8?q?NativeWindowBuffer=20buffer=EF=BC=8C=E5=90=A6=E5=88=99=E5=86=85?= =?UTF-8?q?=E5=AD=98=E6=B3=84=E6=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yanansong --- display_server/frameworks/surface/src/native_window.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/display_server/frameworks/surface/src/native_window.cpp b/display_server/frameworks/surface/src/native_window.cpp index 976a235..039be9a 100644 --- a/display_server/frameworks/surface/src/native_window.cpp +++ b/display_server/frameworks/surface/src/native_window.cpp @@ -128,7 +128,12 @@ int32_t NativeWindowFlushBuffer(OHNativeWindow *window, OHNativeWindowBuffer *bu OHOS::sptr acquireFence = new OHOS::SyncFence(fenceFd); window->surface->FlushBuffer(buffer->sfbuffer, acquireFence, config); + // fixbug: fd leak. buffer->sfbuffer = nullptr; + // here we delete OHNativeWindowBuffer buffer, because we new it when requesting. + // otherwise, will leak mem of OHNativeWindowBuffer per frame. + // actually, if we delete buffer, fd will not leak fd at the sametime. + delete buffer; return OHOS::GSERROR_OK; } -- Gitee