From 9cc6f08a7534cc1d847822c8a015d170329852a7 Mon Sep 17 00:00:00 2001 From: Sangchul Lee Date: Mon, 20 Nov 2023 12:45:30 +0900 Subject: [PATCH] webrtc_display: Fix errors when setting EVAS display mode/visible These are fixed by using checking display type that shows whether if the mm_display_interface_set_display_mainloop_sync() is performed or not. [Version] 0.4.22 [Issue Type] Bug fix Change-Id: I070318bb73be96abd07da3d0ec419c0703c83109 Signed-off-by: Sangchul Lee --- packaging/capi-media-webrtc.spec | 2 +- src/webrtc_display.c | 26 ++++++++++++++++++-------- test/webrtc_test.c | 11 ++++++++--- 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/packaging/capi-media-webrtc.spec b/packaging/capi-media-webrtc.spec index 728dfe6b..3823d5b1 100644 --- a/packaging/capi-media-webrtc.spec +++ b/packaging/capi-media-webrtc.spec @@ -1,6 +1,6 @@ Name: capi-media-webrtc Summary: A WebRTC library in Tizen Native API -Version: 0.4.21 +Version: 0.4.22 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/webrtc_display.c b/src/webrtc_display.c index cc1e0951..936ee93a 100644 --- a/src/webrtc_display.c +++ b/src/webrtc_display.c @@ -869,13 +869,18 @@ int _set_display_mode(webrtc_display_s *display, webrtc_display_mode_e mode) display->mode = mode; break; //LCOV_EXCL_START - case WEBRTC_DISPLAY_TYPE_EVAS: - LOG_INFO("it's EVAS type, mode[%d]", mode); - RET_VAL_IF(mm_display_interface_evas_set_mode(display->mm_display, (int)mode) != 0, - WEBRTC_ERROR_INVALID_OPERATION, "failed to mm_display_interface_evas_set_mode()"); + case WEBRTC_DISPLAY_TYPE_EVAS: { + mm_display_type_e display_type; + LOG_INFO("it's EVAS type, mode[%d]", mode); + RET_VAL_IF(mm_display_interface_get_type(display->mm_display, &display_type) != MM_ERROR_NONE, + WEBRTC_ERROR_INVALID_OPERATION, "failed to mm_display_interface_get_type()"); + if (display_type != MM_DISPLAY_TYPE_NONE) + RET_VAL_IF(mm_display_interface_evas_set_mode(display->mm_display, (int)mode) != 0, + WEBRTC_ERROR_INVALID_OPERATION, "failed to mm_display_interface_evas_set_mode()"); display->mode = mode; break; + } //LCOV_EXCL_STOP default: LOG_ERROR_IF_REACHED("type(%d)", display->type); @@ -927,13 +932,18 @@ int _set_display_visible(webrtc_display_s *display, bool visible) display->visible = visible; break; //LCOV_EXCL_START - case WEBRTC_DISPLAY_TYPE_EVAS: - LOG_INFO("it's EVAS type, visible[%u]", visible); - RET_VAL_IF(mm_display_interface_evas_set_visible(display->mm_display, visible) != 0, - WEBRTC_ERROR_INVALID_OPERATION, "failed to mm_display_interface_evas_set_visible()"); + case WEBRTC_DISPLAY_TYPE_EVAS: { + mm_display_type_e display_type; + LOG_INFO("it's EVAS type, visible[%u]", visible); + RET_VAL_IF(mm_display_interface_get_type(display->mm_display, &display_type) != MM_ERROR_NONE, + WEBRTC_ERROR_INVALID_OPERATION, "failed to mm_display_interface_get_type()"); + if (display_type != MM_DISPLAY_TYPE_NONE) + RET_VAL_IF(mm_display_interface_evas_set_visible(display->mm_display, visible) != 0, + WEBRTC_ERROR_INVALID_OPERATION, "failed to mm_display_interface_evas_set_visible()"); display->visible = visible; break; + } //LCOV_EXCL_STOP default: LOG_ERROR_IF_REACHED("type(%d)", display->type); diff --git a/test/webrtc_test.c b/test/webrtc_test.c index d1707750..8a6c0fe6 100644 --- a/test/webrtc_test.c +++ b/test/webrtc_test.c @@ -1950,12 +1950,17 @@ static void __track_added_cb(webrtc_h webrtc, webrtc_media_type_e type, unsigned } else #endif { - if (conn->render.display_type == WEBRTC_DISPLAY_TYPE_OVERLAY) + if (conn->render.display_type == WEBRTC_DISPLAY_TYPE_OVERLAY) { webrtc_set_display(webrtc, id, WEBRTC_DISPLAY_TYPE_OVERLAY, g_ad.win); - else if (conn->render.display_type == WEBRTC_DISPLAY_TYPE_EVAS) + webrtc_set_display_mode(webrtc, id, WEBRTC_DISPLAY_MODE_LETTER_BOX); + webrtc_set_display_visible(webrtc, id, true); + } else if (conn->render.display_type == WEBRTC_DISPLAY_TYPE_EVAS) { webrtc_set_display(webrtc, id, WEBRTC_DISPLAY_TYPE_EVAS, conn->render.eo); - else + webrtc_set_display_mode(webrtc, id, WEBRTC_DISPLAY_MODE_LETTER_BOX); + webrtc_set_display_visible(webrtc, id, true); + } else { g_print("invalid display type[%d]\n", conn->render.display_type); + } } } else { g_print("Video track is added, render it on gst pipeline for validation\n"); -- 2.34.1