platform/upstream/gstreamer.git
12 years agobufferpool: Reset the buffer before releasing into pool
Wim Taymans [Wed, 25 Apr 2012 07:06:05 +0000 (09:06 +0200)]
bufferpool: Reset the buffer before releasing into pool

Reset the buffer not after we acquire but before we release into the pool. This
makes sure that the pool only has buffers in a clean state and that we can set
extra metadata on buffers in the acquire method. this means that we need to
remove an argument from the method.

12 years agobuffer: MARKER is for the start of a talkspurt
Wim Taymans [Mon, 23 Apr 2012 13:32:04 +0000 (15:32 +0200)]
buffer: MARKER is for the start of a talkspurt

12 years agotests: plug some leaks
Mark Nauwelaerts [Tue, 24 Apr 2012 14:01:52 +0000 (16:01 +0200)]
tests: plug some leaks

12 years agocollectpads: do not unref flush_start twice
Mark Nauwelaerts [Mon, 23 Apr 2012 15:04:57 +0000 (17:04 +0200)]
collectpads: do not unref flush_start twice

Based on patch by Matej Knopp <matej.knopp@gmail.com>

12 years agoadapter: refresh skip following merge_up attempt
Mark Nauwelaerts [Mon, 23 Apr 2012 14:57:16 +0000 (16:57 +0200)]
adapter: refresh skip following merge_up attempt

... as the latter might now adjust skip as well.

12 years agomessage: Remove comma at end of enum list
Sebastian Dröge [Mon, 23 Apr 2012 07:18:48 +0000 (09:18 +0200)]
message: Remove comma at end of enum list

This comma confuses some compilers.

12 years agotee: Remove unneeded unlock
Руслан Ижбулатов [Wed, 18 Apr 2012 11:31:23 +0000 (15:31 +0400)]
tee: Remove unneeded unlock

12 years agoregistry: fix hardcoded 0.10 version in win32 pluginscanner
Руслан Ижбулатов [Wed, 18 Apr 2012 01:12:55 +0000 (05:12 +0400)]
registry: fix hardcoded 0.10 version in win32 pluginscanner

https://bugzilla.gnome.org/show_bug.cgi?id=674294

12 years agometa: add LOCKED flag
Wim Taymans [Tue, 17 Apr 2012 13:37:27 +0000 (15:37 +0200)]
meta: add LOCKED flag

Add a new LOCKED flag to the metadata. Refuse removing LOCKED metadata from
a buffer.
Mark the metadata from the bufferpool LOCKED.
Add unit test for LOCKED flag

12 years agocollectpads2: rename to collectpads
Mark Nauwelaerts [Tue, 17 Apr 2012 12:38:01 +0000 (14:38 +0200)]
collectpads2: rename to collectpads

12 years agoadapter: ensure writable head buffer before skipping part of it
Mark Nauwelaerts [Tue, 17 Apr 2012 10:54:45 +0000 (12:54 +0200)]
adapter: ensure writable head buffer before skipping part of it

12 years agoMerge remote-tracking branch 'origin/0.10'
Mark Nauwelaerts [Tue, 17 Apr 2012 10:29:50 +0000 (12:29 +0200)]
Merge remote-tracking branch 'origin/0.10'

Conflicts:
libs/gst/base/gstcollectpads2.c

12 years agocollectpads2: always recording incoming segment info if no buffer_func set
Mark Nauwelaerts [Tue, 17 Apr 2012 10:23:05 +0000 (12:23 +0200)]
collectpads2: always recording incoming segment info if no buffer_func set

12 years agodocs: update the debug and trace env var docs
Wim Taymans [Tue, 17 Apr 2012 08:38:05 +0000 (10:38 +0200)]
docs: update the debug and trace env var docs

12 years agotrace: use g_parse_debug_string instead of atoi
Wim Taymans [Tue, 17 Apr 2012 08:33:59 +0000 (10:33 +0200)]
trace: use g_parse_debug_string instead of atoi

Make the GST_TRACE env variable take a comma separated list of strings
describing the options to enable instead of a number.

12 years agogst-inspect: If running with --print-all, fix printing of the Children: line
Youness Alaoui [Mon, 16 Apr 2012 21:14:17 +0000 (21:14 +0000)]
gst-inspect: If running with --print-all, fix printing of the Children: line

