webrtc_display: Fix errors when setting EVAS display mode/visible 52/301552/1 accepted/tizen/7.0/unified/20231120.175605
authorSangchul Lee <sc11.lee@samsung.com>
Mon, 20 Nov 2023 03:45:30 +0000 (12:45 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Mon, 20 Nov 2023 03:45:50 +0000 (12:45 +0900)
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 <sc11.lee@samsung.com>
packaging/capi-media-webrtc.spec
src/webrtc_display.c
test/webrtc_test.c

index f32dc231b63ba7e3eb73da13a82378149aa81e1c..5fad8ae6802cc6ce9b8ba4e67eeeb0a1485fca75 100644 (file)
@@ -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
index ebc931da9210bb188c1a6e7e8d7e957b57019b85..5ebfdfa7ae1dd4554d007c8fdf6ac752d9999e9a 100644 (file)
@@ -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);
index 754a69085b1d5aaba1fb97958872b01de26682c3..55480837d8c8146dce807fa46bf644c03a372c26 100644 (file)
@@ -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");