Commit graph

64 commits

Author SHA1 Message Date
Stefan Kost
79b22cb2ed docs: use the same name for the argument in prototype and docs 2011-05-18 15:03:46 +03:00
Tim-Philipp Müller
da21881f28 miniobject: delay private data initialisation until actually needed
We only use the private instance data for weak references for now,
so can delay initialisation until actually needed (microoptimisation)
2011-05-17 11:38:30 +01:00
Tim-Philipp Müller
76ccd2a1e9 docs: fix up some Since markers and update for new multiqueue args 2011-05-14 14:05:52 +01:00
Sebastian Dröge
116972d6eb miniobject: Minor cleanup of last commit 2011-05-14 11:39:35 +02:00
José Alburquerque
cf671d7b0a miniobject: Add weak referencing functionality
API: gst_mini_object_weak_ref()
API: gst_mini_object_weak_unref()

Add weak referencing functionality to GstMiniObject, which
allows to get notifications when an mini object is destroyed
but doesn't increase the real refcount. This is mostly
useful for bindings.

Fixes bug #609473.
2011-05-14 11:39:35 +02:00
Thiago Santos
a750aac2dd miniobject: Fix dup_mini_object function to handle NULL gvalues
g_value_dup_object handles gvalues that contain NULL pointers,
gst_value_dup_mini_object should do the same.

https://bugzilla.gnome.org/show_bug.cgi?id=649195
2011-05-03 08:15:51 -03:00
Sebastian Dröge
bf6c3ea6df gst: Add some more gobject-introspection annotations 2011-04-14 16:14:01 +02:00
Tim-Philipp Müller
8a7fc1d8c9 Revert "micro-optim: if (x) is cheaper than if (x > 0) for unsigned integers"
This reverts commit 6aa8ca37ee.

