{"id":818284,"url":"http://patchwork.ozlabs.org/api/patches/818284/?format=json","web_url":"http://patchwork.ozlabs.org/project/buildroot/patch/20170925150112.5818-1-aduskett@gmail.com/","project":{"id":27,"url":"http://patchwork.ozlabs.org/api/projects/27/?format=json","name":"Buildroot development","link_name":"buildroot","list_id":"buildroot.buildroot.org","list_email":"buildroot@buildroot.org","web_url":"","scm_url":"","webscm_url":"","list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20170925150112.5818-1-aduskett@gmail.com>","list_archive_url":null,"date":"2017-09-25T15:01:12","name":"[v2,1/1] gstreamer1-mm: new package","commit_ref":null,"pull_url":null,"state":"superseded","archived":true,"hash":"a090944c6d3508bed2b0966f54f4bef0db2217d0","submitter":{"id":69311,"url":"http://patchwork.ozlabs.org/api/people/69311/?format=json","name":"Adam Duskett","email":"Aduskett@gmail.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/buildroot/patch/20170925150112.5818-1-aduskett@gmail.com/mbox/","series":[{"id":4980,"url":"http://patchwork.ozlabs.org/api/series/4980/?format=json","web_url":"http://patchwork.ozlabs.org/project/buildroot/list/?series=4980","date":"2017-09-25T15:01:12","name":"[v2,1/1] gstreamer1-mm: new package","version":2,"mbox":"http://patchwork.ozlabs.org/series/4980/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/818284/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/818284/checks/","tags":{},"related":[],"headers":{"Return-Path":"<buildroot-bounces@busybox.net>","X-Original-To":["incoming@patchwork.ozlabs.org","buildroot@lists.busybox.net"],"Delivered-To":["patchwork-incoming@bilbo.ozlabs.org","buildroot@osuosl.org"],"Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=busybox.net\n\t(client-ip=140.211.166.138; helo=whitealder.osuosl.org;\n\tenvelope-from=buildroot-bounces@busybox.net;\n\treceiver=<UNKNOWN>)","ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"XjPpdIH4\"; dkim-atps=neutral"],"Received":["from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y16k15xmZz9t67\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 26 Sep 2017 01:01:45 +1000 (AEST)","from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 6719D87D98;\n\tMon, 25 Sep 2017 15:01:42 +0000 (UTC)","from whitealder.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id ETKf7tdrZI8j; Mon, 25 Sep 2017 15:01:39 +0000 (UTC)","from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 60B2587D2D;\n\tMon, 25 Sep 2017 15:01:39 +0000 (UTC)","from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n\tby ash.osuosl.org (Postfix) with ESMTP id BFE6B1C11CB\n\tfor <buildroot@lists.busybox.net>;\n\tMon, 25 Sep 2017 15:01:37 +0000 (UTC)","from localhost (localhost [127.0.0.1])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id B2EE8864F9\n\tfor <buildroot@lists.busybox.net>;\n\tMon, 25 Sep 2017 15:01:37 +0000 (UTC)","from fraxinus.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id cYBApVgzrCHt for <buildroot@lists.busybox.net>;\n\tMon, 25 Sep 2017 15:01:36 +0000 (UTC)","from mail-io0-f196.google.com (mail-io0-f196.google.com\n\t[209.85.223.196])\n\tby fraxinus.osuosl.org (Postfix) with ESMTPS id 252F5864C8\n\tfor <buildroot@buildroot.org>; Mon, 25 Sep 2017 15:01:36 +0000 (UTC)","by mail-io0-f196.google.com with SMTP id 93so3129908iol.4\n\tfor <buildroot@buildroot.org>; Mon, 25 Sep 2017 08:01:36 -0700 (PDT)","from localhost.localdomain (mail.codeblue.com. [65.183.183.198])\n\tby smtp.gmail.com with ESMTPSA id\n\tr186sm1094153itb.40.2017.09.25.08.01.34\n\t(version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);\n\tMon, 25 Sep 2017 08:01:34 -0700 (PDT)"],"X-Virus-Scanned":["amavisd-new at osuosl.org","amavisd-new at osuosl.org"],"X-Greylist":"domain auto-whitelisted by SQLgrey-1.7.6","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=from:to:cc:subject:date:message-id;\n\tbh=uzmDckX09VsM4BLk21YnVzJOjjpWuJSNRppebiAXJ+M=;\n\tb=XjPpdIH4oW+r9L8LuezNnI3jC8xiNFALR0UwP0Pkg7wORxtMjN9oOeu7YC+fWnACEa\n\tkQP8SvWk1t/+yQcwSAzO/TvmZBhGJYNclqPRdVahL7sJLt7dVGRD46TWD7U7uLXiQEKS\n\t5rl/uZcW6TQVfyFtJge2W5+15hxgEOqGOd0VO0mq4d4RBD705olU7j0qcJ9sRms29j/v\n\tVDaAVz72qz3INANMpYFgQ+KvKxtnG7DccKJtCYqpSzHRoUkFJGiyhSWF+ZztH7mWQEkl\n\tOdezHm2GEmJCgBB2Idrkwt9t4UJMcg80hBeUBXgzLIXsgo81IwoPRyuyKZU2rOMnoOqE\n\tcl/A==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id;\n\tbh=uzmDckX09VsM4BLk21YnVzJOjjpWuJSNRppebiAXJ+M=;\n\tb=W2254IFogX0SH7lfyy/0cEQ2zhNA/Hp/OJOgIKn7Sa/cqRpVaf3B2fSBkP5zNqgDos\n\tNR6TYp3JZD0h17XmWfTmApPDhM5FS1vW+tTxA9sLHhPrI+OWXSm0lU1QLIN290Cl9DGZ\n\tPTnc89UgWa3ufrdyIZYYmyEXuY1OFIbyIBKlQRYDG5DOq5hoIXhh9vqIpU9yRlC3Mq3q\n\tV32kvzJ1e8D57vSxQ9ed5tK4jxZd+9srsu+pT4Szuu2u8uYWvJjAOeln4SOYTsHhZR5M\n\tfPvEM/s7lnn70PPn9mgMU7iVRCMkDXjIgXlcMZekgv8EyKj9s6LcFxijUj8GcCJSz1BF\n\tb75g==","X-Gm-Message-State":"AHPjjUjvoyrWNQxX/SuOi5DVzmw3nmuzh3teLSy4jiNyMdnHID9FVxhL\n\t87uj/xZ5P7xQDsUAHW/6vRH98+Zt","X-Google-Smtp-Source":"AOwi7QCh5rnJYOt9pY09oiaCsYKvnzYr0JkPSast1+zpqvcIcM3CBiDH9+4ZRn+TksZeMT5ahgJVsQ==","X-Received":"by 10.107.10.141 with SMTP id 13mr9576694iok.302.1506351694937; \n\tMon, 25 Sep 2017 08:01:34 -0700 (PDT)","From":"Adam Duskett <aduskett@gmail.com>","To":"buildroot@buildroot.org","Date":"Mon, 25 Sep 2017 11:01:12 -0400","Message-Id":"<20170925150112.5818-1-aduskett@gmail.com>","X-Mailer":"git-send-email 2.13.5","Cc":"Adam Duskett <aduskett@gmail.com>","Subject":"[Buildroot] [PATCH v2 1/1] gstreamer1-mm: new package","X-BeenThere":"buildroot@busybox.net","X-Mailman-Version":"2.1.18-1","Precedence":"list","List-Id":"Discussion and development of buildroot <buildroot.busybox.net>","List-Unsubscribe":"<http://lists.busybox.net/mailman/options/buildroot>,\n\t<mailto:buildroot-request@busybox.net?subject=unsubscribe>","List-Archive":"<http://lists.busybox.net/pipermail/buildroot/>","List-Post":"<mailto:buildroot@busybox.net>","List-Help":"<mailto:buildroot-request@busybox.net?subject=help>","List-Subscribe":"<http://lists.busybox.net/mailman/listinfo/buildroot>,\n\t<mailto:buildroot-request@busybox.net?subject=subscribe>","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"buildroot-bounces@busybox.net","Sender":"\"buildroot\" <buildroot-bounces@busybox.net>"},"content":"Gstreamermm provides C++ bindings for gstreamer.\n\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n---\nChanges v1 -> v2:\n  - Changed the name of the package from gst1-mm to gstreamer1-mm (Arnout)\n  - Added upstream author information to the patches (Arnout)\n  - Changed the upstream repo from github to git.gnome.org (Arnout)\n  - Added myself to the DEVELOPERS file.\n  - Added --enable-unittests=no to the mk file, as the default is auto.\n\n\n DEVELOPERS                                         |   1 +\n package/gstreamer1/Config.in                       |   1 +\n ...ock-auto-generate-some-audioclock-methods.patch |  68 +++++++\n .../gstreamer1-mm/0002-fix-iterator-build.patch    | 207 +++++++++++++++++++++\n .../0003-remove-gstreamer-check-dependency.patch   |  29 +++\n package/gstreamer1/gstreamer1-mm/Config.in         |  18 ++\n .../gstreamer1/gstreamer1-mm/gstreamer1-mm.hash    |   2 +\n package/gstreamer1/gstreamer1-mm/gstreamer1-mm.mk  |  24 +++\n 8 files changed, 350 insertions(+)\n create mode 100644 package/gstreamer1/gstreamer1-mm/0001-gst-audioclock-auto-generate-some-audioclock-methods.patch\n create mode 100644 package/gstreamer1/gstreamer1-mm/0002-fix-iterator-build.patch\n create mode 100644 package/gstreamer1/gstreamer1-mm/0003-remove-gstreamer-check-dependency.patch\n create mode 100644 package/gstreamer1/gstreamer1-mm/Config.in\n create mode 100644 package/gstreamer1/gstreamer1-mm/gstreamer1-mm.hash\n create mode 100644 package/gstreamer1/gstreamer1-mm/gstreamer1-mm.mk","diff":"diff --git a/DEVELOPERS b/DEVELOPERS\nindex e34802f2ba..0342b1cc41 100644\n--- a/DEVELOPERS\n+++ b/DEVELOPERS\n@@ -32,6 +32,7 @@ F:\tpackage/gstreamer1/gst1-rtsp-server/\n N:\tAdam Duskett <aduskett@gmail.com>\n F:\tpackage/audit/\n F:\tpackage/checkpolicy/\n+F:\tpackage/gstreamer1/gstreamer1-mm/\n F:\tpackage/gstreamer1/gst1-vaapi/\n F:\tpackage/janus-gateway/\n F:\tpackage/libressl/\ndiff --git a/package/gstreamer1/Config.in b/package/gstreamer1/Config.in\nindex aef75b55bf..a7b2a70d5b 100644\n--- a/package/gstreamer1/Config.in\n+++ b/package/gstreamer1/Config.in\n@@ -12,4 +12,5 @@ source \"package/gstreamer1/gst1-rtsp-server/Config.in\"\n source \"package/gstreamer1/gst1-validate/Config.in\"\n source \"package/gstreamer1/gst1-vaapi/Config.in\"\n source \"package/gstreamer1/gst-omx/Config.in\"\n+source \"package/gstreamer1/gstreamer1-mm/Config.in\"\n endif\ndiff --git a/package/gstreamer1/gstreamer1-mm/0001-gst-audioclock-auto-generate-some-audioclock-methods.patch b/package/gstreamer1/gstreamer1-mm/0001-gst-audioclock-auto-generate-some-audioclock-methods.patch\nnew file mode 100644\nindex 0000000000..6f35a62cee\n--- /dev/null\n+++ b/package/gstreamer1/gstreamer1-mm/0001-gst-audioclock-auto-generate-some-audioclock-methods.patch\n@@ -0,0 +1,68 @@\n+From 33d5ab0b12ee26823be155f766a4becdf1711b7c Mon Sep 17 00:00:00 2001\n+From: Marcin Kolny <marcin.kolny@gmail.com>\n+Date: Sat, 10 Jun 2017 15:11:22 +0100\n+Subject: [PATCH] Gst::AudioClock: auto generate some audioclock methods\n+\n+Those methods used to have object of GstClock type  as a\n+first argument, so had to be wrapped manually. It has been\n+fixed inGStreamer (https://bugzilla.gnome.org/show_bug.cgi?id=756628)\n+in version 1.12.0\n+\n+https://bugzilla.gnome.org/show_bug.cgi?id=783628\n+Signed-off-by: Adam Duskett <aduskett@gmail.com>\n+[Upstream commit: https://git.gnome.org/browse/gstreamermm/commit/?id=167eeba7757027e5faf8cdb59030ca094af04763]\n+---\n+ gstreamer/gstreamermm/audioclock.cc | 30 +++++++++++++++---------------\n+ 1 file changed, 15 insertions(+), 15 deletions(-)\n+\n+diff --git a/gstreamer/gstreamermm/audioclock.cc b/gstreamer/gstreamermm/audioclock.cc\n+index 0bd4bc4..a2b18c4 100644\n+--- a/gstreamer/gstreamermm/audioclock.cc\n++++ b/gstreamer/gstreamermm/audioclock.cc\n+@@ -74,21 +74,6 @@ AudioClock::AudioClock(const Glib::ustring& name, const SlotGetTime& time_slot)\n+   gobj()->user_data = m_slot.get();\n+ }\n+ \n+-Gst::ClockTime AudioClock::adjust(Gst::ClockTime time)\n+-{\n+-  return static_cast<Gst::ClockTime>(gst_audio_clock_adjust(GST_CLOCK_CAST(gobj()), static_cast<GstClockTime>(time)));\n+-}\n+-\n+-Gst::ClockTime AudioClock::get_time() const\n+-{\n+-  return static_cast<Gst::ClockTime>(gst_audio_clock_get_time(GST_CLOCK_CAST(gobj())));\n+-}\n+-\n+-void AudioClock::invalidate()\n+-{\n+-  gst_audio_clock_invalidate(GST_CLOCK_CAST(gobj()));\n+-}\n+-\n+ } //namespace Gst\n+ \n+ namespace\n+@@ -211,6 +196,21 @@ void AudioClock::reset(Gst::ClockTime time)\n+   gst_audio_clock_reset(gobj(), ((GstClockTime)(time)));\n+ }\n+ \n++Gst::ClockTime AudioClock::adjust(Gst::ClockTime time)\n++{\n++  return ((Gst::ClockTime)(gst_audio_clock_adjust(gobj(), ((GstClockTime)(time)))));\n++}\n++\n++Gst::ClockTime AudioClock::get_time() const\n++{\n++  return ((Gst::ClockTime)(gst_audio_clock_get_time(const_cast<GstAudioClock*>(gobj()))));\n++}\n++\n++void AudioClock::invalidate()\n++{\n++  gst_audio_clock_invalidate(gobj());\n++}\n++\n+ \n+ } // namespace Gst\n+ \n+-- \n+2.13.5\n+\ndiff --git a/package/gstreamer1/gstreamer1-mm/0002-fix-iterator-build.patch b/package/gstreamer1/gstreamer1-mm/0002-fix-iterator-build.patch\nnew file mode 100644\nindex 0000000000..75b5280265\n--- /dev/null\n+++ b/package/gstreamer1/gstreamer1-mm/0002-fix-iterator-build.patch\n@@ -0,0 +1,207 @@\n+From 70a44a8e489f08bddaa180016837d00f420f9e99 Mon Sep 17 00:00:00 2001\n+From: Marcin Kolny <marcin.kolny@gmail.com>\n+Date: Sun, 2 Jul 2017 13:48:29 +0100\n+Subject: [PATCH] Gst::Iterator: fix iterator build\n+\n+https://bugzilla.gnome.org/show_bug.cgi?id=783678\n+Signed-off-by: Adam Duskett <aduskett@gmail.com>\n+[Upstream commit: https://git.gnome.org/browse/gstreamermm/commit/?id=2a195b23bda7fef980a2dd00aedd9f1decab7a89]\n+---\n+ gstreamer/src/iterator.hg | 63 +++++++++++++++++++++++------------------------\n+ tests/Makefile.am         |  2 ++\n+ tests/test-iterator.cc    | 62 ++++++++++++++++++++++++++++++++++++++++++++++\n+ 3 files changed, 95 insertions(+), 32 deletions(-)\n+ create mode 100644 tests/test-iterator.cc\n+\n+diff --git a/gstreamer/src/iterator.hg b/gstreamer/src/iterator.hg\n+index 6f10417..f76c34d 100644\n+--- a/gstreamer/src/iterator.hg\n++++ b/gstreamer/src/iterator.hg\n+@@ -125,9 +125,6 @@ private:\n+   GstIterator* cobject_;    // The underlying  C object.\n+   bool take_ownership;      // Whether to destroy C object with the wrapper.\n+ #endif /* DOXYGEN_SHOULD_SKIP_THIS */\n+-\n+-private:\n+-  void swap(IteratorBase<CppType>& other);\n+ };\n+ \n+ /**  A class used to retrieve multiple elements in a thread safe way.\n+@@ -243,18 +240,25 @@ template<class CppType>\n+ IteratorBase<CppType>::IteratorBase()\n+ : current(G_VALUE_INIT),\n+   current_result(Gst::ITERATOR_OK),\n+-  cobject_(0),\n++  cobject_(nullptr),\n+   take_ownership(true)\n+ {\n+ }\n+ \n+ template<class CppType>\n+ IteratorBase<CppType>::IteratorBase(const IteratorBase<CppType>& other)\n+-  : current(other.current),\n++  : current(G_VALUE_INIT),\n+     current_result(other.current_result),\n+-    cobject_(const_cast<GstIterator*>(other.cobj())),\n+-    take_ownership((other.cobj()) ? false : true)\n+-{}\n++    take_ownership(other.take_ownership)\n++{\n++  cobject_ = other.take_ownership ? gst_iterator_copy(other.cobject_) : other.cobject_;\n++\n++  if (G_IS_VALUE (&other.current))\n++  {\n++    g_value_init(&current, G_VALUE_TYPE(&other.current));\n++    g_value_copy(&other.current, &current);\n++  }\n++}\n+ \n+ template<class CppType>\n+ IteratorBase<CppType>::IteratorBase(GstIterator* castitem, bool take_ownership)\n+@@ -267,8 +271,25 @@ IteratorBase<CppType>::IteratorBase(GstIterator* castitem, bool take_ownership)\n+ template<class CppType>\n+ IteratorBase<CppType>& IteratorBase<CppType>::operator=(const IteratorBase<CppType>& other)\n+ {\n+-  IteratorBase temp(other);\n+-  swap(temp);\n++  if (cobject_ && take_ownership)\n++  {\n++    gst_iterator_free(cobject_);\n++  }\n++\n++  if (G_IS_VALUE(&current))\n++  {\n++    g_value_unset(&current);\n++  }\n++\n++  current_result = other.current_result;\n++  cobject_ = other.take_ownership ? gst_iterator_copy(other.cobject_) : other.cobject_;\n++\n++  if (G_IS_VALUE (&other.current))\n++  {\n++    g_value_init(&current, G_VALUE_TYPE(&other.current));\n++    g_value_copy(&other.current, &current);\n++  }\n++\n+   return *this;\n+ }\n+ \n+@@ -315,28 +336,6 @@ IteratorBase<CppType>::operator bool() const\n+   return (! G_VALUE_HOLDS_OBJECT(&current));\n+ }\n+ \n+-template<class CppType>\n+-void IteratorBase<CppType>::swap(IteratorBase<CppType>& other)\n+-{\n+-  GstIterator *const temp_obj = cobject_;\n+-  cobject_ = other.cobject_;\n+-  other.cobject_ = temp_obj;\n+-\n+-  const bool temp_take_ownership = take_ownership;\n+-  take_ownership = other.take_ownership;\n+-  other.take_ownership = temp_take_ownership;\n+-\n+-  GValue temp_current = G_VALUE_INIT;\n+-  g_value_init(&temp_current, G_VALUE_TYPE(current));\n+-  g_value_copy(&current, &temp_current);\n+-  g_value_copy(other.current, &current);\n+-  g_value_copy(&temp_current, other.current);\n+-\n+-  const IteratorResult temp_result = current_result;\n+-  current_result = other.current_result;\n+-  other.current_result = temp_result;\n+-}\n+-\n+ //virtual\n+ template<class CppType>\n+ IteratorBase<CppType>::~IteratorBase()\n+diff --git a/tests/Makefile.am b/tests/Makefile.am\n+index c734b62..1d931a9 100644\n+--- a/tests/Makefile.am\n++++ b/tests/Makefile.am\n+@@ -31,6 +31,7 @@ check_PROGRAMS =                                \\\n+         test-element                            \\\n+         test-ghostpad                           \\\n+         test-init                               \\\n++        test-iterator                           \\\n+         test-memory                             \\\n+         test-message                            \\\n+         test-miniobject                         \\\n+@@ -74,6 +75,7 @@ test_caps_SOURCES                               = $(TEST_GTEST_SOURCES) test-cap\n+ test_element_SOURCES                            = $(TEST_GTEST_SOURCES) test-element.cc\n+ test_ghostpad_SOURCES                           = $(TEST_GTEST_SOURCES) test-ghostpad.cc\n+ test_init_SOURCES                               = $(TEST_GTEST_SOURCES) test-init.cc\n++test_iterator_SOURCES                           = $(TEST_GTEST_SOURCES) test-iterator.cc\n+ test_memory_SOURCES                             = $(TEST_GTEST_SOURCES) test-memory.cc\n+ test_message_SOURCES                            = $(TEST_GTEST_SOURCES) test-message.cc\n+ test_miniobject_SOURCES                         = $(TEST_GTEST_SOURCES) test-miniobject.cc\n+diff --git a/tests/test-iterator.cc b/tests/test-iterator.cc\n+new file mode 100644\n+index 0000000..0a90a5b\n+--- /dev/null\n++++ b/tests/test-iterator.cc\n+@@ -0,0 +1,62 @@\n++#include \"mmtest.h\"\n++#include <gstreamermm.h>\n++\n++using namespace Gst;\n++using Glib::RefPtr;\n++\n++TEST(IteratorTest, AssignmentOperatorShouldCopyIterator)\n++{\n++  Glib::RefPtr<Gst::Element> element = Gst::ElementFactory::create_element(\"fakesink\");\n++\n++  Gst::Iterator<Gst::Pad> iter = element->iterate_pads();\n++  Gst::Iterator<Gst::Pad> iter2;\n++  iter2 = iter;\n++\n++  while (iter.next())\n++  {\n++    ASSERT_STREQ(\"sink\", iter->get_name().c_str());\n++  }\n++\n++  while(iter2.next())\n++  {\n++    ASSERT_STREQ(\"sink\", iter2->get_name().c_str());\n++  }\n++}\n++\n++\n++TEST(IteratorTest, BeginShouldResetIterator)\n++{\n++  Glib::RefPtr<Gst::Element> element = Gst::ElementFactory::create_element(\"fakesink\");\n++\n++  Gst::Iterator<Gst::Pad> iter = element->iterate_pads();\n++  \n++  while (iter.next())\n++  {\n++    ASSERT_STREQ(\"sink\", iter->get_name().c_str());\n++  }\n++\n++  iter.begin();\n++  while (iter.next())\n++  {\n++    ASSERT_STREQ(\"sink\", iter->get_name().c_str());\n++  }\n++}\n++\n++TEST(IteratorTest, CopyConstructorShouldCopyIteratorAndItsState)\n++{\n++  Glib::RefPtr<Gst::Element> element = Gst::ElementFactory::create_element(\"fakesink\");\n++\n++  Gst::Iterator<Gst::Pad> iter = element->iterate_pads();\n++\n++  while (iter.next())\n++  {\n++    ASSERT_STREQ(\"sink\", iter->get_name().c_str());\n++  }\n++\n++  ASSERT_FALSE(iter.next());\n++\n++  Gst::Iterator<Gst::Pad> iter2 = iter;\n++\n++  ASSERT_FALSE(iter.next());\n++}\n++\n+-- \n+2.13.5\ndiff --git a/package/gstreamer1/gstreamer1-mm/0003-remove-gstreamer-check-dependency.patch b/package/gstreamer1/gstreamer1-mm/0003-remove-gstreamer-check-dependency.patch\nnew file mode 100644\nindex 0000000000..70a05a6cdb\n--- /dev/null\n+++ b/package/gstreamer1/gstreamer1-mm/0003-remove-gstreamer-check-dependency.patch\n@@ -0,0 +1,29 @@\n+From f65960a21c76bcd1371a9d0d3b008731d02a0e5d Mon Sep 17 00:00:00 2001\n+From: Adam Duskett <aduskett@gmail.com>\n+Date: Thu, 31 Aug 2017 11:42:40 -0400\n+Subject: [PATCH] remove gstreamer-check dependency\n+\n+gstreamer-check is disabled by default in buildroot and itsn't required to\n+build gstreamermm. Remove the requirement from configure.\n+\n+Signed-off-by: Adam Duskett <aduskett@gmail.com>\n+---\n+ configure | 2 +-\n+ 1 file changed, 1 insertion(+), 1 deletion(-)\n+\n+diff --git a/configure b/configure\n+index de43442..c30bc4c 100755\n+--- a/configure\n++++ b/configure\n+@@ -16685,7 +16685,7 @@ fi\n+ # The format below is used so that the requirements appear nicely in the .pc\n+ # file.\n+ \n+-GSTREAMERMM_MODULES='giomm-2.4 >= 2.47.6 gstreamer-1.0 >= 1.8.0 gstreamer-base-1.0 >= 1.8.0 gstreamer-check-1.0 >= 1.8.0 gstreamer-controller-1.0 >= 1.8.0 gstreamer-net-1.0 >= 1.8.0 gstreamer-allocators-1.0 >= 1.8.0 gstreamer-app-1.0 >= 1.8.0 gstreamer-audio-1.0 >= 1.8.0 gstreamer-fft-1.0 >= 1.8.0 gstreamer-pbutils-1.0 >= 1.8.0 gstreamer-plugins-base-1.0 >= 1.8.0 gstreamer-riff-1.0 >= 1.8.0 gstreamer-rtp-1.0 >= 1.8.0 gstreamer-rtsp-1.0 >= 1.8.0 gstreamer-sdp-1.0 >= 1.8.0 gstreamer-tag-1.0 >= 1.8.0 gstreamer-video-1.0 >= 1.8.0'\n++GSTREAMERMM_MODULES='giomm-2.4 >= 2.47.6 gstreamer-1.0 >= 1.8.0 gstreamer-base-1.0 >= 1.8.0 gstreamer-controller-1.0 >= 1.8.0 gstreamer-net-1.0 >= 1.8.0 gstreamer-allocators-1.0 >= 1.8.0 gstreamer-app-1.0 >= 1.8.0 gstreamer-audio-1.0 >= 1.8.0 gstreamer-fft-1.0 >= 1.8.0 gstreamer-pbutils-1.0 >= 1.8.0 gstreamer-plugins-base-1.0 >= 1.8.0 gstreamer-riff-1.0 >= 1.8.0 gstreamer-rtp-1.0 >= 1.8.0 gstreamer-rtsp-1.0 >= 1.8.0 gstreamer-sdp-1.0 >= 1.8.0 gstreamer-tag-1.0 >= 1.8.0 gstreamer-video-1.0 >= 1.8.0'\n+ \n+ \n+ \n+-- \n+2.13.5\n+\ndiff --git a/package/gstreamer1/gstreamer1-mm/Config.in b/package/gstreamer1/gstreamer1-mm/Config.in\nnew file mode 100644\nindex 0000000000..a2915547ea\n--- /dev/null\n+++ b/package/gstreamer1/gstreamer1-mm/Config.in\n@@ -0,0 +1,18 @@\n+config BR2_PACKAGE_GSTREAMER1_MM\n+\tbool \"Gstreamer C++ bindings\"\n+\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n+\tselect BR2_PACKAGE_GLIBMM\n+\thelp\n+\t  gstreamermm provides C++ bindings for the GStreamer streaming\n+\t  multimedia library (http://gstreamer.freedesktop.org). With\n+\t  gstreamermm it is possible to\tdevelop applications that work\n+\t  with multimedia in C++.\n+\n+\t  gstreamermm is developed over glibmm, libsigc++ and libxml++\n+\t  and the functionalities they provide. This means that, among\n+\t  other things, referencing and unreferencing of GObjects is\n+\t  handled automatically via glibmm's automatic pointer class,\n+\t  Glib::RefPtr, and libsigc++'s slots are used for callbacks and\n+\t  signals.\n+\n+\t  https://gstreamer.freedesktop.org/bindings/cplusplus.html\ndiff --git a/package/gstreamer1/gstreamer1-mm/gstreamer1-mm.hash b/package/gstreamer1/gstreamer1-mm/gstreamer1-mm.hash\nnew file mode 100644\nindex 0000000000..d10e002151\n--- /dev/null\n+++ b/package/gstreamer1/gstreamer1-mm/gstreamer1-mm.hash\n@@ -0,0 +1,2 @@\n+#From http://ftp.gnome.org/pub/gnome/sources/gstreamermm/1.8/gstreamermm-1.8.0.sha256sum\n+sha256 3ee3c1457ea2c32c1e17b784faa828f414ba27a9731532bf26d137a2ad999a44 gstreamermm-1.8.0.tar.xz\ndiff --git a/package/gstreamer1/gstreamer1-mm/gstreamer1-mm.mk b/package/gstreamer1/gstreamer1-mm/gstreamer1-mm.mk\nnew file mode 100644\nindex 0000000000..9bc4669ef1\n--- /dev/null\n+++ b/package/gstreamer1/gstreamer1-mm/gstreamer1-mm.mk\n@@ -0,0 +1,24 @@\n+################################################################################\n+#\n+# gstreamer1-mm\n+#\n+################################################################################\n+\n+GSTREAMER1_MM_VERSION_MAJOR = 1.8\n+GSTREAMER1_MM_VERSION = $(GSTREAMER1_MM_VERSION_MAJOR).0\n+GSTREAMER1_MM_SITE = http://ftp.gnome.org/pub/gnome/sources/gstreamermm/$(GSTREAMER1_MM_VERSION_MAJOR)\n+GSTREAMER1_MM_SOURCE = gstreamermm-$(GSTREAMER1_MM_VERSION).tar.xz\n+GSTREAMER1_MM_LICENSE = LGPL-2.1+\n+GSTREAMER1_MM_LICENSE_FILES = COPYING.LIB\n+GSTREAMER1_MM_INSTALL_STAGING = YES\n+GSTREAMER1_MM_DEPENDENCIES += \\\n+\tglibmm \\\n+\tgstreamer1 \\\n+\tgst1-plugins-base\n+\n+GSTREAMER1_MM_CONF_OPTS += \\\n+\t--disable-gl \\\n+\t--disable-plugins-bad \\\n+\t--enable-unittests=no\n+\n+$(eval $(autotools-package))\n","prefixes":["v2","1/1"]}