Change usage of wayland apis 01/164801/1
authorSeokHoon Lee <andy.shlee@samsung.com>
Thu, 21 Dec 2017 05:47:40 +0000 (14:47 +0900)
committerSeokHoon Lee <andy.shlee@samsung.com>
Thu, 21 Dec 2017 05:50:10 +0000 (14:50 +0900)
- Change usage of wayland apis in multithreaded
  as recommanded.

Signed-off-by: SeokHoon Lee <andy.shlee@samsung.com>
Change-Id: Ic7abdcdacab9b4f638ec2ca6ef9a9087f12050b6

packaging/libmm-wfd.spec
src/mm_wfd_sink_priv.c
src/mm_wfd_sink_util.c
src/mm_wfd_sink_wayland.c

index 7ce6b70..96298e5 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmm-wfd
 Summary:    Multimedia Framework Wifi-Display Library
-Version:    0.2.232
+Version:    0.2.233
 Release:    0
 Group:      System/Libraries
 License:    Apache-2.0
index 28082a0..b2e3060 100644 (file)
@@ -584,7 +584,7 @@ int __mm_wfd_sink_activate_audio_stream(mm_wfd_sink_t *wfd_sink)
        }
 
        if (gst_pad_is_linked(srcpad)) {
-               wfd_sink_debug("%s:%s is already linked to %s:%s",
+               wfd_sink_debug("%s:%s is already linked",
                                                GST_ELEMENT_NAME(GST_PAD_PARENT(srcpad)), GST_PAD_NAME(srcpad));
                goto done;
        }
@@ -1220,7 +1220,7 @@ no_operation:
 
        /* ERRORS */
 invalid_state:
-       wfd_sink_error("current state is invalid.", MMWFDSINK_STATE_GET_NAME(cur_state));
+       wfd_sink_error("current state[%s] is invalid.", MMWFDSINK_STATE_GET_NAME(cur_state));
        return MM_ERROR_WFD_INVALID_STATE;
 }
 