12 years agogst-inspect: If running with --print-all, fix printing of signal names
Youness Alaoui [Mon, 16 Apr 2012 21:14:02 +0000 (21:14 +0000)]
gst-inspect: If running with --print-all, fix printing of signal names

12 years agowin32: add new collectpads2 API to .def file
Mark Nauwelaerts [Mon, 16 Apr 2012 14:36:52 +0000 (16:36 +0200)]
win32: add new collectpads2 API to .def file

12 years agoMerge remote-tracking branch 'origin/0.10'
Mark Nauwelaerts [Mon, 16 Apr 2012 14:29:34 +0000 (16:29 +0200)]
Merge remote-tracking branch 'origin/0.10'

Conflicts:
libs/gst/base/gstcollectpads2.c

12 years agocollectpads2: provide query default and callback handling
Mark Nauwelaerts [Mon, 16 Apr 2012 14:24:18 +0000 (16:24 +0200)]
collectpads2: provide query default and callback handling

... which presently mainly serves to answer SEEKING query negatively
to dissuade upstream encoders from doing any seeking and
"header finalization" (since the returned result of pushing a
sticky event is fairly useless nowadays).

12 years agocollectpads2: modify event handling using a default event handler
Mark Nauwelaerts [Mon, 16 Apr 2012 14:24:10 +0000 (16:24 +0200)]
collectpads2: modify event handling using a default event handler

... that elements should "chain up" to.

12 years agosegment: add rude serialization
Wim Taymans [Mon, 16 Apr 2012 13:35:23 +0000 (15:35 +0200)]
segment: add rude serialization

Ass serialize and deserialize functions for GstSegment so that gdp and
gst_structure_to_string show the segment values. We convert to a GstSegment
first to make things easier..

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=674100

12 years agocollectpads2: assume 0 based segment if no time segment was provided
Vincent Penquerc'h [Fri, 3 Feb 2012 17:08:35 +0000 (17:08 +0000)]
collectpads2: assume 0 based segment if no time segment was provided

https://bugzilla.gnome.org/show_bug.cgi?id=669305

12 years agomemory: add size to debug log
Wim Taymans [Mon, 16 Apr 2012 08:28:15 +0000 (10:28 +0200)]
memory: add size to debug log

12 years agoinputselector: Set sequence number on segment events
Sebastian Dröge [Mon, 16 Apr 2012 08:27:29 +0000 (10:27 +0200)]
inputselector: Set sequence number on segment events

12 years agoinputselector: Forward all sticky events when switching pads
Sebastian Dröge [Mon, 16 Apr 2012 08:22:53 +0000 (10:22 +0200)]
inputselector: Forward all sticky events when switching pads

12 years agotee: Store pad state directly inside the pads instead of GObject qdata
Sebastian Dröge [Mon, 16 Apr 2012 08:05:02 +0000 (10:05 +0200)]
tee: Store pad state directly inside the pads instead of GObject qdata

12 years agoinputselector: Send reconfigure event on the new active pad when pads are switched
Sebastian Dröge [Mon, 16 Apr 2012 07:45:27 +0000 (09:45 +0200)]
inputselector: Send reconfigure event on the new active pad when pads are switched

12 years agoAutomatic update of common submodule
Sebastian Dröge [Mon, 16 Apr 2012 07:08:46 +0000 (09:08 +0200)]
Automatic update of common submodule

From 6db25be to dc70203

12 years agoRemove skipped part of buffer when mapping the adapter
Matej Knopp [Sat, 14 Apr 2012 01:27:29 +0000 (03:27 +0200)]
Remove skipped part of buffer when mapping the adapter

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=674085

12 years agotests: add another adapter test
Wim Taymans [Sat, 14 Apr 2012 08:24:38 +0000 (10:24 +0200)]
tests: add another adapter test

Test performance of merging

12 years agobuffer: improve debug
Wim Taymans [Sat, 14 Apr 2012 08:23:49 +0000 (10:23 +0200)]
buffer: improve debug

12 years agomultiqueue: gst_single_queue_flush unlocks the queue twice
Matej Knopp [Fri, 13 Apr 2012 12:22:34 +0000 (14:22 +0200)]
multiqueue: gst_single_queue_flush unlocks the queue twice

