From df507b676f31f135a4cbfd7e06581d4fcda859c7 Mon Sep 17 00:00:00 2001 From: Sangkyu Park Date: Wed, 7 Oct 2015 10:36:15 +0900 Subject: [PATCH] [Screen Mirroring][Tutorial] Add description for scmirroring_sink_set_display API. Change-Id: I9c856dfbbd87ab90dd116abddc9a230ae1b88431 Signed-off-by: Sangkyu Park --- .../multimedia/screen_mirroring_tutorial_n.htm | 88 ++++++++++++++++++++-- 1 file changed, 80 insertions(+), 8 deletions(-) diff --git a/org.tizen.tutorials/html/native/multimedia/screen_mirroring_tutorial_n.htm b/org.tizen.tutorials/html/native/multimedia/screen_mirroring_tutorial_n.htm index 4e3d9e9..140b7f6 100644 --- a/org.tizen.tutorials/html/native/multimedia/screen_mirroring_tutorial_n.htm +++ b/org.tizen.tutorials/html/native/multimedia/screen_mirroring_tutorial_n.htm @@ -52,7 +52,7 @@

Initialize the screen mirroring sink for use.

  • Preparing the Screen Mirroring Sink -

    Set specific information, and prepare the screen mirroring sink.

    +

    Set specific information, Set display object, and prepare the screen mirroring sink.

  • Connecting and Starting the Screen Mirroring Sink

    Connect and start the screen mirroring sink.

    @@ -130,7 +130,7 @@ static void scmirroring_state_callback(scmirroring_error_e error_code, scmirrori    return; } -static int prepare_scmirroring_sink(scmirroring_display_type_e display_type, Evas_Object* display_object) +static int prepare_scmirroring_sink(scmirroring_display_type_e display_type) {    ret = scmirroring_sink_set_state_changed_cb(g_scmirroring, scmirroring_state_callback, NULL);    if (ret != SCMIRRORING_ERROR_NONE) @@ -142,14 +142,86 @@ static int prepare_scmirroring_sink(scmirroring_display_type_e display_type, Eva
  • Set a display object using the scmirroring_sink_set_display() function before calling the scmirroring_sink_prepare() function. -
    -   ret = scmirroring_sink_set_display(g_scmirroring, display_type, display_object);
    -   if (ret != SCMIRRORING_ERROR_NONE)
    +
    +   switch (display_type)
        {
    -      dlog_print(DLOG_ERROR, LOG_TAG, "scmirroring_sink_set_display fail [%d]", ret);
    -
    -      return FALSE;
    +      case SCMIRRORING_DISPLAY_TYPE_EVAS:
    +         if (g_eo == NULL)
    +         {
    +            dlog_print(DLOG_ERROR, LOG_TAG, "g_eo is NULL");
    +            return FALSE;
    +         }
    +         ret = scmirroring_sink_set_display(g_scmirroring, SCMIRRORING_DISPLAY_TYPE_EVAS, (void*)g_eo);
    +         if (ret != SCMIRRORING_ERROR_NONE)
    +         {
    +            dlog_print(DLOG_ERROR, LOG_TAG, "scmirroring_sink_set_display fail [%d], display type [%d]", ret, display_type);
    +            return FALSE;
    +         }
    +         break;
    +      case SCMIRRORING_DISPLAY_TYPE_OVERLAY:
    +         if (g_win == NULL)
    +         {
    +            dlog_print(DLOG_ERROR, LOG_TAG, "g_win is NULL");
    +            return FALSE;
    +         }
    +         ret = scmirroring_sink_set_display(g_scmirroring, SCMIRRORING_DISPLAY_TYPE_OVERLAY, (void*)g_win);
    +         if (ret != SCMIRRORING_ERROR_NONE)
    +         {
    +            dlog_print(DLOG_ERROR, LOG_TAG, "scmirroring_sink_set_display fail [%d], display type [%d]", ret, display_type);
    +            return FALSE;
    +         }
    +         break;
    +      default:
    +         dlog_print(DLOG_ERROR, LOG_TAG, "Invalid display type [%d].", display_type);
    +         return FALSE;
        }
    +
    • Example: Create the display object according to scmirroring_display_type_e :
    +
    +#define PACKAGE_NAME "SCREEN_MIRRORING_SINK_APP"
    +#define WINDOW_WIDTH 800
    +#define WINDOW_HEIGHT 1200
    +
    +static Evas_Object *g_win = NULL;
    +static Evas_Object *g_evas = NULL;
    +static Evas_Object *g_eo = NULL;
    +static Evas_Object *g_rect = NULL;
    +
    +static void create_base_gui (scmirroring_display_type_e display_type)
    +{
    +   g_win = elm_win_add(NULL, PACKAGE_NAME, ELM_WIN_BASIC);
    +
    +   evas_object_resize(g_win, WINDOW_WIDTH, WINDOW_HEIGHT);
    +   evas_object_move(g_win, 0, 0);
    +   elm_win_autodel_set(g_win, EINA_TRUE);
    +
    +   switch (display_type)
    +   {
    +      case SCMIRRORING_DISPLAY_TYPE_EVAS:
    +         g_evas = evas_object_evas_get(g_win);
    +         // Set Evas image object for drawing
    +         g_eo = evas_object_image_add(g_evas);
    +         evas_object_image_size_set(g_eo, WINDOW_WIDTH, WINDOW_HEIGHT);
    +         evas_object_image_fill_set(g_eo, 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT);
    +         evas_object_resize(g_eo, WINDOW_WIDTH, WINDOW_HEIGHT);
    +         // Show the window after the base GUI is set up
    +         evas_object_show(g_eo);
    +         evas_object_show(g_win);
    +         break;
    +
    +      case SCMIRRORING_DISPLAY_TYPE_OVERLAY:
    +         g_rect = evas_object_rectangle_add(g_evas);
    +         evas_object_resize(g_rect, WINDOW_WIDTH, WINDOW_HEIGHT);
    +         evas_object_move(g_rect, 0, 0);
    +         evas_object_color_set(g_rect, 0, 0, 0, 0);
    +         evas_object_render_op_set(g_rect, EVAS_RENDER_COPY);
    +         evas_object_size_hint_weight_set(g_rect, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    +         // Show the window after the base GUI is set up
    +         evas_object_show(g_win);
    +         break;
    +      default:
    +         break;
    +   }
    +}
  • Prepare the screen mirroring sink using the scmirroring_sink_prepare() function. The screen mirroring state immediately becomes SCMIRRORING_STATE_PREPARED. -- 2.7.4