From b0ab2265cc73f8fa93cfda5e6280e9691b56b612 Mon Sep 17 00:00:00 2001 From: "Taewan, Kim" Date: Fri, 2 Oct 2015 13:17:21 +0900 Subject: [PATCH] Modified to create xid using Window handle passed by app Change-Id: If4524ca3a61518a57efb4c9247fdd75f2ae5746f Signed-off-by: Taewan, Kim --- configure.ac | 8 ++++++++ packaging/libmm-wfd.spec | 2 ++ sink/Makefile.am | 4 ++++ sink/mm_wfd_sink_priv.c | 26 ++++++++++++++++++-------- 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/configure.ac b/configure.ac index 1b3319b..741b105 100755 --- a/configure.ac +++ b/configure.ac @@ -81,6 +81,14 @@ PKG_CHECK_MODULES(DLOG, dlog) AC_SUBST(DLOG_CFLAGS) AC_SUBST(DLOG_LIBS) +PKG_CHECK_MODULES(ELEMENTARY, elementary) +AC_SUBST(ELEMENTARY_CFLAGS) +AC_SUBST(ELEMENTARY_LIBS) + +PKG_CHECK_MODULES(EVAS, evas) +AC_SUBST(EVAS_CFLAGS) +AC_SUBST(EVAS_LIBS) + # for testsuite AC_ARG_ENABLE(sdk, AC_HELP_STRING([--enable-sdk], [sdk build]), diff --git a/packaging/libmm-wfd.spec b/packaging/libmm-wfd.spec index 6ec39dc..13838cd 100755 --- a/packaging/libmm-wfd.spec +++ b/packaging/libmm-wfd.spec @@ -15,6 +15,8 @@ BuildRequires: pkgconfig(gstreamer-app-1.0) BuildRequires: pkgconfig(iniparser) BuildRequires: pkgconfig(capi-network-wifi-direct) BuildRequires: pkgconfig(dlog) +BuildRequires: pkgconfig(elementary) +BuildRequires: pkgconfig(evas) BuildRoot: %{_tmppath}/%{name}-%{version}-build diff --git a/sink/Makefile.am b/sink/Makefile.am index ca5a516..d652c28 100755 --- a/sink/Makefile.am +++ b/sink/Makefile.am @@ -13,6 +13,8 @@ libmmfwfdsink_la_SOURCES = mm_wfd_sink_util.c \ libmmfwfdsink_la_CFLAGS = -I$(srcdir)/include \ $(MMCOMMON_CFLAGS) \ $(GST_CFLAGS) \ + $(EVAS_CFLAGS) \ + $(ELEMENTARY_CFLAGS) \ $(GST_PLUGINS_BASE_CFLAGS) \ $(GST_VIDEO_CFLAGS) \ $(MM_WFD_COMMON_CFLAGS) \ @@ -29,6 +31,8 @@ noinst_HEADERS = include/mm_wfd_sink_priv.h \ libmmfwfdsink_la_LIBADD = $(GST_LIBS) \ $(GST_PLUGINS_BASE_LIBS) \ $(GST_BASE_LIBS) \ + $(ELEMENTARY_LIBS) \ + $(EVAS_LIBS) \ $(top_builddir)/common/libwfdcommon.la \ $(MMCOMMON_LIBS) \ $(MM_WFD_COMMON_LIBS) \ diff --git a/sink/mm_wfd_sink_priv.c b/sink/mm_wfd_sink_priv.c index 8f0a3dc..cc3f3fe 100755 --- a/sink/mm_wfd_sink_priv.c +++ b/sink/mm_wfd_sink_priv.c @@ -22,6 +22,7 @@ #include #include +#include #include "mm_wfd_sink_util.h" #include "mm_wfd_sink_priv.h" @@ -2938,17 +2939,26 @@ static int __mm_wfd_sink_prepare_videosink(mm_wfd_sink_t *wfd_sink, GstElement * case MM_DISPLAY_SURFACE_X: { int *object = NULL; + Evas_Object *obj = NULL; + const char *object_type = NULL; + unsigned int g_xwin = 0; /* x surface */ - mm_attrs_get_data_by_name(wfd_sink->attrs, "display_overlay", (void **)&object); - if (object) { - xid = *object; - wfd_sink_debug("xid = %lu", xid); - gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(video_sink), xid); - } else { - wfd_sink_warning("Handle is NULL. Set xid as 0.. but, it's not recommended."); - gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(video_sink), 0); + mm_attrs_get_data_by_name(wfd_sink->attrs, "display_overlay", &object); + + if(object != NULL) { + obj = (Evas_Object *)object; + object_type = evas_object_type_get(obj); + + wfd_sink_debug("window object type : %s", object_type); + + if (!strcmp(object_type, "elm_win")) + g_xwin = elm_win_xwindow_get(obj); } + + wfd_sink_debug("xid = %lu", g_xwin); + gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(video_sink), g_xwin); + } break; -- 2.7.4