Add wayland feature 47/38047/2 accepted/tizen/common/20150414.100128 accepted/tizen/mobile/20150415.015045 accepted/tizen/tv/20150415.012610 accepted/tizen/wearable/20150415.013825 submit/tizen/20150414.023516
authorHyunil Park <hyunil46.park@samsung.com>
Fri, 10 Apr 2015 07:35:05 +0000 (16:35 +0900)
committerHyunil Park <hyunil46.park@samsung.com>
Mon, 13 Apr 2015 08:03:55 +0000 (17:03 +0900)
  1. getting wl_surface
  2. getting wl_display
  3. getting window render rectangle

Change-Id: Id8b07a8a0edf0a2b1c43a0cc8624d45223568112
Signed-off-by: Hyunil Park <hyunil46.park@samsung.com>
include/player_private.h [changed mode: 0644->0755]
packaging/capi-media-player.spec
src/player.c [changed mode: 0644->0755]
test/player_test.c

old mode 100644 (file)
new mode 100755 (executable)
index fbdae85..fa7d2df
@@ -68,6 +68,9 @@ typedef struct _player_s{
        MMHandleType mm_handle;
        const void* user_cb[_PLAYER_EVENT_TYPE_NUM];
        void* user_data[_PLAYER_EVENT_TYPE_NUM];
+#ifdef HAVE_WAYLAND
+       void* wl_display;
+#endif
        void* display_handle;
        player_display_type_e display_type;
        int state;
index f382420..8b778d2 100644 (file)
@@ -4,7 +4,7 @@
 Name:       capi-media-player
 Summary:    A Media Player library in Tizen Native API
 Version:    0.1.3
-Release:    0
+Release:    1
 Group:      Multimedia/API
 License:    Apache-2.0
 Source0:    %{name}-%{version}.tar.gz
old mode 100644 (file)
new mode 100755 (executable)
index 4349f4e..2dfa3f3
@@ -1655,7 +1655,14 @@ int player_set_display(player_h player, player_display_type_e type, player_displ
        Evas_Object *obj = NULL;
        const char *object_type = NULL;
        void *set_handle = NULL;
-
+#ifdef HAVE_WAYLAND
+       void *set_wl_display = NULL;
+       Ecore_Wl_Window * wl_window = NULL;
+       int wl_window_x = 0;
+       int wl_window_y = 0;
+       int wl_window_width = 0;
+       int wl_window_height = 0;
+#endif
        int ret;
        if (!__player_state_validate(handle, PLAYER_STATE_IDLE))
        {
@@ -1702,10 +1709,30 @@ int player_set_display(player_h player, player_display_type_e type, player_displ
                        temp = handle->display_handle;
                        if (type == PLAYER_DISPLAY_TYPE_OVERLAY && !strcmp(object_type, "elm_win"))
                        {
-                               /* x window overlay surface */
-                               LOGI("overlay surface type");
-                               handle->display_handle = (void *)elm_win_xwindow_get(obj);
-                               set_handle = &(handle->display_handle);
+#ifdef HAVE_WAYLAND
+                               /* wayland overlay surface*/
+                               LOGI("Wayland overlay surface type");
+
+                               evas_object_geometry_get(obj, &wl_window_x, &wl_window_y,
+                                                        &wl_window_width, &wl_window_height);
+                               LOGI("get window rectangle: x(%d) y(%d) width(%d) height(%d)",
+                                         wl_window_x, wl_window_y, wl_window_width, wl_window_height);
+
+                               wl_window = elm_win_wl_window_get(obj);
+
+                               /* get wl_surface */
+                               handle->display_handle = (void *)ecore_wl_window_surface_get(wl_window);
+                               set_handle = handle->display_handle;
+
+                               /* get wl_display */
+                               handle->wl_display = (void *)ecore_wl_display_get();
+                               set_wl_display = handle->wl_display;
+#else // HAVE_X11
+                                                       /* x window overlay surface */
+                                                       LOGI("X overlay surface type");
+                                                       handle->display_handle = (void *)elm_win_xwindow_get(obj);
+                                                       set_handle = &(handle->display_handle);
+#endif
                        }
                        else if (type == PLAYER_DISPLAY_TYPE_EVAS && !strcmp(object_type, "image"))
                        {
@@ -1732,6 +1759,10 @@ int player_set_display(player_h player, player_display_type_e type, player_displ
        {
                ret = mm_player_set_attribute(handle->mm_handle, NULL,
                        "display_surface_type", type,
+#ifdef HAVE_WAYLAND
+                       "wl_display", set_wl_display,
+                       sizeof(void*),
+#endif
                        "display_overlay", set_handle,
                        sizeof(display), (char*)NULL);
 
@@ -1751,6 +1782,20 @@ int player_set_display(player_h player, player_display_type_e type, player_displ
                        else
                                LOGI("NULL surface");
                }
+#ifdef HAVE_WAYLAND
+               ret = mm_player_set_attribute(handle->mm_handle, NULL,
+                       "wl_window_render_x", wl_window_x,
+                       "wl_window_render_y", wl_window_y,
+                       "wl_window_render_width", wl_window_width,
+                       "wl_window_render_height", wl_window_height,
+                       (char*)NULL);
+
+               if (ret != MM_ERROR_NONE)
+               {
+                       handle->display_handle = temp;
+                       LOGE("[%s] Failed to set wl_window render rectangle :%d",__FUNCTION__,ret);
+               }
+#endif
        }
        else //changing surface case
        {
index ed2f1de..1b5a1d6 100755 (executable)
@@ -111,6 +111,8 @@ static void win_del(void *data, Evas_Object *obj, void *event)
 static Evas_Object* create_win(const char *name)
 {
        Evas_Object *eo = NULL;
+       int w = 0;
+       int h = 0;
 
                printf ("[%s][%d] name=%s\n", __func__, __LINE__, name);
 
@@ -119,6 +121,9 @@ static Evas_Object* create_win(const char *name)
                                elm_win_title_set(eo, name);
                                elm_win_borderless_set(eo, EINA_TRUE);
                                evas_object_smart_callback_add(eo, "delete,request",win_del, NULL);
+                               elm_win_screen_size_get(eo, NULL, NULL, &w, &h);
+                               printf ("window size :%d,%d", w, h);
+                               evas_object_resize(eo, w, h);
                                elm_win_autodel_set(eo, EINA_TRUE);
                }
                return eo;