https://bugzilla.gnome.org/show_bug.cgi?id=674044

12 years agoconfigure: Modernize autotools setup a bit
Sebastian Dröge [Fri, 13 Apr 2012 11:36:37 +0000 (13:36 +0200)]
configure: Modernize autotools setup a bit

Also we now only create tar.bz2 and tar.xz tarballs.

12 years agoAutomatic update of common submodule
Sebastian Dröge [Fri, 13 Apr 2012 11:36:47 +0000 (13:36 +0200)]
Automatic update of common submodule

From 464fe15 to 6db25be

12 years agobasesink: plug caps leak
Mark Nauwelaerts [Fri, 13 Apr 2012 09:58:49 +0000 (11:58 +0200)]
basesink: plug caps leak

12 years agocontrolbinding: only take a weak ref on the object
Stefan Sauer [Fri, 13 Apr 2012 06:10:19 +0000 (08:10 +0200)]
controlbinding: only take a weak ref on the object

Fixes the leaks in the tests. Added a TODO comment to eventually rework this
some more (while we can).

12 years agoSync Android.mk entries to the new major version
Reynaldo H. Verdejo Pinochet [Thu, 12 Apr 2012 22:15:27 +0000 (18:15 -0400)]
Sync Android.mk entries to the new major version

Change naming on the pkgconfig files to reflect
the 0.10 -> 1.0 bump.

12 years agocontroller: Chain up to parent class dispose/finalize
Edward Hervey [Thu, 12 Apr 2012 12:59:52 +0000 (14:59 +0200)]
controller: Chain up to parent class dispose/finalize

Avoids leaks

12 years agoconsistencychecker: Use gst_object_{ref|unref} where applicable
Edward Hervey [Thu, 12 Apr 2012 12:59:31 +0000 (14:59 +0200)]
consistencychecker: Use gst_object_{ref|unref} where applicable

Allows us to debug object life

12 years agogst: Use gst_object_{ref|unref} where applicable
Edward Hervey [Thu, 12 Apr 2012 12:58:47 +0000 (14:58 +0200)]
gst: Use gst_object_{ref|unref} where applicable

Allows us to debug object life

12 years agobuffer: improve arg checking
Wim Taymans [Thu, 12 Apr 2012 09:53:00 +0000 (11:53 +0200)]
buffer: improve arg checking

Allow idx == 0 and length == -1 on empty buffers for the _range methods.

12 years agoBack to development
Sebastian Dröge [Thu, 12 Apr 2012 09:18:22 +0000 (11:18 +0200)]
Back to development

12 years agoRelease 0.11.90 RELEASE-0.11.90
Sebastian Dröge [Thu, 12 Apr 2012 07:57:01 +0000 (09:57 +0200)]
Release 0.11.90

12 years agoUpdate .po files
Sebastian Dröge [Thu, 12 Apr 2012 07:56:43 +0000 (09:56 +0200)]
Update .po files

12 years agoqueue2: fix merge error
Wim Taymans [Wed, 11 Apr 2012 11:20:18 +0000 (13:20 +0200)]
queue2: fix merge error

12 years agoqueue2: set buffer to NULL before pull
Wim Taymans [Wed, 11 Apr 2012 10:58:19 +0000 (12:58 +0200)]
queue2: set buffer to NULL before pull

12 years agotests: port queue2 tests to 0.11
Wim Taymans [Wed, 11 Apr 2012 10:54:36 +0000 (12:54 +0200)]
tests: port queue2 tests to 0.11

12 years agoMerge remote-tracking branch 'origin/0.10'
Wim Taymans [Wed, 11 Apr 2012 10:50:50 +0000 (12:50 +0200)]
Merge remote-tracking branch 'origin/0.10'

Conflicts:
gst/gsttoc.c
plugins/elements/gstqueue2.c

12 years agoqueue2: signal delete before waiting
Wim Taymans [Wed, 11 Apr 2012 10:34:55 +0000 (12:34 +0200)]
queue2: signal delete before waiting

When we don't have the requested data in the ringbuffer and we move our read
pointer to the requested position, signal the delete cond to inform the writer
that we changed the current fill level. If we don't, the writer might stay
blocked and we might wait forever.

12 years agoqueue2: add test for ringbuffer deadlock
Wim Taymans [Wed, 11 Apr 2012 10:15:37 +0000 (12:15 +0200)]
queue2: add test for ringbuffer deadlock

