From 1baab7a28e01fbde468a79a228db3f4e5c32dfe2 Mon Sep 17 00:00:00 2001 From: Sangchul Lee Date: Fri, 1 Nov 2013 18:45:22 +0900 Subject: [PATCH] [evasimagesink] Fix visible issue Change-Id: I44be198e59fe03357ac9480e5886dba289e5ac6e --- evasimagesink/src/gstevasimagesink.c | 44 +++++++++++++++++------------------- packaging/gst-plugins-ext0.10.spec | 2 +- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/evasimagesink/src/gstevasimagesink.c b/evasimagesink/src/gstevasimagesink.c index 9a2fbd4..0647bf6 100644 --- a/evasimagesink/src/gstevasimagesink.c +++ b/evasimagesink/src/gstevasimagesink.c @@ -224,10 +224,6 @@ evas_image_sink_cb_pipe (void *data, void *buffer, unsigned int nbyte) if (!buffer || nbyte != sizeof (GstBuffer *)) { return; } - if (GST_STATE(esink) < GST_STATE_PAUSED) { - GST_WARNING ("WRONG-STATE(%d) for rendering, skip this frame", GST_STATE(esink)); - return; - } memcpy (&buf, buffer, sizeof (GstBuffer *)); if (!buf) { @@ -551,12 +547,11 @@ gst_evas_image_sink_set_property (GObject *object, guint prop_id, const GValue * } GST_DEBUG("Evas Image Object(%x) is set",esink->eo); esink->is_evas_object_size_set = FALSE; - esink->object_show = TRUE; - esink->update_visibility = UPDATE_TRUE; - if (esink->epipe) { - r = ecore_pipe_write (esink->epipe, &esink->update_visibility, SIZE_FOR_UPDATE_VISIBILITY); - if (r == EINA_FALSE) { - GST_WARNING ("Failed to ecore_pipe_write() for updating visibility\n"); + if (!esink->epipe) { + esink->epipe = ecore_pipe_add (evas_image_sink_cb_pipe, esink); + if (!esink->epipe) { + GST_ERROR ("ecore-pipe create failed"); + break; } } } @@ -574,12 +569,17 @@ gst_evas_image_sink_set_property (GObject *object, guint prop_id, const GValue * break; } esink->update_visibility = UPDATE_TRUE; - if (esink->epipe) { - r = ecore_pipe_write (esink->epipe, &esink->update_visibility, SIZE_FOR_UPDATE_VISIBILITY); - if (r == EINA_FALSE) { - GST_WARNING ("Failed to ecore_pipe_write() for updating visibility)\n"); + if (!esink->epipe) { + esink->epipe = ecore_pipe_add (evas_image_sink_cb_pipe, esink); + if (!esink->epipe) { + GST_ERROR ("ecore-pipe create failed"); + break; } } + r = ecore_pipe_write (esink->epipe, &esink->update_visibility, SIZE_FOR_UPDATE_VISIBILITY); + if (r == EINA_FALSE) { + GST_WARNING ("Failed to ecore_pipe_write() for updating visibility)\n"); + } break; } default: @@ -647,16 +647,14 @@ gst_evas_image_sink_show_frame (GstVideoSink *video_sink, GstBuffer *buf) return GST_FLOW_ERROR; } } - if (esink->object_show) { - gst_buffer_ref (buf); - __ta__("evasimagesink ecore_pipe_write", r = ecore_pipe_write (esink->epipe, &buf, sizeof (GstBuffer *));); - if (r == EINA_FALSE) { - gst_buffer_unref (buf); - } - GST_DEBUG ("ecore_pipe_write() was called with GST_BUFFER_DATA(buf):%x", GST_BUFFER_DATA(buf)); - } else { - GST_DEBUG ("skip ecore_pipe_write()"); + + gst_buffer_ref (buf); + __ta__("evasimagesink ecore_pipe_write", r = ecore_pipe_write (esink->epipe, &buf, sizeof (GstBuffer *));); + if (r == EINA_FALSE) { + gst_buffer_unref (buf); } + GST_DEBUG ("ecore_pipe_write() was called with GST_BUFFER_DATA(buf):%x", GST_BUFFER_DATA(buf)); + g_mutex_unlock (instance_lock); return GST_FLOW_OK; } diff --git a/packaging/gst-plugins-ext0.10.spec b/packaging/gst-plugins-ext0.10.spec index 86a832e..c750334 100644 --- a/packaging/gst-plugins-ext0.10.spec +++ b/packaging/gst-plugins-ext0.10.spec @@ -1,5 +1,5 @@ Name: gst-plugins-ext0.10 -Version: 0.3.11 +Version: 0.3.12 Summary: GStreamer extra plugins (common) Release: 0 Group: libs -- 2.7.4