gnomemm r2121 - in gstreamermm/trunk: . gstreamer/gstreamermm gstreamer/gstreamermm/private gstreamer/src tools/m4
- From: jaalburqu svn gnome org
- To: svn-commits-list gnome org
- Subject: gnomemm r2121 - in gstreamermm/trunk: . gstreamer/gstreamermm gstreamer/gstreamermm/private gstreamer/src tools/m4
- Date: Mon, 23 Mar 2009 23:50:48 +0000 (UTC)
Author: jaalburqu
Date: Mon Mar 23 23:50:48 2009
New Revision: 2121
URL: http://svn.gnome.org/viewvc/gnomemm?rev=2121&view=rev
Log:
2009-03-23 Josà Alburquerque <jaalburqu svn gnome org>
* gstreamer/gstreamermm/Makefile.am:
* gstreamer/gstreamermm/private/Makefile.am:
* gstreamer/src/Makefile_list_of_hg.am_fragment:
* gstreamer/src/gst_vfuncs.defs:
* gstreamer/src/object.ccg:
* gstreamer/src/object.hg: Wrapped Gst::Object's methods, signals and
vfuncs with gmmproc.
* gstreamer/src/xml.hg: Used xmlNodePtr instead of xmlNode* in
object_loaded() signal parameter.
* gstreamer/src/gst_signals.defs.patch:
* gstreamer/src/gst_signals.defs: Corrected signal defs patch and
regenerated the signal defs.
* tools/m4/convert_gst.m4: Added Gst::Object conversion.
* gstreamer/gstreamermm/object.cc:
* gstreamer/gstreamermm/object.h:
* gstreamer/gstreamermm/private/object_p.h: Removed these because
gmmproc now generates them.
* gstreamer/src/bin.ccg: Modified remove() to throw exceptions if
element is null or removal failed (like add() does).
* gstreamer/src/element.hg: Typo.
Added:
gstreamermm/trunk/gstreamer/src/object.ccg
gstreamermm/trunk/gstreamer/src/object.hg
Removed:
gstreamermm/trunk/gstreamer/gstreamermm/object.cc
gstreamermm/trunk/gstreamer/gstreamermm/object.h
gstreamermm/trunk/gstreamer/gstreamermm/private/object_p.h
Modified:
gstreamermm/trunk/ChangeLog
gstreamermm/trunk/gstreamer/gstreamermm/Makefile.am
gstreamermm/trunk/gstreamer/gstreamermm/private/Makefile.am
gstreamermm/trunk/gstreamer/src/Makefile_list_of_hg.am_fragment
gstreamermm/trunk/gstreamer/src/bin.ccg
gstreamermm/trunk/gstreamer/src/element.hg
gstreamermm/trunk/gstreamer/src/gst_signals.defs
gstreamermm/trunk/gstreamer/src/gst_signals.defs.patch
gstreamermm/trunk/gstreamer/src/xml.hg
gstreamermm/trunk/tools/m4/convert_gst.m4
Modified: gstreamermm/trunk/gstreamer/gstreamermm/Makefile.am
==============================================================================
--- gstreamermm/trunk/gstreamer/gstreamermm/Makefile.am (original)
+++ gstreamermm/trunk/gstreamer/gstreamermm/Makefile.am Mon Mar 23 23:50:48 2009
@@ -13,12 +13,12 @@
sublib_files_extra_posix_cc =
sublib_files_extra_win32_cc =
-sublib_files_extra_general_cc = init.cc miniobject.cc object.cc version.cc wrap.cc
+sublib_files_extra_general_cc = init.cc miniobject.cc version.cc wrap.cc
sublib_files_extra_general_deprecated_cc =
sublib_files_extra_posix_h =
sublib_files_extra_win32_h =
-sublib_files_extra_general_h = init.h miniobject.h object.h version.h wrap.h
+sublib_files_extra_general_h = init.h miniobject.h version.h wrap.h
sublib_files_extra_general_deprecated_h =
include $(top_srcdir)/build_shared/Makefile_build.am_fragment
Modified: gstreamermm/trunk/gstreamer/gstreamermm/private/Makefile.am
==============================================================================
--- gstreamermm/trunk/gstreamer/gstreamermm/private/Makefile.am (original)
+++ gstreamermm/trunk/gstreamer/gstreamermm/private/Makefile.am Mon Mar 23 23:50:48 2009
@@ -7,8 +7,8 @@
files_built_all_p_h = $(files_all_hg:.hg=_p.h)
files_all_plugin_p_h = $(files_all_plugin_hg:.hg=_p.h)
files_existing_plugin_p_h = $(files_existing_plugin_hg:.hg=_p.h)
-files_extra_p_h = object_p.h miniobject_p.h taglist_p.h
-files_extra_all_p_h = object_p.h miniobject_p.h taglist_p.h
+files_extra_p_h = miniobject_p.h taglist_p.h
+files_extra_all_p_h = miniobject_p.h taglist_p.h
dist_sources = $(files_built_all_p_h) $(files_extra_all_p_h) \
$(files_all_plugin_p_h)
Modified: gstreamermm/trunk/gstreamer/src/Makefile_list_of_hg.am_fragment
==============================================================================
--- gstreamermm/trunk/gstreamer/src/Makefile_list_of_hg.am_fragment (original)
+++ gstreamermm/trunk/gstreamer/src/Makefile_list_of_hg.am_fragment Mon Mar 23 23:50:48 2009
@@ -7,10 +7,10 @@
files_general_hg = bin.hg buffer.hg bus.hg caps.hg childproxy.hg clock.hg \
element.hg elementfactory.hg enums.hg error.hg event.hg filter.hg \
format.hg index.hg ghostpad.hg indexfactory.hg interface.hg \
- iterator.hg message.hg pad.hg padtemplate.hg parse.hg pipeline.hg \
- plugin.hg pluginfeature.hg preset.hg query.hg registry.hg segment.hg \
- structure.hg systemclock.hg taglist.hg tagsetter.hg task.hg \
- urihandler.hg value.hg xml.hg \
+ iterator.hg message.hg object.hg pad.hg padtemplate.hg parse.hg \
+ pipeline.hg plugin.hg pluginfeature.hg preset.hg query.hg \
+ registry.hg segment.hg structure.hg systemclock.hg taglist.hg \
+ tagsetter.hg task.hg urihandler.hg value.hg xml.hg \
basesrc.hg basesink.hg basetransform.hg pushsrc.hg audioclock.hg \
audiofilter.hg audiosink.hg audiosrc.hg baseaudiosink.hg \
baseaudiosrc.hg cddabasesrc.hg videosink.hg \
Modified: gstreamermm/trunk/gstreamer/src/bin.ccg
==============================================================================
--- gstreamermm/trunk/gstreamer/src/bin.ccg (original)
+++ gstreamermm/trunk/gstreamer/src/bin.ccg Mon Mar 23 23:50:48 2009
@@ -63,7 +63,8 @@
Glib::RefPtr<Gst::Bin> Bin::remove(const Glib::RefPtr<Gst::Element>& element)
{
- //TODO: Throw an exception if element is null?
+ if(!element)
+ throw std::runtime_error("Failed to remove null element.");
const bool result = gst_bin_remove(gobj(), Glib::unwrap(element));
@@ -72,7 +73,7 @@
if(result)
return Glib::wrap(gobj(), true);
else
- return Glib::RefPtr<Gst::Bin>(0);
+ throw std::runtime_error("Failed to remove " + element->get_name() + " element.");
}
} //namespace Gst
Modified: gstreamermm/trunk/gstreamer/src/element.hg
==============================================================================
--- gstreamermm/trunk/gstreamer/src/element.hg (original)
+++ gstreamermm/trunk/gstreamer/src/element.hg Mon Mar 23 23:50:48 2009
@@ -282,11 +282,11 @@
#m4 _CONVERSION(`GstPad*',`const Glib::RefPtr<Gst::Pad>&',`Glib::wrap($3, true)')
- /** signals that a new Gst::Pad has been added to the element.
+ /** Signals that a new Gst::Pad has been added to the element.
*/
_WRAP_SIGNAL(void pad_added(const Glib::RefPtr<Gst::Pad>& new_pad), "pad-added")
- /** signals that a Gst::Pad has been removed from the element
+ /** Signals that a Gst::Pad has been removed from the element.
*/
_WRAP_SIGNAL(void pad_removed(const Glib::RefPtr<Gst::Pad>& old_pad), "pad-removed")
Modified: gstreamermm/trunk/gstreamer/src/gst_signals.defs
==============================================================================
--- gstreamermm/trunk/gstreamer/src/gst_signals.defs (original)
+++ gstreamermm/trunk/gstreamer/src/gst_signals.defs Mon Mar 23 23:50:48 2009
@@ -305,7 +305,7 @@
(return-type "void")
(when "last")
(parameters
- '("gpointer" "p0")
+ '("GstXmlNodePtr" "p0")
)
)
@@ -653,7 +653,7 @@
(when "last")
(parameters
'("GstObject*" "p0")
- '("xmlNode*" "p1")
+ '("xmlNodePtr" "p1")
)
)
Modified: gstreamermm/trunk/gstreamer/src/gst_signals.defs.patch
==============================================================================
--- gstreamermm/trunk/gstreamer/src/gst_signals.defs.patch (original)
+++ gstreamermm/trunk/gstreamer/src/gst_signals.defs.patch Mon Mar 23 23:50:48 2009
@@ -1,5 +1,5 @@
---- gst_signals.defs 2009-01-05 00:03:56.000000000 -0500
-+++ gst_signals.defs.new 2009-01-05 00:06:31.000000000 -0500
+--- gst_signals.defs 2009-03-23 16:36:31.000000000 -0400
++++ gst_signals.defs.new 2009-03-23 16:40:30.000000000 -0400
@@ -1,3 +1,5 @@
+;; Apply gst_signals.defs.patch after regenerating.
+
@@ -42,6 +42,15 @@
)
)
+@@ -303,7 +305,7 @@
+ (return-type "void")
+ (when "last")
+ (parameters
+- '("gpointer" "p0")
++ '("GstXmlNodePtr" "p0")
+ )
+ )
+
@@ -357,7 +359,7 @@
(return-type "gboolean")
(when "last")
@@ -69,16 +78,16 @@
)
)
-@@ -642,7 +644,7 @@
+@@ -651,7 +653,7 @@
(when "last")
(parameters
'("GstObject*" "p0")
- '("gpointer" "p1")
-+ '("xmlNode*" "p1")
++ '("xmlNodePtr" "p1")
)
)
-@@ -951,7 +953,7 @@
+@@ -1190,7 +1192,7 @@
(return-type "void")
(when "last")
(parameters
@@ -87,7 +96,7 @@
'("GstPad*" "p1")
)
)
-@@ -1161,7 +1163,7 @@
+@@ -1400,7 +1402,7 @@
(return-type "void")
(when "last")
(parameters
@@ -96,7 +105,7 @@
'("GstPad*" "p1")
)
)
-@@ -1171,7 +1173,7 @@
+@@ -1410,7 +1412,7 @@
(return-type "void")
(when "last")
(parameters
@@ -105,7 +114,7 @@
'("GstPad*" "p1")
)
)
-@@ -1731,7 +1733,7 @@
+@@ -1970,7 +1972,7 @@
(return-type "void")
(when "last")
(parameters
@@ -114,7 +123,7 @@
)
)
-@@ -5165,7 +5167,7 @@
+@@ -6043,7 +6045,7 @@
(define-signal convert-frame
(of-object "GstPlayBin2")
Added: gstreamermm/trunk/gstreamer/src/object.ccg
==============================================================================
--- (empty file)
+++ gstreamermm/trunk/gstreamer/src/object.ccg Mon Mar 23 23:50:48 2009
@@ -0,0 +1,65 @@
+/* gstreamermm - a C++ wrapper for gstreamer
+ *
+ * Copyright 2008 The gstreamermm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <gst/gstenumtypes.h>
+_PINCLUDE(glibmm/private/object_p.h)
+
+namespace Gst
+{
+
+Object::Object(const Glib::ConstructParams& construct_params)
+:
+ Glib::Object(construct_params)
+{
+ // Get rid of the floating reference for newly constructed Gst::Objects.
+ gst_object_ref(gobj());
+ gst_object_sink(gobj());
+}
+
+Object::Object(GstObject* castitem)
+:
+ Glib::Object((GObject*)(castitem))
+{
+ if(G_LIKELY(GST_OBJECT_IS_FLOATING(castitem)))
+ {
+ //The floating reference is convenience for C,
+ //but is useless and difficult for us:
+ gst_object_ref(gobj());
+ gst_object_sink(gobj());
+ }
+}
+
+xmlpp::Node* Object::save(xmlpp::Node* parent)
+{
+ gst_object_save_thyself(gobj(), parent->cobj());
+
+ // gst_object_save_thyself() returns parent node so do so here also.
+ return parent;
+}
+
+const xmlpp::Node* Object::save(const xmlpp::Node* parent) const
+{
+ gst_object_save_thyself(const_cast<GstObject*>(gobj()),
+ const_cast<xmlNodePtr>(parent->cobj()));
+
+ // gst_object_save_thyself() returns parent node so do so here also.
+ return parent;
+}
+
+} // namespace Gst
Added: gstreamermm/trunk/gstreamer/src/object.hg
==============================================================================
--- (empty file)
+++ gstreamermm/trunk/gstreamer/src/object.hg Mon Mar 23 23:50:48 2009
@@ -0,0 +1,125 @@
+/* gstreamermm - a C++ wrapper for gstreamer
+ *
+ * Copyright 2008 The gstreamermm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <gst/gstobject.h>
+#include <glibmm/object.h>
+#include <libxml++/nodes/node.h>
+
+_DEFS(gstreamermm,gst)
+
+namespace Gst
+{
+
+_WRAP_ENUM(ObjectFlags, GstObjectFlags)
+
+/** @defgroup GstBaseClasses gstreamermm Base Classes
+ * Wrapped GStreamer base classes (plug-ins and other classes derrive from
+ * these).
+ */
+
+/** Gst::Object - Base class for the GStreamer object hierarchy.
+ * Gst::Object provides a root for the object hierarchy tree filed in by the
+ * GStreamer library. It is currently a thin wrapper on top of Glib::Object.
+ * It is an abstract class that is not very usable on its own.
+ *
+ * Gst::Object gives us basic refcounting, parenting functionality and
+ * locking. Most of the function are just extended for special GStreamer needs
+ * and can be found under the same name in the base class of Gst::Object which
+ * is Glib::Object (e.g. Glib::Object::reference() becomes
+ * Gst:Object::reference().
+ *
+ * In contrast to Glib::Object instances, Gst::Object adds a name property.
+ * The functions set_name() and get_name() are used to set/get the name of the
+ * object.
+ *
+ * Last reviewed on 2005-11-09 (0.9.4)
+ * @ingroup GstBaseClasses
+ */
+class Object : public Glib::Object
+{
+ _CLASS_GOBJECT(Object, GstObject, GST_OBJECT, Glib::Object, GObject)
+ _IGNORE(gst_object_ref, gst_object_unref, gst_object_sink,
+ gst_class_signal_connect, gst_class_signal_emit_by_name)
+ _CUSTOM_CTOR_CAST
+
+public:
+ /** Returns the entire set of flags for the object.
+ */
+ _MEMBER_GET(flags, flags, guint32, guint32)
+
+ //TODO: _MEMBER_GET(lock, lock, Glib::Mutex, GMutex)
+
+ _WRAP_METHOD(bool set_name(const Glib::ustring& name), gst_object_set_name)
+ _WRAP_METHOD(Glib::ustring get_name() const, gst_object_get_name)
+ _WRAP_METHOD(bool set_parent(const Glib::RefPtr<Gst::Object>& parent), gst_object_set_parent)
+ _WRAP_METHOD(Glib::RefPtr<Gst::Object> get_parent(), gst_object_get_parent)
+ _WRAP_METHOD(Glib::RefPtr<const Gst::Object> get_parent() const, gst_object_get_parent, constversion)
+ _WRAP_METHOD(void unparent(), gst_object_unparent)
+ _WRAP_METHOD(Glib::ustring get_name_prefix() const, gst_object_get_name_prefix)
+ _WRAP_METHOD(void set_name_prefix(const Glib::ustring& name_prefix), gst_object_set_name_prefix)
+
+ // Ignore default signal and error callback.
+ _IGNORE(gst_object_default_deep_notify, gst_object_default_error)
+
+#m4 _CONVERSION(`const Glib::ListHandle<const Gst::Object>&', `GList*', `($3).data()')
+ _WRAP_METHOD(static bool check_uniqueness(const Glib::ListHandle<const Gst::Object>& list, const Glib::ustring& name), gst_object_check_uniqueness)
+
+ _WRAP_METHOD(bool has_ancestor(const Glib::RefPtr<const Gst::Object>& ancestor) const, gst_object_has_ancestor)
+
+ /** Saves object into the parent XML node.
+ * @param parent The parent XML node to save object into.
+ * @return The new xmlpp::Node pointer with the saved object.
+ */
+ xmlpp::Node* save(xmlpp::Node* parent);
+ _IGNORE(gst_object_save_thyself)
+
+ /** Saves object into the parent XML node.
+ * @param parent The parent XML node to save object into.
+ * @return The new xmlpp::Node pointer with the saved object.
+ */
+ const xmlpp::Node* save(const xmlpp::Node* parent) const;
+
+ _WRAP_METHOD(void restore(xmlpp::Node* self), gst_object_restore_thyself)
+ _WRAP_METHOD(Glib::ustring get_path_string(), gst_object_get_path_string)
+
+ //TODO: Is this useful? (Note that the .def needs to be fixed by hand): _WRAP_SIGNAL(void deep_notify(Glib::RefPtr<Object> prop_object, GParamSpec* prop), "deep-notify")
+
+ /** Trigered whenever a new object is saved to XML. You can connect to this
+ * signal to insert custom XML tags into the core XML.
+ */
+ //TODO: Use xmlpp::Node for parameter?
+ _WRAP_SIGNAL(void object_saved(GstXmlNodePtr xml_node), "object-saved")
+
+#m4 _CONVERSION(`GstObject*', `const Glib::RefPtr<Object>&', `Glib::wrap($3, true)')
+#m4 _CONVERSION(`const Glib::RefPtr<Object>&', `GstObject*', `($3)->gobj()')
+
+ /** Emitted when the parent of an object is set.
+ */
+ _WRAP_SIGNAL(void parent_set(const Glib::RefPtr<Object>& parent), "parent-set")
+
+ /** Emitted when the parent of an object is unset.
+ */
+ _WRAP_SIGNAL(void parent_unset(const Glib::RefPtr<Object>& parent), "parent-unset")
+
+ //TODO: Use xmlpp::Node as return and params in vfuncs below?
+ _WRAP_VFUNC(GstXmlNodePtr save(GstXmlNodePtr parent), "save_thyself")
+ _WRAP_VFUNC(void restore(GstXmlNodePtr self_node), "restore_thyself")
+};
+
+} // namespace Gst
Modified: gstreamermm/trunk/gstreamer/src/xml.hg
==============================================================================
--- gstreamermm/trunk/gstreamer/src/xml.hg (original)
+++ gstreamermm/trunk/gstreamer/src/xml.hg Mon Mar 23 23:50:48 2009
@@ -91,8 +91,8 @@
#m4 _CONVERSION(`GstObject*',`const Glib::RefPtr<Gst::Object>&',`Glib::wrap($3, true)')
/** Signals that a new object has been deserialized.
*/
- //TODO: use xmlpp::Node* for signal:
- _WRAP_SIGNAL(void object_loaded(const Glib::RefPtr<Gst::Object>& object, xmlNode* xml_node), "object-loaded")
+ //TODO: use xmlpp::Node for second parameter?
+ _WRAP_SIGNAL(void object_loaded(const Glib::RefPtr<Gst::Object>& object, xmlNodePtr xml_node), "object-loaded")
};
} //namespace Gst
Modified: gstreamermm/trunk/tools/m4/convert_gst.m4
==============================================================================
--- gstreamermm/trunk/tools/m4/convert_gst.m4 (original)
+++ gstreamermm/trunk/tools/m4/convert_gst.m4 Mon Mar 23 23:50:48 2009
@@ -37,6 +37,7 @@
_CONVERSION(`GstObject*',`Glib::RefPtr<const Gst::Object>',`Glib::wrap($3)')
_CONVERSION(`const Glib::RefPtr<Gst::Object>&',`GstObject*',`Glib::unwrap($3)')
_CONVERSION(`Glib::RefPtr<Gst::Object>',`GstObject*',`Glib::unwrap($3)')
+_CONVERSION(`const Glib::RefPtr<const Gst::Object>&',`GstObject*',`const_cast<GstObject*>(($3)->gobj())')
#Buffer
_CONVERSION(`GstBuffer*',`Glib::RefPtr<Gst::Buffer>',`Gst::wrap($3)')
@@ -210,4 +211,5 @@
#libxml++ Conversions
_CONVERSION(`xmlpp::Node*',`xmlNodePtr',`($3)->cobj()')
+_CONVERSION(`xmlpp::Node*',`GstXmlNodePtr',`($3)->cobj()')
_CONVERSION(`xmlpp::Document*',`xmlDocPtr',`($3)->cobj()')
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]