12 years agoqueue2: update current read position before waiting
Wim Taymans [Wed, 11 Apr 2012 10:02:50 +0000 (12:02 +0200)]
queue2: update current read position before waiting

When we don't have enough bytes in the ringbuffer to satisfy the current
request, first update the current read position before waiting. If we don't do
that, the ringbuffer might appear full and the writer will never write more
bytes to wake us up.

12 years agoqueue2: add range only on sinkpad
Wim Taymans [Wed, 11 Apr 2012 10:00:10 +0000 (12:00 +0200)]
queue2: add range only on sinkpad

Only add the range when we receive a segment event on the sinkpad. The add_range
method will modify the write position, which only makes sense to do on the
sinkpad.

12 years agoqueue2: fix debug message
Wim Taymans [Wed, 11 Apr 2012 09:55:56 +0000 (11:55 +0200)]
queue2: fix debug message

We're not writing to the offset of the buffer

12 years agoqueue2: add_range already updates the level
Wim Taymans [Wed, 11 Apr 2012 09:55:28 +0000 (11:55 +0200)]
queue2: add_range already updates the level

12 years agotoc: fix memory leaks while copying content
Alexander Saprykin [Tue, 10 Apr 2012 10:11:26 +0000 (14:11 +0400)]
toc: fix memory leaks while copying content

12 years agotocsetter: fix memory leaks in unit test
Alexander Saprykin [Tue, 10 Apr 2012 10:18:48 +0000 (14:18 +0400)]
tocsetter: fix memory leaks in unit test

12 years agotoc: fix memory leaks in unit test
Alexander Saprykin [Tue, 10 Apr 2012 10:16:50 +0000 (14:16 +0400)]
toc: fix memory leaks in unit test

12 years agotocsetter: fix memory leaks in unit test
Alexander Saprykin [Tue, 10 Apr 2012 10:18:48 +0000 (14:18 +0400)]
tocsetter: fix memory leaks in unit test

12 years agotoc: fix memory leaks in unit test
Alexander Saprykin [Tue, 10 Apr 2012 10:16:50 +0000 (14:16 +0400)]
toc: fix memory leaks in unit test

12 years agotoc: fix memory leaks while copying content
Alexander Saprykin [Tue, 10 Apr 2012 10:11:26 +0000 (14:11 +0400)]
toc: fix memory leaks while copying content

12 years agobuffer: Clean up header files
Sreerenj Balachandran [Tue, 10 Apr 2012 16:39:58 +0000 (19:39 +0300)]
buffer: Clean up header files

12 years agoMerge remote-tracking branch 'origin/0.10'
Wim Taymans [Tue, 10 Apr 2012 14:07:52 +0000 (16:07 +0200)]
Merge remote-tracking branch 'origin/0.10'

12 years agoqueue2: clear seeking flag in all cases
Wim Taymans [Tue, 10 Apr 2012 14:04:54 +0000 (16:04 +0200)]
queue2: clear seeking flag in all cases

Also clear the seeking flag when downstream is in pull mode.

12 years agoMerge remote-tracking branch 'origin/0.10'
Wim Taymans [Tue, 10 Apr 2012 10:55:31 +0000 (12:55 +0200)]
Merge remote-tracking branch 'origin/0.10'

Conflicts:
gst/gst.c
plugins/elements/gstqueue2.c

12 years agogst: add toc entry ref/unref
Wim Taymans [Tue, 10 Apr 2012 10:49:04 +0000 (12:49 +0200)]
gst: add toc entry ref/unref

12 years agoqueue2: set seeking flag with the queue lock
Wim Taymans [Tue, 10 Apr 2012 10:09:53 +0000 (12:09 +0200)]
queue2: set seeking flag with the queue lock

12 years agoqueue2: Keep track of the seeking state
Wim Taymans [Tue, 10 Apr 2012 09:20:09 +0000 (11:20 +0200)]
queue2: Keep track of the seeking state

Set the seeking flag right before we send a seek event upstream and discard all
data untill we see a flush-stop again. We need to do this because we activate
the range that we seek to immediately after sending the seek event and it is
possible that we receive data in our chain function from before the seek
which would then be added to the wrong range resulting in data corruption.