@@ -4041,7 +4041,7 @@ static int __mm_wfd_sink_prepare_videosink(mm_wfd_sink_t *wfd_sink, GstElement *
                                mm_attrs_get_data_by_name(wfd_sink->attrs, "display_overlay", &object);
                                mm_attrs_get_int_by_name(wfd_sink->attrs, "display_evas_do_scaling", &scaling);
                                if (object) {
-                                       wfd_sink_debug("set video param : evas-object %x", object);
+                                       wfd_sink_debug("set video param : evas-object %p", object);
                                        g_object_set(G_OBJECT(video_sink), "evas-object", object, NULL);
                                } else {
                                        wfd_sink_error("no evas object");
index 9093f63..d3b1be7 100644 (file)
@@ -123,7 +123,7 @@ _mm_wfd_sink_util_pad_probe_cb(GstPad *pad, GstPadProbeInfo *info, gpointer u_da
                                                                GST_TIME_ARGS(segment->start), GST_TIME_ARGS(segment->stop),
                                                                GST_TIME_ARGS(segment->time));
 
-                               wfd_sink_debug("NEWSEGMENT : flags[%d] rate[%d] applied_rate[%d] foramt[%d] base[%lld] offset[%lld] position[%lld] duration[%lld]",
+                               wfd_sink_debug("NEWSEGMENT : flags[%d] rate[%lf] applied_rate[%lf] foramt[%d] base[%lld] offset[%lld] position[%lld] duration[%lld]",
                                                                segment->flags, segment->rate, segment->applied_rate, segment->format, segment->base, segment->offset, segment->position, segment->duration);
 
                        }
index 54298b2..e0d27f4 100644 (file)
@@ -35,6 +35,8 @@ void mm_wfd_sink_handle_resource_id(void *data, struct tizen_resource *tizen_res
 {
        unsigned int *wl_surface_id = data;
 
+       wfd_sink_return_if_fail(data != NULL);
+
        *wl_surface_id = id;
 
        wfd_sink_debug("[CLIENT] got wl_surface_id(%d) from server\n", id);
@@ -48,9 +50,10 @@ static void
 mm_wfd_sink_handle_global(void *data, struct wl_registry *registry,
                                                        uint32_t name, const char *interface, uint32_t version)
 {
-       return_if_fail(data != NULL);
        wl_client *wlclient = data;
 
+       wfd_sink_return_if_fail(data != NULL);
+
        if (strcmp(interface, "tizen_surface") == 0) {
                wfd_sink_debug("binding tizen_surface");
                wlclient->tz_surface = wl_registry_bind(registry, name, &tizen_surface_interface, version);
@@ -92,7 +95,7 @@ int mm_wfd_sink_wlclient_get_wl_window_wl_surface_id(wl_client *wlclient, struct
 {
        unsigned int wl_surface_id = 0;
        struct wl_event_queue *queue1 = NULL;
-       struct wl_event_queue *queue2 = NULL;
+       struct wl_display *display_wrapper = NULL;
 
        goto_if_fail(wlclient != NULL, failed);
        goto_if_fail(surface != NULL, failed);
@@ -104,25 +107,25 @@ int mm_wfd_sink_wlclient_get_wl_window_wl_surface_id(wl_client *wlclient, struct
        queue1 = wl_display_create_queue(wlclient->display);
        goto_if_fail(queue1 != NULL, failed);
 
-       wlclient->registry = wl_display_get_registry(wlclient->display);
+       display_wrapper = wl_proxy_create_wrapper(wlclient->display);
+       goto_if_fail(display_wrapper != NULL, failed);
+       wl_proxy_set_queue((struct wl_proxy *) display_wrapper, queue1);
+
+       wlclient->registry = wl_display_get_registry(display_wrapper);
+       wl_proxy_wrapper_destroy(display_wrapper);
+       display_wrapper = NULL;
        goto_if_fail(wlclient->registry != NULL, failed);
 
-       wl_proxy_set_queue((struct wl_proxy *)wlclient->registry, queue1);
        wl_registry_add_listener(wlclient->registry, &registry_listener, wlclient);
        wl_display_roundtrip_queue(wlclient->display, queue1);
 
        goto_if_fail(wlclient->tz_surface != NULL, failed);
 
-       /* Get wl_surface_id which is unique in a entire systemw. */
        wlclient->tz_resource = tizen_surface_get_tizen_resource(wlclient->tz_surface, surface);
        goto_if_fail(wlclient->tz_resource != NULL, failed);
 
-       queue2 = wl_display_create_queue(wlclient->display);
-       goto_if_fail(queue2 != NULL, failed);
-
-       wl_proxy_set_queue((struct wl_proxy *)wlclient->tz_resource, queue2);
        tizen_resource_add_listener(wlclient->tz_resource, &tz_resource_listener, &wl_surface_id);
-       wl_display_roundtrip_queue(wlclient->display, queue2);
+       wl_display_roundtrip_queue(wlclient->display, queue1);
 
        goto_if_fail(wl_surface_id > 0, failed);
 
@@ -130,11 +133,7 @@ int mm_wfd_sink_wlclient_get_wl_window_wl_surface_id(wl_client *wlclient, struct
 
        wl_event_queue_destroy(queue1);
        queue1 = NULL;
-       wl_event_queue_destroy(queue2);
-       queue2 = NULL;
-
        return wl_surface_id;
-
 failed:
        wfd_sink_error("Failed to get wl_surface_id");
 
@@ -142,13 +141,7 @@ failed:
                wl_event_queue_destroy(queue1);
                queue1 = NULL;
        }
-       if (queue2) {
-               wl_event_queue_destroy(queue2);
-               queue2 = NULL;
-       }
-
        mm_wfd_sink_wlclient_finalize(wlclient);
-
        return 0;
 }