From e4d73cadd706c821efb93ebcbf9cd714fed51663 Mon Sep 17 00:00:00 2001 From: sky zhou Date: Tue, 16 Jul 2019 18:05:16 +0800 Subject: [PATCH] osd: osd ext leaked buf when viu2 displaymode is NULL. [1/1] PD#TV-7713 Problem: osd buffer leaked dma buffer when switch display pipe. Solution: when viu is NULL, osd need still release correct display file. Verify: verified on macroni Change-Id: Ib2df6b022b6fd654430eedae08e351ae53701fc1 Signed-off-by: sky zhou --- drivers/amlogic/media/osd/osd_hw.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/drivers/amlogic/media/osd/osd_hw.c b/drivers/amlogic/media/osd/osd_hw.c index 1f8212b8f07d..5c96e28e186b 100644 --- a/drivers/amlogic/media/osd/osd_hw.c +++ b/drivers/amlogic/media/osd/osd_hw.c @@ -4804,15 +4804,6 @@ static void _osd_pan_display_layers_fence( /* osd_count need -1 when VIU2 enable */ struct layer_fence_map_s *layer_map = NULL; - if (!vinfo || (!strcmp(vinfo->name, "invalid") || - !strcmp(vinfo->name, "null"))) - /* vout is null, release fence */ - goto out; - - osd_hw.vinfo_width[output_index] = vinfo->width; - osd_hw.vinfo_height[output_index] = vinfo->field_height; - memcpy(&osd_hw.disp_info[output_index], &fence_map->disp_info, - sizeof(struct display_flip_info_s)); if (output_index == VIU1) { osd_count = osd_hw.osd_meson_dev.viu1_osd_count; if (osd_hw.osd_meson_dev.osd_ver <= OSD_NORMAL) @@ -4828,6 +4819,16 @@ static void _osd_pan_display_layers_fence( return; } + if (!vinfo || (!strcmp(vinfo->name, "invalid") || + !strcmp(vinfo->name, "null"))) + /* vout is null, release fence & buf file. */ + goto out; + + osd_hw.vinfo_width[output_index] = vinfo->width; + osd_hw.vinfo_height[output_index] = vinfo->field_height; + memcpy(&osd_hw.disp_info[output_index], &fence_map->disp_info, + sizeof(struct display_flip_info_s)); + if (osd_hw.osd_fps_start[output_index]) osd_hw.osd_fps[output_index]++; if (backup_en)