12 years agoqueue2: make range on newsegment for ringbuffer
Wim Taymans [Tue, 10 Apr 2012 09:16:14 +0000 (11:16 +0200)]
queue2: make range on newsegment for ringbuffer

When using the ringbuffer, handle the newsegment event like we handle it when
using the temp-file mode: create a new range for the new byte segment. The new
segment should normally already be created when we do a seek.

12 years agoMerge remote-tracking branch 'origin/0.10'
Sebastian Dröge [Mon, 9 Apr 2012 14:42:30 +0000 (16:42 +0200)]
Merge remote-tracking branch 'origin/0.10'

12 years agomultiqueue: Don't use buffer after pushing it downstream
Sebastian Dröge [Mon, 9 Apr 2012 14:40:47 +0000 (16:40 +0200)]
multiqueue: Don't use buffer after pushing it downstream

12 years agoMerge remote-tracking branch 'origin/0.10'
Sebastian Dröge [Mon, 9 Apr 2012 14:04:22 +0000 (16:04 +0200)]
Merge remote-tracking branch 'origin/0.10'

12 years agoelement: Fail if a pad for a non-request template is requested
Sebastian Dröge [Mon, 9 Apr 2012 13:58:21 +0000 (15:58 +0200)]
element: Fail if a pad for a non-request template is requested

12 years agoelement: use quarks when storing standard metadata in structures
Tim-Philipp Müller [Mon, 9 Apr 2012 12:40:35 +0000 (13:40 +0100)]
element: use quarks when storing standard metadata in structures

12 years agoplugins: use new gst_element_class_set_static_metadata()
Tim-Philipp Müller [Mon, 9 Apr 2012 12:05:07 +0000 (13:05 +0100)]
plugins: use new gst_element_class_set_static_metadata()

12 years agoelement: add gst_element_class_{set,add}_static_metadata()
Tim-Philipp Müller [Mon, 9 Apr 2012 11:47:58 +0000 (12:47 +0100)]
element: add gst_element_class_{set,add}_static_metadata()

Add gst_element_class_{add,set}_metadata() variants for static strings,
so we can avoid unnecessary g_strdup()s.

API: gst_element_class_add_static_metadata()
API: gst_element_class_set_static_metadata()

12 years agotask: remove gst_task_set_priority()
Tim-Philipp Müller [Sun, 8 Apr 2012 20:17:14 +0000 (21:17 +0100)]
task: remove gst_task_set_priority()

It doesn't actually do anything.

12 years agowin32: add VS 10 Project files
Matej Knopp [Sat, 14 Jan 2012 05:31:32 +0000 (00:31 -0500)]
win32: add VS 10 Project files

https://bugzilla.gnome.org/show_bug.cgi?id=666219

12 years agowin32: update for version changes
Tim-Philipp Müller [Sun, 8 Apr 2012 17:25:39 +0000 (18:25 +0100)]
win32: update for version changes

12 years agoMerge remote-tracking branch 'origin/0.10'
Tim-Philipp Müller [Sat, 7 Apr 2012 15:35:27 +0000 (16:35 +0100)]
Merge remote-tracking branch 'origin/0.10'

12 years agowin32: add new TOC API to libgstreamer.def
Tim-Philipp Müller [Sat, 7 Apr 2012 15:06:22 +0000 (16:06 +0100)]
win32: add new TOC API to libgstreamer.def

Fixes 'make check'.

12 years agotests: add new toc test binaries to .gitignore
Tim-Philipp Müller [Sat, 7 Apr 2012 15:05:33 +0000 (16:05 +0100)]
tests: add new toc test binaries to .gitignore

12 years agogst: don't export private TOC functions
Tim-Philipp Müller [Sat, 7 Apr 2012 15:04:14 +0000 (16:04 +0100)]
gst: don't export private TOC functions

12 years agoMerge remote-tracking branch 'origin/0.10'
Tim-Philipp Müller [Sat, 7 Apr 2012 14:42:08 +0000 (15:42 +0100)]
Merge remote-tracking branch 'origin/0.10'

Conflicts:
gst/gstatomicqueue.c

12 years agoatomicqueue: fix race
Wim Taymans [Fri, 24 Feb 2012 14:24:42 +0000 (15:24 +0100)]
atomicqueue: fix race