See http://article.gmane.org/gmane.comp.video.gstreamer.devel/32282
2010-12-26 21:21:43 +00:00
Tim-Philipp Müller
0e3410c100 miniobject: add gobject-introspection annotation 2010-12-22 22:36:05 +00:00
Tim-Philipp Müller
3256c708be docs: gst: more gobject introspection annotations
Many of these are superfluous, added for clarity.
2010-12-07 18:37:04 +00:00
Edward Hervey
6aa8ca37ee micro-optim: if (x) is cheaper than if (x > 0) for unsigned integers 2010-12-03 12:03:42 +01:00
Tim-Philipp Müller
0dbb0f203e miniobject: avoid duplicate type check when freeing miniobject
gst_mini_object_unref() has guards that check the type already, so
we don't really need to re-check it here again while getting the
class (there's not really much point to that anyway, since we don't
check the return value of the get_class, so we'd crash anyway if
we're not dealing with a mini object, the only question would
be if there'd be a warning before the crash or not).
2010-10-11 19:55:52 +01:00
Edward Hervey
2c4afb966d miniobject: Directly increate mini_object in mini_object_free()
Speeds up mini_object_unref by 25% by avoiding the typecheck which
is avoidable here since it is only called on existing miniobjects.
2010-10-11 18:55:14 +02:00
Edward Hervey
89d3da6cba miniobject: Remove confusing DEBUG_REFCOUNT define
the debugging statements will be silenced automatically if debugging
is disabled, and the type check is actually required.
2010-10-11 18:41:14 +02:00
Shixin Zeng
d41997040b gst: make _get_type() in gst/* thread safe
This is not really necessary here because everything is
initialized from gst_init() already but using G_DEFINE_TYPE()
removes some copy&paste boilerplate code.
2010-08-06 19:35:59 +02:00
Tim-Philipp Müller
66fc4c8ba2 info: add new TRACE log level and move refcounting there from LOG level
This makes it possible to easily get a *:5 debug log without all
the refcounting noise, and drastically reduces the number of lines
output for a normal log (46m to 28m for a 20min video). The full log
including refcounting information can still be gotten using *:7.

Fixes #620460.
2010-06-05 12:53:15 +01:00
Wim Taymans
e1294397d7 miniobject: cleanup type registration a little
We can make some structs const static with little effort.
2010-05-18 18:37:25 +02:00
Edward Hervey
d60a3b8a59 gstreamer: remove unneeded casts
G_PARAM_SPEC_VALUE_TYPE does an expensive type check, whereas the
value_type field is a public field, so we can just use it directly.
2010-03-11 11:46:28 +01:00
Benjamin Otte
a9d1a493a7 Fixes for -Wwrite-strings
This changes some APIs in compatible ways:
- Some functions now take "const char *" arguments, not "char *"
- Some structs now have "conts char *" members, not "char *"
The changes may cause warnings when compiling with the right warning
flags. You've been warned.

Also adds -Wwrite-strings as a warning flag in configure.ac.

https://bugzilla.gnome.org/show_bug.cgi?id=611692
2010-03-10 20:50:10 +01:00
Sebastian Dröge
ed1247b561 miniobject: The GValue collection function can not assume that the destination is initialized
...and it will usually be either filled by zeroes or random values.

Fixes bug #607283.
2010-01-18 13:57:29 +01:00
Wim Taymans
bb780fdf73 miniobject: avoid unneeded casts 2009-12-24 17:22:46 +01:00
Stefan Kost
23da3639f0 docs: fix xrefs in docs
Fix typos in xrefs, links to non existing functions and rework plural forms.
2009-11-25 16:59:50 +02:00
Ole André Vadla Ravnås
73f2d464b7 miniobject: avoid race when recycling buffers
Avoid a race where a miniobject is recycled and quickly freed, which causes the
g_type_free_instance() to be called on the same object twice.

Ref the object before calling the finalize method and check if we still need to
free it afterward.

Also add a unit test for this case.

Fixes #601587
2009-11-13 11:45:48 +01:00
Stefan Kost
4ef0264e66 logging: log object type in message 2009-07-06 19:52:44 +01:00
Stefan Kost
3e21ddf81f logging: add a performace log category
This category can be used to log slow code path and help auditing the
performance. Add FIXME-0.11 to some questionable categories.
2009-06-29 11:28:01 +03:00
Edward Hervey
43dba6cefc miniobjects: Don't chain up to empty finalize method.
If ever we do anything in mini_object_finalize, we should make sure the 4
core miniobject finalize methods chain back up again.
2009-06-24 11:00:27 +02:00
Tim-Philipp Müller
aac27f1d5f gst/gstminiobject.c: Fix 'Since:' version in gst_value_dup_mini_object() docs blurb: this function was not in the uns...
Original commit message from CVS:
* gst/gstminiobject.c: (gst_value_get_mini_object):
Fix 'Since:' version in gst_value_dup_mini_object() docs blurb: this
function was not in the unscheduled 0.10.19 release.
2008-05-03 19:23:43 +00:00
Sebastian Dröge
7fe1bca96a API: Add GST_IS_PARAM_SPEC_MINI_OBJECT, GST_PARAM_SPEC_MINI_OBJECT
Original commit message from CVS:
* gst/gstminiobject.c: (gst_value_dup_mini_object),
(gst_param_spec_mini_object):
* gst/gstminiobject.h:
* win32/common/libgstreamer.def:
* docs/gst/gstreamer-sections.txt:
API: Add GST_IS_PARAM_SPEC_MINI_OBJECT, GST_PARAM_SPEC_MINI_OBJECT
GST_TYPE_PARAM_MINI_OBJECT and gst_value_dup_mini_object. Also move
GstParamSpecMiniObject into a public header for this.
This make GstMiniObject a bit more consistent with GObject and makes
it possible to extend the param specs.
gst_value_dup_mini_object is mainly useful for set_property methods.
Fixes bug #523798.
* tools/gst-inspect.c: (print_element_properties_info):
Print something useful for GstMiniObject properties and not just
"unknown type".
2008-03-22 14:51:17 +00:00
Edward Hervey
6148f05b6e gst/gstminiobject.c: Import gst_private.h before any other header that might include other glib headers. This fixes t...
Original commit message from CVS:
* gst/gstminiobject.c:
Import gst_private.h before any other header that might include other
glib headers. This fixes the build on windows using native compilers.
2008-03-03 18:14:33 +00:00
Sebastian Dröge
60526f8dd6 gst/gstminiobject.c: Add FIXME for 0.11 to make GstMiniObjectClass::copy() a bit more friendly to subclasses and not ...
Original commit message from CVS:
* gst/gstminiobject.c:
Add FIXME for 0.11 to make GstMiniObjectClass::copy() a bit more
friendly to subclasses and not require them to know all internals
of their parent class.
2008-02-19 05:49:32 +00:00
Wim Taymans
6f0a59aa13 gst/gstminiobject.c: When replacing a miniobject, do a quick equality check first so that we can avoid a ref/unref pair.
Original commit message from CVS:
* gst/gstminiobject.c: (gst_mini_object_replace):
When replacing a miniobject, do a quick equality check first so that we
can avoid a ref/unref pair.
2008-02-01 10:23:56 +00:00
Stefan Kost
ed2d23a5c5 gst/gstminiobject.c: Spelling fixes for the API docs.
Original commit message from CVS:
* gst/gstminiobject.c:
Spelling fixes for the API docs.
2008-01-14 13:18:37 +00:00
Sebastian Dröge
d8f8df9c49 gst/gstminiobject.c: Some cleanup and checking against invalid function parameters.
Original commit message from CVS:
* gst/gstminiobject.c: (gst_mini_object_get_type),
(gst_mini_object_class_init), (gst_mini_object_copy_default),
(gst_mini_object_finalize), (gst_mini_object_copy),
(gst_mini_object_is_writable), (gst_mini_object_make_writable),
(gst_mini_object_replace), (param_mini_object_validate),
(gst_param_spec_mini_object_get_type):
Some cleanup and checking against invalid function parameters.
2007-11-28 11:11:58 +00:00
Stefan Kost
d661fd332c gst/gstminiobject.c: Remove 3 do-nothing methods.
Original commit message from CVS:
* gst/gstminiobject.c: (gst_mini_object_get_type):
Remove 3 do-nothing methods.
2007-06-27 11:43:04 +00:00
Jan Schmidt
0a5e6e1132 gst/gst.c: Ignore EINTR when reading from the child registry pipe.
Original commit message from CVS:
* gst/gst.c: (ensure_current_registry_forking):
Ignore EINTR when reading from the child registry pipe.
Explicitly ignore the return value from close, since it makes no
difference.
* gst/gstminiobject.c: (gst_mini_object_ref),
(gst_mini_object_unref):
When debugging refcounts, check GST_IS_MINI_OBJECT and warn.
* gst/gstregistry.c: (_priv_gst_registry_remove_cache_plugins):
When removing cached plugins, remove their features too, so they're
not visible after they've disappeared.
* gst/gstutils.c: (prepare_link_maybe_ghosting):
In the unlikely case that we are linking pads with no parents, don't
crash trying to get the non-existent parent bin.
* gst/parse/grammar.y:
Output debug in the PIPELINE category
2006-12-09 18:48:57 +00:00
Thomas Vander Stichele
0d79923b07 gst/gstminiobject.c: update docs
Original commit message from CVS:
* gst/gstminiobject.c:
update docs
* plugins/elements/gstfdsrc.c: (gst_fd_src_set_property),
(gst_fd_src_create):
log recurring events at LOG level
add more debug for when the fd gets set
2006-07-24 07:40:13 +00:00
Wim Taymans
259eecdabc gst/: Use _CAST macros to avoid unneeded type checking.
Original commit message from CVS:
* gst/gst.c: (gst_debug_help):
* gst/gstplugin.c: (gst_plugin_finalize), (gst_plugin_list_free):
* gst/gstpluginfeature.c: (gst_plugin_feature_finalize),
(gst_plugin_feature_list_free):
* gst/gstregistry.c: (gst_registry_add_plugin),
(gst_registry_add_feature), (gst_registry_plugin_filter),
(gst_registry_feature_filter), (gst_registry_find_plugin),
(gst_registry_find_feature), (gst_registry_get_plugin_list),
(gst_registry_lookup_feature_locked), (gst_registry_lookup_locked):
* gst/gstregistryxml.c: (load_feature),
(gst_registry_xml_read_cache), (gst_registry_xml_write_cache):
* gst/gstminiobject.c: (gst_mini_object_unref),
(gst_mini_object_replace), (gst_value_mini_object_free),
(gst_value_mini_object_copy):
Use _CAST macros to avoid unneeded type checking.
Added some more G_UNLIKELY.
2006-06-12 09:17:44 +00:00
Wim Taymans
e37e5f4215 gst/: Add note about refcounting and miniobject/buffer writeability to docs. Fixes #340604
Original commit message from CVS:
* gst/gstbuffer.h:
* gst/gstminiobject.c:
Add note about refcounting and miniobject/buffer writeability
to docs. Fixes #340604
* gst/gstelementfactory.h:
Added some explanation about @klass.
2006-05-05 14:27:31 +00:00
Wim Taymans
520c15d134 gst/gstminiobject.c: Taking a NULL miniobject is valid, fix the case where we try to unref the NULL miniobject.
Original commit message from CVS:
* gst/gstminiobject.c: (gst_value_take_mini_object):
Taking a NULL miniobject is valid, fix the case where
we try to unref the NULL miniobject.
2006-04-28 13:10:07 +00:00
Edward Hervey
ac377b0cdc Series of fixes for dereferenced pointers that gcc 4.1 complains about.
Original commit message from CVS:
reviewed by: <delete if not using a buddy>
* gst/gstbin.c: (gst_bin_dispose), (gst_bin_provide_clock_func),
(gst_bin_handle_message_func):
* gst/gstclock.c: (gst_clock_dispose), (gst_clock_set_master):
* gst/gstelement.c: (gst_element_set_clock), (gst_element_dispose),
(gst_element_set_bus_func):
* gst/gstghostpad.c: (gst_proxy_pad_dispose):
* gst/gstminiobject.c: (gst_value_set_mini_object),
(gst_value_take_mini_object):
* gst/gstpad.c: (gst_pad_set_pad_template):
* gst/gstpipeline.c: (gst_pipeline_dispose),
(gst_pipeline_use_clock), (gst_pipeline_auto_clock):
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_pop),
(gst_collect_pads_chain):
* libs/gst/net/gstnettimeprovider.c:
(gst_net_time_provider_set_property):
Series of fixes for dereferenced pointers that gcc 4.1 complains about.
It's in fact all issues with gst_*object_replace().
2006-03-21 14:14:49 +00:00
Wim Taymans
a19398105c gst/gstbin.c: Help the compiler a bit with type registration.
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_get_type), (gst_bin_handle_message_func):
Help the compiler a bit with type registration.
Use existing forward cod path instead of duplicating it when
handling a message.

* gst/gstbus.c: (gst_bus_get_type):
* gst/gstcaps.c: (gst_caps_get_type), (gst_static_caps_get_type):
* gst/gstchildproxy.c: (gst_child_proxy_get_type):
* gst/gstclock.c: (gst_clock_get_type):
* gst/gstelement.c: (gst_element_get_type),
* gst/gstelementfactory.c: (gst_element_factory_get_type):
* gst/gstindexfactory.c: (gst_index_factory_get_type):
* gst/gstminiobject.c: (gst_mini_object_get_type):
* gst/gstpad.c: (gst_pad_get_type):
* gst/gstsegment.c: (gst_segment_get_type):
* gst/gststructure.c: (gst_structure_get_type):
* gst/gstsystemclock.c: (gst_system_clock_get_type):
* gst/gsttask.c: (gst_task_get_type), (gst_task_join):
* gst/gstvalue.c:
Help compiler with type registration.

* plugins/elements/gstqueue.c: (gst_queue_handle_sink_event):
Small doc update.
2006-02-28 10:52:02 +00:00
Jan Schmidt
06b99ec3ae gst/gstminiobject.c: Spelling fix in docs.
Original commit message from CVS:
* gst/gstminiobject.c:
Spelling fix in docs.
* ChangeLog - remove conflict indicator
2006-01-16 14:37:54 +00:00
Tim-Philipp Müller
8ea948df92 gst/gstminiobject.c: Fix lcopy for mini objects, the mini object needs to be ref'ed.
Original commit message from CVS:
* gst/gstminiobject.c: (gst_value_mini_object_lcopy):
Fix lcopy for mini objects, the mini object needs to be ref'ed.
* tests/check/gst/gstminiobject.c: (my_foo_init),
(my_foo_get_property), (my_foo_set_property), (my_foo_class_init),
(test_value_collection), (gst_mini_object_suite):
Add test to ensure refcounts end up as expected when passing
GstMiniObjects through g_object_get() and g_object_set().
2005-12-15 12:22:38 +00:00
Wim Taymans
d16ce65df7 gst/gstbuffer.c: Small docs update.
Original commit message from CVS:
* gst/gstbuffer.c:
Small docs update.

* gst/gstcaps.c: (gst_caps_is_equal):
Don't assert on NULL <--> X. Fixes #323260

* gst/gstminiobject.c: (gst_mini_object_replace):
If we're doing atomic operations, we might just as well use
the proper way to get an atomic pointer.

* libs/gst/base/gstbasesink.c: (gst_base_sink_get_position):
Clean up debugging.
2005-12-07 15:16:43 +00:00
Wim Taymans
a9f7f7b7b6 Doc fixes.
Original commit message from CVS:
Doc fixes.
2005-11-24 09:44:07 +00:00
Wim Taymans
93e4477d56 gst/gstbuffer.c: Copy more flags.
Original commit message from CVS:
* gst/gstbuffer.c: (_gst_buffer_copy):
Copy more flags.

* gst/gstcaps.c: (gst_caps_is_equal):
Fix some docs.
Make _is_equal fast in the trivial cases.

* gst/gstminiobject.c:
* gst/gstminiobject.h:
More docs. Spifify .h file.

* gst/gstutils.c:
Small doc update.
2005-11-11 18:25:50 +00:00
Wim Taymans
5bb924622f gst/: Avoid excessive typechecking in macros.
Original commit message from CVS:
* gst/base/gstbasesink.c: (gst_base_sink_preroll_queue_empty),
(gst_base_sink_do_sync), (gst_base_sink_handle_event),
(gst_base_sink_chain), (gst_base_sink_change_state):
* gst/base/gstbasesink.h:
* gst/base/gstbasesrc.h:
* gst/gstelement.h:
* gst/gstevent.h:
Avoid excessive typechecking in macros.

* gst/gstminiobject.c: (gst_mini_object_get_type),
(gst_mini_object_init), (gst_mini_object_new),
(gst_mini_object_free):
* gst/gstobject.c: (gst_object_class_init), (gst_object_init),
(gst_object_finalize):
Remove cruft code, optimize alloc_trace.
2005-11-08 11:13:07 +00:00
Stefan Kost
87df15ff58 doc fixes
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* gst/gstelement.c:
* gst/gstminiobject.c:
doc fixes
2005-11-03 19:38:48 +00:00
Stefan Kost
0572e3c3ae docs/gst/gstreamer-sections.txt: move some macros to private sections
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
move some macros to private sections
* gst/gstminiobject.c:
* gst/gstminiobject.h:
add descriptions provided by ds and some more
* gst/gstpad.h:
mark macro as to be removed
2005-10-28 16:46:58 +00:00
Thomas Vander Stichele
2dd1598c56 whitespace fixes
Original commit message from CVS:
whitespace fixes
2005-10-15 15:30:24 +00:00