From: Sangchul Lee Date: Mon, 20 Nov 2023 03:45:30 +0000 (+0900) Subject: webrtc_display: Fix errors when setting EVAS display mode/visible X-Git-Tag: accepted/tizen/7.0/unified/20231120.175605^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F52%2F301552%2F1;p=platform%2Fcore%2Fapi%2Fwebrtc.git 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.3.293 [Issue Type] Bug fix Change-Id: I070318bb73be96abd07da3d0ec419c0703c83109 Signed-off-by: Sangchul Lee --- diff --git a/packaging/capi-media-webrtc.spec b/packaging/capi-media-webrtc.spec index f32dc231..5fad8ae6 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.3.292 +Version: 0.3.293 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/webrtc_display.c b/src/webrtc_display.c index ebc931da..5ebfdfa7 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 754a6908..55480837 100644 --- a/test/webrtc_test.c +++ b/test/webrtc_test.c @@ -1958,12 +1958,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");