After a writer has written to its reserved write location, it can only make the
location available for reading if all of the writers with lower locations have
finished.

12 years agoatomicqueue: fix subtle race
Wim Taymans [Fri, 24 Feb 2012 11:51:24 +0000 (12:51 +0100)]
atomicqueue: fix subtle race

Fix a race where the reader would see the updated the tail pointer before the
write could write the data into the queue. Fix this by having a separate reader
tail pointer that is only incremented after the writer wrote the data.

12 years agofilesrc: set default block size from local define
Tim-Philipp Müller [Sat, 7 Apr 2012 14:20:05 +0000 (15:20 +0100)]
filesrc: set default block size from local define

Doesn't actually change the default value, just makes use of the
define there is. Superficial testing with fakesink and jpegdec did
not reveal improved performance for bigger block sizes, so leave
default as it is.

12 years agoqueue2: don't update the current reading_pos in flush
Wim Taymans [Fri, 6 Apr 2012 14:46:58 +0000 (16:46 +0200)]
queue2: don't update the current reading_pos in flush

A flush from the upstream element should not make buffering go to 0, the next
pull request might be inside a range that we have and then we don't need to
buffer at all. If the next pull is outside anything we have, buffering will
happen as usual anyway.

12 years agoqueue2: fix for merged changes
Wim Taymans [Fri, 6 Apr 2012 10:42:39 +0000 (12:42 +0200)]
queue2: fix for merged changes

12 years agoMerge branch '0.10'
Wim Taymans [Fri, 6 Apr 2012 10:37:41 +0000 (12:37 +0200)]
Merge branch '0.10'

12 years agoqueue2: check the pad mode on the right pad
Wim Taymans [Fri, 6 Apr 2012 10:32:49 +0000 (12:32 +0200)]
queue2: check the pad mode on the right pad

12 years agoqueue2: forward flush events correctly
Wim Taymans [Fri, 6 Apr 2012 10:24:22 +0000 (12:24 +0200)]
queue2: forward flush events correctly

We want to forward the flush events received on the sinkpad whenever the srcpad
is activated in pushmode, which can also happen when using the RINGBUFFER or
DOWNLOAD mode and downstream failed to activate us in pull mode.

12 years agocontrolbinding: chain up on dispose and finalize
Stefan Sauer [Thu, 5 Apr 2012 19:56:05 +0000 (21:56 +0200)]
controlbinding: chain up on dispose and finalize

12 years agogstobject: unparent the controlbinding on dispose
Stefan Sauer [Thu, 5 Apr 2012 19:55:07 +0000 (21:55 +0200)]
gstobject: unparent the controlbinding on dispose

12 years agocontroller: dup the objects to avoid premature frees
Stefan Sauer [Thu, 5 Apr 2012 19:07:55 +0000 (21:07 +0200)]
controller: dup the objects to avoid premature frees

12 years agocontroller: add a finalizer for the test controlbindings
Stefan Sauer [Thu, 5 Apr 2012 19:06:14 +0000 (21:06 +0200)]
controller: add a finalizer for the test controlbindings

No idea why valgrind still inists that there are leaks.

12 years agoAutomatic update of common submodule
Sebastian Dröge [Thu, 5 Apr 2012 16:42:30 +0000 (18:42 +0200)]
Automatic update of common submodule

From 7fda524 to 464fe15

12 years agogst: Change name parameter of GST_PLUGIN_DEFINE() to not take a string anymore
Sebastian Dröge [Thu, 5 Apr 2012 12:17:16 +0000 (14:17 +0200)]
gst: Change name parameter of GST_PLUGIN_DEFINE() to not take a string anymore

This will be needed when we later add support for static linking
of plugins without introducing new API or changing existing API.

12 years agogstplugin: Add hack for handling 0.11.9X and 0.11.89.X with X>0 the same as 1.0.0
Sebastian Dröge [Thu, 5 Apr 2012 11:23:00 +0000 (13:23 +0200)]
gstplugin: Add hack for handling 0.11.9X and 0.11.89.X with X>0 the same as 1.0.0

Also update the version number to 0.11.89.1

12 years agotocsetter: clear mutex upon free
Mark Nauwelaerts [Thu, 5 Apr 2012 10:22:11 +0000 (12:22 +0200)]
tocsetter: clear mutex upon free